Change #239782
Category | ffmpeg |
Changed by | Lynne <dev | @lynne.ee>
Changed at | Tue 15 Jul 2025 09:27:31 |
Repository | https://git.ffmpeg.org/ffmpeg.git |
Project | ffmpeg |
Branch | master |
Revision | bedfb6eca402037f5cbb115fa767d106b8c14f1c |
Comments
aacenc_tns: clamp filter direction energy measurement The issue is that: float en[2]; ... tns->n_filt[w] = is8 ? 1 : order != TNS_MAX_ORDER ? 2 : 3; for (g = 0; g < tns->n_filt[w]; g++) { tns->direction[w][g] = slant != 2 ? slant : en[g] < en[!g]; When using the AAC Main profile, n_filt = 3, and slant is by default 2 (normal long frames), g can go above 1. en is the evolution of energy in the frequency domain for every band at the given window. E.g. whether the energy is concentrated at the top of each band, or the bottom. For 2-pole filters, its straightforward. For 3-pole filters, we need more than 2 measurements. This commit properly implements support for 3-pole filters, by measuring the band energy across three areas. Do note that even xHE-AAC caps n_filt to 2, and only AAC Main allows n_filt == 3. Fixes https://trac.ffmpeg.org/ticket/11418
Changed files
- libavcodec/aacenc_tns.c