[FFmpeg-devel] [PATCH] adpcm: convert VLAs to malloc/free

Måns Rullgård mans
Sun Jun 27 11:44:30 CEST 2010


Loren Merritt <lorenm at u.washington.edu> writes:

> On Sat, 26 Jun 2010, M?ns Rullg?rd wrote:
>
>> static void adpcm_compress_trellis(AVCodecContext *avctx, const short *samples,
>>                                    uint8_t *dst, ADPCMChannelStatus *c, int n)
>> {
>>-#define FREEZE_INTERVAL 128
>>     //FIXME 6% faster if frontier is a compile-time constant
>>+    ADPCMContext *s = avctx->priv_data;
>>     const int frontier = 1 << avctx->trellis;
>>     const int stride = avctx->channels;
>>     const int version = avctx->codec->id;
>>-    const int max_paths = frontier*FREEZE_INTERVAL;
>>-    TrellisPath paths[max_paths], *p;
>>-    TrellisNode node_buf[2][frontier];
>>-    TrellisNode *nodep_buf[2][frontier];
>>-    TrellisNode **nodes = nodep_buf[0]; // nodes[] is always sorted by .ssd
>>-    TrellisNode **nodes_next = nodep_buf[1];
>>+    TrellisPath *paths = s->paths, *p;
>>+    TrellisNode *node_buf = s->node_buf;
>>+    TrellisNode **nodep_buf = s->nodep_buf;
>>+    TrellisNode **nodes = nodep_buf; // nodes[] is always sorted by .ssd
>>+    TrellisNode **nodes_next = nodep_buf + frontier;
>>     int pathn = 0, froze = -1, i, j, k;
>>
>>     assert(!(max_paths&(max_paths-1)));
>
> max_paths no longer exists

Oops, missed that (useless) assert.  Fixed.

> Other than that, ok. I don't have any better ideas.

Applied.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list