summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2011-09-06 22:22:53 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-10-28 15:24:35 +0200
commit7b6ae0e8490be299ba366099d8fa26b6639251c1 (patch)
treeb82c9a0bee20b0391375ad0f1c682a4c1629da41
parent8d4e44993a87a9b230c5c87cf892dd58adcebcc4 (diff)
dca: allow the channel count to change.
(cherry picked from commit 42e78d2296752293cd08c5727f76c3b37c68fb24) Review-by: Benjamin Larsson Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/dca.c15
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 *