mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
ac3dec: move channel remapping to outside of block loop
Originally committed as revision 18749 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
a3015225c7
commit
13ec942869
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user