dca: allow the channel count to change.

(cherry picked from commit 42e78d2296752293cd08c5727f76c3b37c68fb24)

Review-by: Benjamin Larsson
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Hendrik Leppkes 2011-09-06 22:22:53 +02:00 committed by Michael Niedermayer
parent 8d4e44993a
commit 7b6ae0e849

View File

@ -1816,20 +1816,9 @@ static int dca_decode_frame(AVCodecContext * avctx,
return -1;
}
/* There is nothing that prevents a dts frame to change channel configuration
but FFmpeg doesn't support that so only set the channels if it is previously
unset. Ideally during the first probe for channels the crc should be checked
and only set avctx->channels when the crc is ok. Right now the decoder could
set the channels based on a broken first frame.*/
if (s->is_channels_set == 0) {
s->is_channels_set = 1;
avctx->channels = channels;
}
if (avctx->channels != channels) {
av_log(avctx, AV_LOG_ERROR, "DCA decoder does not support number of "
"channels changing in stream. Skipping frame.\n");
return -1;
av_log(avctx, AV_LOG_INFO, "Number of channels changed in DCA decoder (%d -> %d)\n", avctx->channels, channels);
avctx->channels = channels;
}
out_size = 256 / 8 * s->sample_blocks * channels *