# HG changeset patch # User jbr # Date 1241566692 0 # Node ID 93029f1a4c14413cc036c33737f71fe8c0b46591 # Parent b8357dc014b0391654e6cd66cc8484cbb3a11737 ac3dec: move channel remapping to outside of block loop diff -r b8357dc014b0 -r 93029f1a4c14 ac3dec.c --- a/ac3dec.c Tue May 05 19:53:49 2009 +0000 +++ b/ac3dec.c Tue May 05 23:38:12 2009 +0000 @@ -1235,6 +1235,7 @@ int16_t *out_samples = (int16_t *)data; int blk, ch, err; const uint8_t *channel_map; + const float *output[AC3_MAX_CHANNELS]; /* initialize the GetBitContext with the start of valid AC-3 Frame */ if (s->input_buffer) { @@ -1326,14 +1327,13 @@ /* decode the audio blocks */ channel_map = ff_ac3_dec_channel_map[s->output_mode & ~AC3_OUTPUT_LFEON][s->lfe_on]; + for (ch = 0; ch < s->out_channels; ch++) + output[ch] = s->output[channel_map[ch]]; for (blk = 0; blk < s->num_blocks; blk++) { - const float *output[s->out_channels]; if (!err && decode_audio_block(s, blk)) { av_log(avctx, AV_LOG_ERROR, "error decoding the audio block\n"); err = 1; } - for (ch = 0; ch < s->out_channels; ch++) - output[ch] = s->output[channel_map[ch]]; s->dsp.float_to_int16_interleave(out_samples, output, 256, s->out_channels); out_samples += 256 * s->out_channels; }