summaryrefslogtreecommitdiffstats
path: root/libAACenc/src
Commit message (Collapse)AuthorAgeFilesLines
* Avoid too big changes in isScaleMartin Storsjo2013-03-181-0/+9
| | | | | | | | | | These values are delta encoded, but only steps [-60,60] are possible to encode. If the difference between two values are bigger than that, we end up with a sequence we are unable to encode. This fixes crashes on certain stereo samples at higher bitrates.
* Don't try to shift more bits than the variable lengthMartin Storsjo2013-02-171-2/+8
| | | | | | | | | | | | | | | | Shifting by more than (or equal to) the variable length is undefined in C. This caused the quantized spectrum values to remain unshifted, causing loud beeps in some samples. The exact same change was originally applied in 657456949 (for AOSP) and in 24021f190 (in the separate fdk-aac repo), but was overwritten and silently reverted by the new upstream code drop for Android 4.2 in 381d69840a. After the code drop, I chose not to reapply this change since the crashes that it fixed had been fixed in other ways upstream and I was unable to reproduce them after the new code drop.
* Revert parts of "Use saturating adds to avoid overflow"Martin Storsjo2012-11-011-2/+2
| | | | | | | This reverts commit 839ae290c1f5a263613bea1a5fde863e757a8849. This change is no longer necessary on top of the new upstream, I cannot reproduce the crash that this fixed with the new upstream.
* Merge remote-tracking branch 'aosp/jb-mr1-release' into masterMartin Storsjo2012-11-0111-254/+86
|\ | | | | | | | | | | | | Conflicts: libAACenc/src/band_nrg.cpp libAACenc/src/grp_data.cpp libSBRenc/src/env_est.cpp
| * Bug 7170947 Update AAC codecJean-Michel Trivi2012-10-025-197/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From Fraunhofer: * AAC Decoder - Stick to the written MPEG standard instead of the MPEG reference software in terms of reference level normalization. Always set the program reference level equal to the target level. This disables level normalization using a default level for streams without embedded metadata. Modified file(s): libAACdec\src\aacdec_drc.cpp - Fix downmix channel assignment when using a WAV output channel ordering. Modified file(s): libPCMutils\src\pcmutils_lib.cpp - Retain signal accuracy and prevent LSB alteration when no level correction needs to be done. Modified file(s): libAACdec\src\aacdec_drc.h libAACdec\src\aacdec_drc.cpp libSBRdec\src\sbrdecoder.cpp libSBRdec\src\sbr_dec.cpp libSBRdec\src\sbrdec_drc.cpp - Align metadata processing with reference implementation. Modified file(s): libAACdec\src\aacdec_drc.h libAACdec\src\aacdecoder.cpp * AAC-Encoder - Prevent potential overflow in energy calculation after TNS processing. Modified file(s): libAACenc\src\band_nrg.cpp - Added saturation for number of relevant lines which are used in pe calculation. Modified file(s): libAACenc\src\line_pe.cpp - Removed obsolete files. Deleded file(s): libAACenc\src\tns_param.h libAACenc\src\tns_param.cpp * FDK-Library - Added x86 Count Leading Zeros intrinsic. Modified file(s): libFDK\include\clz.h Added file(s): libFDK\include\x86\clz_x86.h - Fixed compilation for MIPS GCC-4.4 and higher. Modified file(s): libFDK\include\mips\cplx_mul.h libFDK\include\mips\fixmul_mips.h Change-Id: I4be65f07f88d412224c7fddc3f054e8f451176cc
| * Bug fixes in AAC decoder, AAC encoder, FDK libraryJean-Michel Trivi2012-09-097-58/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Latest code drop from Fraunhofer: * AAC-Decoder - Expanded AAC-LD/ELD decoder TNS max band tables to avoid wrong data access for sampling rates <22kHz and >48kHz. Modified file(s): libAACdec\src\aacdec_tns.cpp libAACdec\src\aac_rom.h libAACdec\src\aac_rom.cpp - Fixed ELD synthesis QMF filterbank scaling for downsampled SBR. Modified file(s): libFDK\src\qmf.cpp * AAC-Encoder - Fixed bit rate limiting for lower limit as introduced in the Delivery 2012-05-11. Modified file(s): libAACenc\include\aacenc_lib.h libAACenc\src\aacenc.h libAACenc\src\aacenc.cpp libSBRenc\src\sbr_rom.h libSBRenc\src\sbr_rom.cpp - Allow negative prediction gain as meaning that there is no coding gain. Make use of scaleValueSaturate in gauss window calculation. Modified file(s): libAACenc\src\aacenc_tns.cpp - Added energy saturation to prevent overflow in short blocks. Modified file(s): libAACenc\src\grp_data.cpp - Perform scalefactor adaption in case quantized lines are out of valid range. Modified file(s): libAACenc\src\quantize.cpp - Interrupt quantization loop when no spectral data is available. Adjustments in bitreservoir adaption. Modified file(s): libAACenc\src\qc_main.cpp - Indroduced dynamic scaling in none missing harmonic energy lowering compensation. Modified file(s): libSBRenc\src\env_est.cpp * FDK-Library - Fixed saturation for negative values in scaleValueSaturate. Modified file(s): libFDK\include\scale.h Change-Id: If830ea65caef6b5554281e4b7a77a8b2e08825ce
| * Don't try to shift more bits than the variable lengthMartin Storsjo2012-08-101-2/+8
| | | | | | | | | | | | | | | | | | | | Shifting by more than (or equal to) the variable length is undefined in C. This caused the quantized spectrum values to go out of range, triggering asserts later. Change-Id: If81b6c8caa7b9c75941ad9d280b686d2069c968c
| * Snapshot 2bda038c163298531d47394bc2c09e1409c5d0dbThe Android Open Source Project2012-07-1174-0/+30370
| | | | Change-Id: If584e579464f28b97d50e51fc76ba654a5536c54
* Make sure AACdynamic_RAM gets allocated aligned to 8 bytesJeffrey Knockel2012-10-251-1/+1
| | | | | This fixes assert failures on platforms where malloc doesn't provide 8 byte alignment, such as Win9x.
* Add support for Workgroup 4 (WG4) channel mappingSergio Ammirata2012-10-053-3/+18
| | | | | This is the channel ordering used in DVD Audio, and is the standard used internally in the VLC media player.
* Use a saturating shift to avoid overflowMartin Storsjo2012-09-021-1/+1
| | | | | When the shift overflowed, asserts were triggered later, where the values were assumed to be non-negative.
* Use saturating adds in all other similar loops in groupShortData as wellMartin Storsjo2012-08-101-3/+3
|
* Don't try to shift more bits than the variable lengthMartin Storsjo2012-08-101-2/+8
| | | | | Shifting by more than (or equal to) the variable length is undefined in C.
* Use saturating adds to avoid overflowMartin Storsjo2012-08-102-3/+3
| | | | These additions can overflow, triggering assertions later.
* Allow setting bitrate modes 1-5 tooMartin Storsjo2012-07-111-0/+5
| | | | These correspond to different VBR modes.
* Add NOTICE file. Rework make file so it appears in settings.Dave Burke2012-06-121-53/+0
| | | | Change-Id: I9d9ab17121e2db58f8a4ba4b40e14cab629b1a7e
* Added license boilerplate to all source files.Dave Burke2012-06-1174-1277/+5804
| | | | | | | | | Change-Id: I42a702487e6db4953dca0027710ea4fe266052fd Also: - Removed dead code in several source files. - Minor changes in comments. - No functional changes. No changes in executed code. - Added documentation PDFs.
* Update to 2012_05_11 version.Dave Burke2012-05-125-71/+252
| | | | | | | | | | Fixes: - Don't throw error for invalid bitrate but limit to functional value - More robust ASC parsing - More robust handling of corrupt bitstreams - Handle multiple raw access units Change-Id: Ib49fe2545ff4185fe924126da702fe84ac5c2d87
* Fraunhofer AAC codec.Dave Burke2012-04-1775-0/+25715
License boilerplate update to follow. Change-Id: I2810460c11a58b6d148d84673cc031f3685e79b5