[FFmpeg-cvslog] aac: Fix TNS decoding for the 512 sample window family.

Alex Converse git at videolan.org
Sun Jan 5 02:11:09 CET 2014


ffmpeg | branch: master | Alex Converse <alex.converse at gmail.com> | Mon Dec 23 22:20:42 2013 -0800| [b2212dec0f011893ec68eecaa990170fa24050d7] | committer: Alex Converse

aac: Fix TNS decoding for the 512 sample window family.

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

 libavcodec/aacdec.c |    3 ++-
 libavcodec/aactab.c |    4 ++++
 libavcodec/aactab.h |    1 +
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index 426a652..4ed8f8f 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -1178,13 +1178,14 @@ static int decode_ics_info(AACContext *ac, IndividualChannelStream *ics,
         if (aot == AOT_ER_AAC_LD || aot == AOT_ER_AAC_ELD) {
             ics->swb_offset        =     ff_swb_offset_512[ac->oc[1].m4ac.sampling_index];
             ics->num_swb           =    ff_aac_num_swb_512[ac->oc[1].m4ac.sampling_index];
+            ics->tns_max_bands     =  ff_tns_max_bands_512[ac->oc[1].m4ac.sampling_index];
             if (!ics->num_swb || !ics->swb_offset)
                 return AVERROR_BUG;
         } else {
             ics->swb_offset        =    ff_swb_offset_1024[ac->oc[1].m4ac.sampling_index];
             ics->num_swb           =   ff_aac_num_swb_1024[ac->oc[1].m4ac.sampling_index];
+            ics->tns_max_bands     = ff_tns_max_bands_1024[ac->oc[1].m4ac.sampling_index];
         }
-        ics->tns_max_bands         = ff_tns_max_bands_1024[ac->oc[1].m4ac.sampling_index];
         if (aot != AOT_ER_AAC_ELD) {
             ics->predictor_present     = get_bits1(gb);
             ics->predictor_reset_group = 0;
diff --git a/libavcodec/aactab.c b/libavcodec/aactab.c
index 77cbc2d..46aa10a 100644
--- a/libavcodec/aactab.c
+++ b/libavcodec/aactab.c
@@ -1237,6 +1237,10 @@ const uint8_t ff_tns_max_bands_1024[] = {
     31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
 };
 
+const uint8_t ff_tns_max_bands_512[] = {
+    0, 0, 0, 31, 32, 37, 31, 31, 0, 0, 0, 0, 0
+};
+
 const uint8_t ff_tns_max_bands_128[] = {
     9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
 };
diff --git a/libavcodec/aactab.h b/libavcodec/aactab.h
index a2dc46b..adf2e2c 100644
--- a/libavcodec/aactab.h
+++ b/libavcodec/aactab.h
@@ -76,6 +76,7 @@ extern const uint16_t * const ff_swb_offset_512 [13];
 extern const uint16_t * const ff_swb_offset_128 [13];
 
 extern const uint8_t ff_tns_max_bands_1024[13];
+extern const uint8_t ff_tns_max_bands_512 [13];
 extern const uint8_t ff_tns_max_bands_128 [13];
 
 #endif /* AVCODEC_AACTAB_H */



More information about the ffmpeg-cvslog mailing list