diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2011-09-06 22:22:53 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-10-28 15:24:35 +0200 |
commit | 7b6ae0e8490be299ba366099d8fa26b6639251c1 (patch) | |
tree | b82c9a0bee20b0391375ad0f1c682a4c1629da41 /libavcodec | |
parent | 8d4e44993a87a9b230c5c87cf892dd58adcebcc4 (diff) | |
download | ffmpeg-7b6ae0e8490be299ba366099d8fa26b6639251c1.tar.gz |
dca: allow the channel count to change.
(cherry picked from commit 42e78d2296752293cd08c5727f76c3b37c68fb24)
Review-by: Benjamin Larsson
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/dca.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/libavcodec/dca.c b/libavcodec/dca.c index cdd91612f1..cfef9dda65 100644 --- a/libavcodec/dca.c +++ b/libavcodec/dca.c @@ -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 * |