[FFmpeg-cvslog] r18749 - trunk/libavcodec/ac3dec.c
jbr
subversion
Wed May 6 01:38:12 CEST 2009
Author: jbr
Date: Wed May 6 01:38:12 2009
New Revision: 18749
Log:
ac3dec: move channel remapping to outside of block loop
Modified:
trunk/libavcodec/ac3dec.c
Modified: trunk/libavcodec/ac3dec.c
==============================================================================
--- trunk/libavcodec/ac3dec.c Wed May 6 00:10:06 2009 (r18748)
+++ trunk/libavcodec/ac3dec.c Wed May 6 01:38:12 2009 (r18749)
@@ -1235,6 +1235,7 @@ static int ac3_decode_frame(AVCodecConte
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(AVCodecConte
/* 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;
}
More information about the ffmpeg-cvslog
mailing list