[FFmpeg-cvslog] avcodec/aacdec: fix parsing streams with channel configuration 11

James Almer git at videolan.org
Fri Nov 4 14:15:02 EET 2022


ffmpeg | branch: release/5.1 | James Almer <jamrial at gmail.com> | Wed Oct 26 20:11:04 2022 -0300| [fe2d8f1872ac40d3046c6d104d73c5244e251703] | committer: James Almer

avcodec/aacdec: fix parsing streams with channel configuration 11

Set the correct amount of tags in tags_per_config[].
Also, there are no channels that correspond to a side element in this
configuration, so reflect this in the list of known/supported channel layouts.

Signed-off-by: James Almer <jamrial at gmail.com>
(cherry picked from commit 8c7d3b43cc1e41de62733eb90dda7e061778f390)

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

 libavcodec/aacdec_template.c | 4 +---
 libavcodec/aacdectab.h       | 6 +++---
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c
index 10fba3d3b2..7e02f8f8a8 100644
--- a/libavcodec/aacdec_template.c
+++ b/libavcodec/aacdec_template.c
@@ -730,9 +730,7 @@ static ChannelElement *get_che(AACContext *ac, int type, int elem_id)
             return ac->tag_che_map[TYPE_CPE][elem_id] = ac->che[TYPE_CPE][2];
         }
     case 11:
-        if (ac->tags_mapped == 2 &&
-            ac->oc[1].m4ac.chan_config == 11 &&
-            type == TYPE_SCE) {
+        if (ac->tags_mapped == 3 && type == TYPE_SCE) {
             ac->tags_mapped++;
             return ac->tag_che_map[TYPE_SCE][elem_id] = ac->che[TYPE_SCE][1];
         }
diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h
index e03026806d..01fd18cd23 100644
--- a/libavcodec/aacdectab.h
+++ b/libavcodec/aacdectab.h
@@ -35,7 +35,7 @@
 
 #include <stdint.h>
 
-static const int8_t tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 4, 5, 16, 5, 0 };
+static const int8_t tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 5, 5, 16, 5, 0 };
 
 static const uint8_t aac_channel_layout_map[16][16][3] = {
     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, },
@@ -84,7 +84,7 @@ static const uint64_t aac_channel_layout[16] = {
     0,
     0,
     0,
-    AV_CH_LAYOUT_6POINT1,
+    AV_CH_LAYOUT_6POINT1_BACK,
     AV_CH_LAYOUT_7POINT1,
     AV_CH_LAYOUT_22POINT2,
     0,
@@ -103,7 +103,7 @@ static const AVChannelLayout aac_ch_layout[16] = {
     { 0 },
     { 0 },
     { 0 },
-    AV_CHANNEL_LAYOUT_6POINT1,
+    AV_CHANNEL_LAYOUT_6POINT1_BACK,
     AV_CHANNEL_LAYOUT_7POINT1,
     AV_CHANNEL_LAYOUT_22POINT2,
     { 0 },



More information about the ffmpeg-cvslog mailing list