OSDN Git Service

aac: Fix TNS decoding for the 512 sample window family.
authorAlex Converse <alex.converse@gmail.com>
Tue, 24 Dec 2013 06:20:42 +0000 (22:20 -0800)
committerAlex Converse <alex.converse@gmail.com>
Sat, 4 Jan 2014 22:42:38 +0000 (14:42 -0800)
libavcodec/aacdec.c
libavcodec/aactab.c
libavcodec/aactab.h

index 426a652..4ed8f8f 100644 (file)
@@ -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;
index 77cbc2d..46aa10a 100644 (file)
@@ -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
 };
index a2dc46b..adf2e2c 100644 (file)
@@ -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 */