dca: allow the channel count to change.

(cherry picked from commit 42e78d2296752293cd08c5727f76c3b37c68fb24)

Review-by: Benjamin Larsson
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/2/head
Hendrik Leppkes 14 years ago committed by Michael Niedermayer
parent 8d4e44993a
commit 7b6ae0e849
  1. 15
      libavcodec/dca.c

@ -1816,20 +1816,9 @@ static int dca_decode_frame(AVCodecContext * avctx,
return -1; 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) { if (avctx->channels != channels) {
av_log(avctx, AV_LOG_ERROR, "DCA decoder does not support number of " av_log(avctx, AV_LOG_INFO, "Number of channels changed in DCA decoder (%d -> %d)\n", avctx->channels, channels);
"channels changing in stream. Skipping frame.\n"); avctx->channels = channels;
return -1;
} }
out_size = 256 / 8 * s->sample_blocks * channels * out_size = 256 / 8 * s->sample_blocks * channels *

Loading…
Cancel
Save