[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