]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/aac_ac3_parser.c
do not display par and dar if not available
[ffmpeg] / libavcodec / aac_ac3_parser.c
index fc6249ede454907cd94f63d90a567ed047576774..999a189158fd052c98de4ede89a0b49e24ac30f1 100644 (file)
@@ -60,11 +60,13 @@ int ff_aac_ac3_parse(AVCodecParserContext *s1,
                     s->frame_size = len;
                     /* update codec info */
                     avctx->sample_rate = sample_rate;
-                    /* set channels,except if the user explicitly requests 1 or 2 channels, XXX/FIXME this is a bit ugly */
-                    if(avctx->codec_id == CODEC_ID_AC3){
-                        if(avctx->channels!=1 && avctx->channels!=2){
-                            avctx->channels = channels;
-                        }
+                    /* allow downmixing to stereo (or mono for AC3) */
+                    if(avctx->request_channels > 0 &&
+                            avctx->request_channels < channels &&
+                            (avctx->request_channels <= 2 ||
+                            (avctx->request_channels == 1 &&
+                            avctx->codec_id == CODEC_ID_AC3))) {
+                        avctx->channels = avctx->request_channels;
                     } else {
                         avctx->channels = channels;
                     }