aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/libopencore-amr.c
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2024-05-14 19:07:43 +0200
committerLynne <dev@lynne.ee>2024-06-02 18:34:43 +0200
commit39b8d84b53f108005890fe170d00adcfe39ce773 (patch)
tree6beeafdfc23e7e208decfb5ec7a056120600d72d /libavcodec/libopencore-amr.c
parentcaeb27509245e87dd0dc6a0677fdeedab3406a97 (diff)
downloadffmpeg-39b8d84b53f108005890fe170d00adcfe39ce773.tar.gz
aacdec: move from scalefactor ranged arrays to flat arrays
AAC uses an unconventional system to send scalefactors (the volume+quantization value for each band). Each window is split into either 1 or 8 blocks (long vs short), and transformed separately from one another, with the coefficients for each being also completely independent. The scalefactors slightly increase from 64 (long) to 128 (short) to accomodate better per-block-per-band volume for each window. To reduce overhead, the codec signals scalefactor sizes in an obtuse way, where each group's scalefactor types are sent via a variable length decoding, with a range. But our decoder was written in a way where those ranges were carried through the entire decoder, and to actually read them you had to use the range. Instead of having a dedicated array with a range for each scalefactor, just let the decoder directly index each scalefactor. This also switches the form of quantized scalefactors to the format the spec uses, where for intensity stereo and regular, scalefactors are stored in a scalefactor - 100 form, rather than as-is. USAC gets rid of the complex scalefactor handling. This commit permits for code sharing between both.
Diffstat (limited to 'libavcodec/libopencore-amr.c')
0 files changed, 0 insertions, 0 deletions