-
Notifications
You must be signed in to change notification settings - Fork 72
Expand file tree
/
Copy pathChangeLog
More file actions
306 lines (254 loc) · 11.4 KB
/
Copy pathChangeLog
File metadata and controls
306 lines (254 loc) · 11.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
2.0 (Jul 20, 2026)
[ Fabian Greffrath ]
* Remove obsolete pkg-config template
* Restrict LTO to the shared library only
[ Orbis Security AI ]
* filtbank: Fix an out-of-bounds `memcpy` in `FilterBank()` that used
`FRAME_LEN` instead of `BLOCK_LEN_LONG` for the overlap buffer copies
[ Nils Schimmelmann ]
* 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.
1.50 (Apr 16, 2026)
[ Fabian Greffrath ]
* Build quantize_sse library with hidden symbols
* Don't call `exit()` from the library
* Define some more `default_options` in Meson build
* Fix some warnings in `frontend/maingui.c`
* Default to `buildtype=release` in Meson build
* Initialize `data` variable in `huffcode()`
* Remove the faulty `HAVE_STRCASECMP` check and other pointless header checks
* CI: Let Meson build set `CFLAGS`
[ Nils Schimmelmann ]
* Disallow PNS in MPEG-2 mode to match spec
* frontend: Change default to MPEG-4 as MPEG-2 is obsolete
* Add `max-channels` option to change `MAX_CHANNELS` from 64
* Fix PNS to stay on in `JOINT_MS` for low-bitrate accuracy
* Replace redundant `cpe`, `sce`, and `lfe` boolean flags in `ChannelInfo` with an `enum`
* Reduce `MAX_CHANNELS` to 8 for ADTS compliance
* tns: Prevent division-by-zero or instability on highly correlated signals
* Implement MOS-optimized bandwidth calculation
* Fine-tune rate controller to restore bitrate accuracy
* Fix channel-specific group metadata in joint-stereo
* Enable link-time optimization (LTO) in Meson build
* stereo: Fix undefined behaviour in intensity stereo for degenerate bands
* Fix scalefactor delta overflows to comply with AAC spec (ISO 14496-3)
* quantize: Pre-clamp scalefactor deltas to fix encoder/decoder mismatch
1.40 (Mar 17, 2026)
[ tatsuz ]
* Fix compilation with Visual Studio
[ enWILLYado ]
* Fix SIMD calls
[ David Fort ]
* Add meson as build system
[ KokonoeTooru ]
* Meson: Install faac executable
[ Fabian Greffrath ]
* CI: fix artifact path
* Remove autoconf/automake build system
* Remove plugins stuff, unmaintained for decades
* Remove MSVC projects, deprecated in favour of meson
* Do not check for unused headers
* Generalize OS check in CI rule
* Remove redundant defines
* Make `faacgui` usable again
* Report library version on version mismatch
* Maintain library SONAME version 0.0.0
* Build both static and shared library by default
* Properly declare symbol visibility as hidden
[ Nils Schimmelmann ]
* Add options to disable DRM and opt for single floating-point precision
* CI: add native MSVC build and fix Windows compatibility
* Remove dead code
* Optimize FFT reordering by combining real and imaginary passes
* Optimize FFT performance
* CI: update GitHub Actions and add Dependabot configuration
* Refactor quantizer for portable C and extensible SIMD dispatch
* Optimize memory allocation and unify MDCT implementation
* Optimize MDCT by removing conditional branches and hoisting logic
* Rrefactor the hot path for writing bits to the output stream
* Remove Digital Radio Mondiale (DRM) support
1.31.1 (Mar 03, 2025)
[ Fabian Greffrath ]
* Reduce autoconf requirement back down to 2.69
* Reformat configure.ac for the ac2ver.exe hack to work
* Upload Windows artifacts
1.31 (Feb 28, 2025)
[ Tatsuya Suzuki ]
* updated Visual Studio projects to VS 2019
* main.c : progress report keeps alignment when encoding a large file
* project/msvc : cleanup, fixes and changes
[ Christopher Degawa ]
* frontend: fix out-of-root build
[ Fabian Greffrath ]
* add a pkg-config file
* avoid division by zero
* Remove #pragma pack from faacEncStruct (thanks Locutus of Borg)
* Reduce memory (thanks xnvi)
+ Remove `BwpInfo bwpInfo` from `struct CoderInfo`
+ Remove `nextSampleBuff[]` and `next2SampleBuff[]` from `struct faacEncStruct`
* tns: Initialize `rArray[]` variable
* update autoconf.ac and friends
* do not pass add-stdcall-alias option to clang
* always build both the regular and the DRM library
* fix cppcheck warnings
* add some basic CI
* fix compilation with clang on Windows
* Append INSTALL to README
[ Steve Fosdick ]
* Add album artist and various sort order MP4 tags
[ Aaron Boxer ]
* set libfaac library name to "faac" rather than "libfaac"
[ Frank ]
* Error C2065 (add #define _USE_MATH_DEFINES)
[ pine3ree ]
* Allow genre-id up to 255
1.30 (Oct 16, 2019)
[ Robert Kausch ]
* Fix Joint Stereo coding
[ Krzysztof Nikiel ]
* Code cleanup and compilation fixes
* Fix endianness conversion functions
[ Takashi Yoshi ]
* Fix compilation with GCC < 4.6
* Fix compilation on big endian systems
[ Fabian Greffrath ]
* Fix division by zero errors
* Fix compilation with GCC <= 4.7.3
* Change pointer type for proper arithmetics
* Fix logic error in compiler detection
* Revert back to some more generic SSE2 code
* Fix a memory leak
* Fix some cppcheck warnings in the Cfaac code
* Check index ranges before dereferencing book arrays (CVE-2018-19886)
* Clean up stdint.h header inclusions
* Consistently use stdint.h types
[ Michael Fink ]
* Update Visual Studio 2017 projects
* Add stdint.h header inclusions
* Port over ac2ver tool from faad2 to generate PACKAGE_VERSION
when compiling with Visual Studio
[ Eugène Filin ]
* Memory allocations redefined
1.29.9.2 (Nov 14, 2017)
* fixed max MP4 bitrate calculation
1.29.9 (Nov 2, 2017)
* initial version of PNS coding
* Intensity Stereo coding
* more speed improvements
* finer bandwidth/cutoff setting (doesn't work with PNS)
* fixed more bugs
* rewritten mid/side coding
* fixed bug in blockswitch
1.29.8 (Oct 15, 2017)
* changed default mode to ABR 64kbps/channel
* implemented short windows grouping
* new huffman coder
* SSE quantizer
* modified functioning of ABR mode (-b option)
* improved autotools support
* allowed even higher bitrates, including ADTS
* framebuffer size bug fixed
* removed broken object types: Main and LTP
* some mp4 atoms fixed for better compalibility
* stdin seek bug fixed
1.29.7 (Aug 22, 2017)
* quantizer tweaked to better support high bitrates
* allow higher quality for mp4 files (-q 5000 max)
* removed mid frequency boost (it turned out useless)
* cutoff frequency adjusted to fully utilize upper band
* --help-long option removed, it was just an alias for -H
* -b option bug fixed
1.29.6 (Aug 18, 2017)
- quality related bug fixed
1.29.5 (Aug 17, 2017)
- updated manpage
- check if output file exists; --overwrite option added
- help/usage options reorganized
- block switching is now tuned to match quality/bitrate
- give more quality to lower frequancies (less to highs)
- quantizer updated again
1.29.4 (Aug 14, 2017)
- rewritten quantizer: faster, diffrerent quality, different bitrates
- ftyp atom: set brands like itunes does, shoud be more compatible
with picky tools
- new option(--tag) to add named tags (iTunes '----')
- faster and better short/long window type switch
- Don't build DRM(Digital Radio Mondiale) by default.
Use ./configure --enable-drm to build DRM version.
- fixed bugs
* rounding in QuantizeReflectionCoeffs (tns.c)
* use +60 value for scalefactor.
* use clipped diff instead of original value (huffman.c)
1.29.3 (Jul 21, 2017)
- MP4 tag options improved
- fixed MP4 'meta' atom bug
- new option to set verbosity (-v0 to silence output)
1.29.2 (Jul 17, 2017)
- new mp4 output code
1.29 (Jul 4, 2017)
- various patches applied and bugs fixed
1.28 (Feb 5, 2009)
* Prevent out of range scalefactors
* Updated to latest mpeg4ip mp4 file format library
* Added -s option to make the encoder output optimized mp4 layout
* Improved JPEG detection for album art
* Lot's of compilation issues solved