[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