aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2022-10-26 20:11:04 -0300
committerJames Almer <jamrial@gmail.com>2022-11-03 19:35:20 -0300
commit8c7d3b43cc1e41de62733eb90dda7e061778f390 (patch)
tree18cfd468b91c6c76d4e141d1edb8b5832ebbc815
parente27bef9a56991b6c74e1a38b3035d53dffdc9cf1 (diff)
downloadffmpeg-8c7d3b43cc1e41de62733eb90dda7e061778f390.tar.gz
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@gmail.com>
-rw-r--r--libavcodec/aacdec_template.c4
-rw-r--r--libavcodec/aacdectab.h6
2 files changed, 4 insertions, 6 deletions
diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c
index 4a9513d53e..c10bc743b6 100644
--- a/libavcodec/aacdec_template.c
+++ b/libavcodec/aacdec_template.c
@@ -731,9 +731,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 e38b93a534..327efbcde0 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 }, },
@@ -81,7 +81,7 @@ static const uint64_t aac_channel_layout[] = {
AV_CH_LAYOUT_5POINT0_BACK,
AV_CH_LAYOUT_5POINT1_BACK,
AV_CH_LAYOUT_7POINT1_WIDE_BACK,
- AV_CH_LAYOUT_6POINT1,
+ AV_CH_LAYOUT_6POINT1_BACK,
AV_CH_LAYOUT_7POINT1,
AV_CH_LAYOUT_22POINT2,
0,
@@ -97,7 +97,7 @@ static const AVChannelLayout aac_ch_layout[] = {
AV_CHANNEL_LAYOUT_5POINT0_BACK,
AV_CHANNEL_LAYOUT_5POINT1_BACK,
AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK,
- AV_CHANNEL_LAYOUT_6POINT1,
+ AV_CHANNEL_LAYOUT_6POINT1_BACK,
AV_CHANNEL_LAYOUT_7POINT1,
AV_CHANNEL_LAYOUT_22POINT2,
{ 0 },