diff --git a/libavcodec/ac3enc_template.c b/libavcodec/ac3enc_template.c index 49fc6d7f37..049666fdca 100644 --- a/libavcodec/ac3enc_template.c +++ b/libavcodec/ac3enc_template.c @@ -31,6 +31,7 @@ #include #include "libavutil/attributes.h" +#include "libavutil/avassert.h" #include "libavutil/mem_internal.h" #include "audiodsp.h" @@ -50,14 +51,15 @@ */ static void apply_mdct(AC3EncodeContext *s, uint8_t * const *samples) { - int blk, ch; + av_assert1(s->num_blocks > 0); - for (ch = 0; ch < s->channels; ch++) { + for (int ch = 0; ch < s->channels; ch++) { const SampleType *input_samples0 = (const SampleType*)s->planar_samples[ch]; /* Reorder channels from native order to AC-3 order. */ const SampleType *input_samples1 = (const SampleType*)samples[s->channel_map[ch]]; + int blk = 0; - for (blk = 0; blk < s->num_blocks; blk++) { + do { AC3Block *block = &s->blocks[blk]; SampleType *windowed_samples = s->RENAME(windowed_samples); @@ -71,7 +73,8 @@ static void apply_mdct(AC3EncodeContext *s, uint8_t * const *samples) windowed_samples, sizeof(*windowed_samples)); input_samples0 = input_samples1; input_samples1 += AC3_BLOCK_SIZE; - } + } while (++blk < s->num_blocks); + /* Store last 256 samples of current frame */ memcpy(s->planar_samples[ch], input_samples0, AC3_BLOCK_SIZE * sizeof(*input_samples0));