[FFmpeg-cvslog] aacdec: Unify preconfigured layout and PCE layout.

Alex Converse git at videolan.org
Sat Feb 11 01:35:34 CET 2012


ffmpeg | branch: master | Alex Converse <alex.converse at gmail.com> | Wed Feb  8 10:10:34 2012 -0800| [7b05025856706ccc5da2e43f4f05c319907b3b16] | committer: Alex Converse

aacdec: Unify preconfigured layout and PCE layout.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7b05025856706ccc5da2e43f4f05c319907b3b16
---

 libavcodec/aacdec.c |   57 ++++++++++++++------------------------------------
 1 files changed, 16 insertions(+), 41 deletions(-)

diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index b3bbc4b..1100a61 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -409,56 +409,31 @@ static av_cold int output_configure(AACContext *ac,
 {
     AVCodecContext *avctx = ac->avctx;
     int i, channels = 0, ret;
+    uint64_t layout = 0;
 
     if (ac->layout_map != layout_map) {
         memcpy(ac->layout_map, layout_map, tags * sizeof(layout_map[0]));
         ac->layout_map_tags = tags;
     }
 
-    if (channel_config) {
-        if (avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE)
-            sniff_channel_order(layout_map, tags);
-        for (i = 0; i < tags_per_config[channel_config]; i++) {
-            int type    = layout_map[i][0];
-            int id      = layout_map[i][1];
-            int position = layout_map[i][2];
-            if ((ret = che_configure(ac, position,
-                                     type, id,
-                                     &channels)))
-                return ret;
-        }
-
-        memset(ac->tag_che_map, 0, 4 * MAX_ELEM_ID * sizeof(ac->che[0][0]));
-
-        avctx->channel_layout = aac_channel_layout[channel_config - 1];
-    } else {
-        /* Allocate or free elements depending on if they are in the
-         * current program configuration.
-         *
-         * Try to sniff a reasonable channel order, otherwise output the
-         * channels in the order the PCE declared them.
-         */
-
-        uint64_t layout = 0;
-        if (avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE)
-            layout = sniff_channel_order(layout_map, tags);
-        for (i = 0; i < tags; i++) {
-            int type =     layout_map[i][0];
-            int id =       layout_map[i][1];
-            int position = layout_map[i][2];
-            if ((ret = che_configure(ac, position,
-                                     type, id,
-                                     &channels)))
-                return ret;
-        }
-
-        memcpy(ac->tag_che_map, ac->che, 4 * MAX_ELEM_ID * sizeof(ac->che[0][0]));
-
-        avctx->channel_layout = layout;
+    // Try to sniff a reasonable channel order, otherwise output the
+    // channels in the order the PCE declared them.
+    if (avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE)
+        layout = sniff_channel_order(layout_map, tags);
+    for (i = 0; i < tags; i++) {
+        int type =     layout_map[i][0];
+        int id =       layout_map[i][1];
+        int position = layout_map[i][2];
+        // Allocate or free elements depending on if they are in the
+        // current program configuration.
+        ret = che_configure(ac, position, type, id, &channels);
+        if (ret < 0)
+            return ret;
     }
 
+    memcpy(ac->tag_che_map, ac->che, 4 * MAX_ELEM_ID * sizeof(ac->che[0][0]));
+    avctx->channel_layout = layout;
     avctx->channels = channels;
-
     ac->output_configured = oc_type;
 
     return 0;



More information about the ffmpeg-cvslog mailing list