Mercurial > libavcodec.hg
changeset 9605:93029f1a4c14 libavcodec
ac3dec: move channel remapping to outside of block loop
author | jbr |
---|---|
date | Tue, 05 May 2009 23:38:12 +0000 |
parents | b8357dc014b0 |
children | 31090f08314e |
files | ac3dec.c |
diffstat | 1 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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; }