diff options
author | Alex Converse <alex.converse@gmail.com> | 2013-12-23 22:20:42 -0800 |
---|---|---|
committer | Alex Converse <alex.converse@gmail.com> | 2014-01-04 14:42:38 -0800 |
commit | b2212dec0f011893ec68eecaa990170fa24050d7 (patch) | |
tree | ad80a3da37a70b7a7a4a09c00d5986728bd785b4 /libavcodec | |
parent | e2096e2eaa9e75663d6bf0c37d342752aa5a146d (diff) | |
download | ffmpeg-b2212dec0f011893ec68eecaa990170fa24050d7.tar.gz |
aac: Fix TNS decoding for the 512 sample window family.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/aacdec.c | 3 | ||||
-rw-r--r-- | libavcodec/aactab.c | 4 | ||||
-rw-r--r-- | libavcodec/aactab.h | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index 426a652a4c..4ed8f8f0ae 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 77cbc2d460..46aa10a70e 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 a2dc46b814..adf2e2c2b8 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 */ |