mbox series

[FFmpeg-devel,v3,00/10] aacdec: add a native xHE-AAC decoder

Message ID 20240525022813.2292001-1-dev@lynne.ee
Headers show
Series aacdec: add a native xHE-AAC decoder | expand

Message

Lynne May 25, 2024, 2:27 a.m. UTC
This commit adds a decoder for the frequency-domain part of USAC.
SBR is as of now not yet supported, will be added with a future
patch.

A known issue is that preroll frames (usually present quite often
within the file, as xHE-AAC has real keyframes and I-frames) can
cause artifacts.

Lynne (10):
  channel_layout: add new channel positions supported by xHE-AAC
  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)
  fate: add tests for xHE-AAC

 libavcodec/aac/Makefile              |    3 +-
 libavcodec/aac/aacdec.c              |  371 +++---
 libavcodec/aac/aacdec.h              |  219 +++-
 libavcodec/aac/aacdec_ac.c           |  208 ++++
 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          |  198 ++++
 libavcodec/aac/aacdec_lpd.h          |   33 +
 libavcodec/aac/aacdec_usac.c         | 1592 ++++++++++++++++++++++++++
 libavcodec/aac/aacdec_usac.h         |   37 +
 libavcodec/aactab.c                  |  560 +++++++++
 libavcodec/aactab.h                  |   22 +
 libavcodec/sinewin_fixed_tablegen.c  |    2 +
 libavcodec/sinewin_fixed_tablegen.h  |    4 +
 libavutil/channel_layout.h           |    4 +
 tests/fate/aac.mak                   |    8 +
 19 files changed, 3262 insertions(+), 235 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