From 8e3d33db6d09e898673de5ae7b7e4be4b504264c Mon Sep 17 00:00:00 2001 From: jbr Date: Tue, 5 May 2009 23:38:12 +0000 Subject: [PATCH] ac3dec: move channel remapping to outside of block loop git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18749 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b --- libavcodec/ac3dec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index c142ca9bb2..56dfd8f986 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -1235,6 +1235,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size, 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 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size, /* 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; } -- 2.11.4.GIT