]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/aac_ac3_parser.c
hevc: eliminate an unneeded intermediate variable
[ffmpeg] / libavcodec / aac_ac3_parser.c
index fc51612fe57bf0e5a078e56e3c3d4107e65e2f84..d3da9b7696442ed32b8f8fe8562baeabcfbb08c3 100644 (file)
@@ -20,6 +20,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavutil/channel_layout.h"
+#include "libavutil/common.h"
 #include "parser.h"
 #include "aac_ac3_parser.h"
 
@@ -81,14 +83,23 @@ get_next:
     if (avctx->codec_id != AV_CODEC_ID_AAC) {
         avctx->sample_rate = s->sample_rate;
 
-        /* allow downmixing to stereo (or mono for AC-3) */
-        if(avctx->request_channels > 0 &&
-                avctx->request_channels < s->channels &&
-                (avctx->request_channels <= 2 ||
-                (avctx->request_channels == 1 &&
-                (avctx->codec_id == AV_CODEC_ID_AC3 ||
-                 avctx->codec_id == AV_CODEC_ID_EAC3)))) {
-            avctx->channels = avctx->request_channels;
+        /* (E-)AC-3: allow downmixing to stereo or mono */
+#if FF_API_REQUEST_CHANNELS
+FF_DISABLE_DEPRECATION_WARNINGS
+        if (avctx->request_channels == 1)
+            avctx->request_channel_layout = AV_CH_LAYOUT_MONO;
+        else if (avctx->request_channels == 2)
+            avctx->request_channel_layout = AV_CH_LAYOUT_STEREO;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+        if (s->channels > 1 &&
+            avctx->request_channel_layout == AV_CH_LAYOUT_MONO) {
+            avctx->channels       = 1;
+            avctx->channel_layout = AV_CH_LAYOUT_MONO;
+        } else if (s->channels > 2 &&
+                   avctx->request_channel_layout == AV_CH_LAYOUT_STEREO) {
+            avctx->channels       = 2;
+            avctx->channel_layout = AV_CH_LAYOUT_STEREO;
         } else {
             avctx->channels = s->channels;
             avctx->channel_layout = s->channel_layout;