Re: [BLFS Trac] #23626: faac-2.0

BLFS Trac ([email protected] via blfs-book Mailing List) <[email protected]> Wed, 22 Jul 2026 23:37:01 -0000
Newsgroups gmane.linux.lfs.beyond.book
Message-ID <[email protected]>
#23626: faac-2.0
-------------------------+--------------------------
 Reporter:  Bruce Dubbs  |       Owner:  Bruce Dubbs
     Type:  enhancement  |      Status:  assigned
 Priority:  normal       |   Milestone:  13.1
Component:  BOOK         |     Version:  git
 Severity:  normal       |  Resolution:
 Keywords:               |
-------------------------+--------------------------
Comment (by Bruce Dubbs):

 FAAC 2.0

 - Harden input parsing and guard against allocation failures.
 - Replace the classic faacEnc* C API with a new faac_* API in
   faac.h: parameters supplied once to faac_encoder_open(), uniform
   faac_status error reporting, resolved-property queries, and
   library-owned AudioSpecificConfig. The legacy faacEnc* surface and
   faaccfg.h are removed; the encoder core they exposed is now internal.
   SONAME bumped to 1 (libfaac.so.1). faac.h now defines
   FAAC_VERSION_MAJOR/MINOR/PATCH, tracking the SONAME, so callers
   can detect the new API at compile time (FAAC_VERSION_MAJOR >= 1).
 - frontend: Port faac and the Win32 GUI to the new API; this fixes the
   AudioSpecificConfig memory leak on the MP4 output path.
 - Add HE-AAC v1 (AAC-LC core + Spectral Band Replication) encoding via
   FAAC_OBJ_HE_AAC_V1, or FAAC_OBJ_AUTO, which picks LC or HE-AAC from
   the bitrate. The SBR core runs dual-rate (half-rate core, 2048-sample
   frame); faac_encoder_get_info() reports the full output rate and frame
   size so callers need no SBR-specific handling.
   CLI: --object-type lc|he-aac-v1|auto.
 - stereo: Add Mixed Mode joint stereo (--joint 3) as the new default:
   per scale-factor band, picks IS above 5.5 kHz, M/S where channels are
   correlated, or L/R otherwise. Fix a midside band-silencing bug that
   produced L=R=0 on decode, guard against negative rounding before
   sqrt, and keep IS available at low sample rates.
 - quantize: Restore short-window masking penalty, floor masking
   targets in quiet bands, drop stale tonal scaling in bmask, and keep
   global_gain a valid regular scalefactor -- fixing energy drops,
   quiet-band artifacts, and a decoder out-of-range error.
 - tns: Cap TNS filter order to 12 to fix AAC-LC decoder rejections and
   audio dropouts in FFmpeg/FAAD.
 - Retire the never-implemented MAIN/SSR/LTP object types across
   filtbank, frame, and the frontend, and collapse the single-model
   psychoacoustic vtable into direct calls.
 - Fix a lookahead regression that had truncated the encoder's
   lookahead to an effective 1-frame delay, causing pre-echo artifacts
   and broken stereo coherence; then simplify the lookahead into a
   unified per-channel FIFO and energy timeline, replacing the ad hoc
   sampleBuff/next*SampleBuff/overlapBuff/prevSamples buffers.
 - Relicense: rewrite stereo, quantize, channels, bitstream, filtbank,
   tns, huffdata, huff2, and the MP4 output code as original work under
   LGPL-2.1-or-later, and drop the matching MPEG reference-code preamble
   from README.md, --license, and docs/. Every source file is now free
   software. Update the license header itself from GNU Library GPL to
   Lesser GPL wording.
 - fft: Replace the radix-2 FFT with radix-4 decimation-in-frequency as
   the sole implementation and precompute MDCT twiddles, for ~18%
   faster encode versus the radix-2 baseline.
 - Standardize libfaac on single-precision floating point: drop the
   floating-point Meson build option and faac_real.h, and use
   float/sinf/cosf/sqrtf directly throughout the per-sample hot
   path. One-time init-time table generators (FFT/MDCT/SBR twiddles,
   window shapes, quantizer limits) keep double precision, where it's
   free. Benchmarked MOS-neutral versus the prior double-precision path.
 - blockswitch: Move short-window detection to the time domain.
 - Performance passes: reuse a shared work buffer for filtbank's MDCT
   scratch, and optimize TNS and stereo IS-gate hot paths.
 - frame: Buffer encoder input so any input chunk size works.
 - bitstream: Stop embedding the libfaac version string.
 - build: Fix compiler warnings and transition to C11.
 - frontend: Add a --creation-time flag for configurable MP4
   timestamps, vendor mingw-w64 wingetopt as a minimal-diff getopt
   fallback for MSVC builds, and keep TNS off by default in the GUI to
   match the CLI.
 - Remove obsolete pkg-config template
 - Restrict LTO to the shared library only
 - filtbank: Fix an out-of-bounds memcpy in FilterBank() that used
   FRAME_LEN instead of BLOCK_LEN_LONG for the overlap buffer copies
-- 
Ticket URL: <https://wiki.linuxfromscratch.org/blfs/ticket/23626#comment:2>
BLFS Trac <https://wiki.linuxfromscratch.org/blfs/>
Beyond Linux From Scratch

-- 
http://lists.linuxfromscratch.org/sympa/info/blfs-book
Unsubscribe: See the above information page