diff options
author | Andreas Öman <andreas@lonelycoder.com> | 2007-12-15 07:01:33 +0000 |
---|---|---|
committer | Andreas Öman <andreas@lonelycoder.com> | 2007-12-15 07:01:33 +0000 |
commit | 79328e9cc7bcfb59091acfc144b5566dd0357675 (patch) | |
tree | d56c52d05b2d9534b86255b1ade62e28b53b9184 /libavcodec/dca.c | |
parent | 6708eefe558eb8c307c5bca00083bf4c406dd600 (diff) | |
download | ffmpeg-streaming-79328e9cc7bcfb59091acfc144b5566dd0357675.zip ffmpeg-streaming-79328e9cc7bcfb59091acfc144b5566dd0357675.tar.gz |
Make DCA decoder honor avctx->request_channels in a more advisory way.
Originally committed as revision 11221 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/dca.c')
-rw-r--r-- | libavcodec/dca.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/libavcodec/dca.c b/libavcodec/dca.c index c237cc9..13eb865 100644 --- a/libavcodec/dca.c +++ b/libavcodec/dca.c @@ -1159,23 +1159,12 @@ static int dca_decode_frame(AVCodecContext * avctx, avctx->bit_rate = s->bit_rate; channels = s->prim_channels + !!s->lfe; - avctx->channels = avctx->request_channels; - if(avctx->channels == 0) { - avctx->channels = channels; - } else if(channels < avctx->channels) { - av_log(avctx, AV_LOG_WARNING, "DTS source channels are less than " - "specified: output to %d channels.\n", channels); - avctx->channels = channels; - } - if(avctx->channels == 2) { + if(avctx->request_channels == 2 && s->prim_channels > 2) { + channels = 2; s->output = DCA_STEREO; - } else if(avctx->channels != channels) { - av_log(avctx, AV_LOG_ERROR, "Cannot downmix DTS to %d channels.\n", - avctx->channels); - return -1; } - channels = avctx->channels; + avctx->channels = channels; if(*data_size < (s->sample_blocks / 8) * 256 * sizeof(int16_t) * channels) return -1; *data_size = 0; |