[FFmpeg-devel] [PATCH 0/8] aacdec: add a native xHE-AAC decoder
Lynne
dev at lynne.ee
Thu May 16 13:08:10 EEST 2024
This commit adds a decoder for the frequency-domain part of USAC.
What works:
- Mono
- Stereo (no prediction)
- Stereo (mid/side coding)
What doesn't:
- Preroll decoding (every single decoder seems faulty or weird?)
- Complex stereo prediction
Known issues:
- Spec incompliance due to the spec being flat-out wrong in 11 cases.
- Spec compliance due to the spec being woefully underspecified.
- Lack of robustness
- A single memory leak in packet fragmentation.
I've reached out to the spec authors to get a conformation.
I'm reasonably happy with the way I integrated it to send it
off for review ahead of spec issue clarification.
Lynne (8):
aacdec: move from scalefactor ranged arrays to flat arrays
aacdec: expose channel layout related functions
aacdec: expose decode_tns
aacdec_dsp: implement 768-point transform and windowing
aactab: add deemphasis tables for USAC
aactab: add tables for the new USAC arithmetic coder
aactab: add new scalefactor offset tables for 96/768pt windows
aacdec: add a decoder for AAC USAC (xHE-AAC)
libavcodec/aac/Makefile | 3 +-
libavcodec/aac/aacdec.c | 364 ++++----
libavcodec/aac/aacdec.h | 211 ++++-
libavcodec/aac/aacdec_ac.c | 224 +++++
libavcodec/aac/aacdec_ac.h | 54 ++
libavcodec/aac/aacdec_dsp_template.c | 162 ++--
libavcodec/aac/aacdec_fixed.c | 2 +
libavcodec/aac/aacdec_float.c | 4 +
libavcodec/aac/aacdec_latm.h | 14 +-
libavcodec/aac/aacdec_lpd.c | 192 ++++
libavcodec/aac/aacdec_lpd.h | 33 +
libavcodec/aac/aacdec_usac.c | 1230 ++++++++++++++++++++++++++
libavcodec/aac/aacdec_usac.h | 47 +
libavcodec/aactab.c | 523 +++++++++++
libavcodec/aactab.h | 15 +
libavcodec/sinewin_fixed_tablegen.c | 2 +
libavcodec/sinewin_fixed_tablegen.h | 4 +
17 files changed, 2850 insertions(+), 234 deletions(-)
create mode 100644 libavcodec/aac/aacdec_ac.c
create mode 100644 libavcodec/aac/aacdec_ac.h
create mode 100644 libavcodec/aac/aacdec_lpd.c
create mode 100644 libavcodec/aac/aacdec_lpd.h
create mode 100644 libavcodec/aac/aacdec_usac.c
create mode 100644 libavcodec/aac/aacdec_usac.h
--
2.43.0.381.gb435a96ce8
More information about the ffmpeg-devel
mailing list