summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* SBR encoder improvementJean-Michel Trivi2013-08-203-11/+11
| | | | | | | | | SBR encoder: Introduce coupling energy ratio limitation to prevent undesirable SBR band amplification while decoding. Bug 9428126 Change-Id: I18a77cd1a178fff7531b490779a29a0df7d993af
* Encoder intensity fixJean-Michel Trivi2013-08-203-11/+20
| | | | | | | | AAC encoder: Prevent illegal intensity values delta coding at short blocks. Bug 9428126 Change-Id: Ic287b86f3229022740f2317ea74aabe612de5e6b
* Encoder quantizer fixJean-Michel Trivi2013-08-202-3/+3
| | | | | | | | | | | | | | | | | AAC Encoder: Saturate quantizer shift value to prevent undefined behaviour. In very rare cases the shift value 'totalShift = (16-4)-(3*(totalShift>>2))' can be greater than accu data width. If you apply a shift with more then 31 bit the result depends on the architecture and is not defined in C. For certain platforms zeros are shifted in. That would be our desired behaviour. On other platforms the shift will be applied as modulo. For example >>34 would be applied as >>2. To prevent this discrepancy the shift value is limited/saturated to DFRACT_BITS-1. 'accu >>= fixMin(totalShift,DFRACT_BITS-1)'. Bug 9428126 Change-Id: I27177654c4dc22cf899bc35dad9cdd040dccb02d
* Decode and SYS lib cleanupJean-Michel Trivi2013-08-2012-40/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * AAC-Encoder - Remove source snippets related to unsupported frame length of 960. - Adjust minBits initialization for disabled VBR configuration. Modified file(s): libAACenc/src/aacenc.h libAACenc/src/aacenc_lib.cpp libAACenc/src/aacenc_tns.cpp libAACenc/src/bandwidth.cpp libAACenc/src/psy_const.h libAACenc/src/transform.h - Revise encoder parameter restrictions: "Error Resilient(ER) AAC Low Complexity" is not supported. Where the AAC part of the FDK encoder threw an initialization error, now the aacEncoder_SetParam() returns an error before initialization if the application tries to configure this audio object type. Modified file(s): libAACenc/src/aacenc_lib.cpp * SYS-Library - Portability fix for Mingw32. Modified file(s): libSYS/include/machine_type.h - Minor changes. Modified file(s): libSYS/include/wav_file.h libSYS/src/wav_file.cpp libSYS/src/cmdl_parser.cpp libSYS/src/genericStds.cpp Bug 9428126 Change-Id: I9fa44923d34f033d0dc607f2b85abacb8a85eb61
* Disclaimer update, lib version incrementJean-Michel Trivi2013-08-20305-322/+322
| | | | | | | | | - Update disclaimer in all source files. - Increment library version in each FDK sub-module. Bug 9428126 Change-Id: I490b96d4ee472246b01483202b0bb4f1e9c2a5d7
* Fix HE-AAC SBR ignored high-freq dataJean-Michel Trivi2013-08-054-2/+13
| | | | Change-Id: I12d284477f07349368e714ba52cbb2a47b024554 (cherry picked from commit a889574e60a02bbc647d3b078d2727cb48d82e5a)
* am 0d439d3d: Merge "Remove a bionic workaround."Elliott Hughes2012-11-290-0/+0
|\ | | | | | | | | * commit '0d439d3d744f5ac8b0b0c16dcc9d1d3814ad002e': Remove a bionic workaround.
| * Merge "Remove a bionic workaround."Elliott Hughes2012-11-292-6/+0
| |\
| | * Remove a bionic workaround.Elliott Hughes2012-11-292-6/+0
| |/ | | | | | | | | | | (Requires corresponding bionic patch 3975cec694a0c9b42e3f7e671fcd678da92836c3.) Change-Id: Ief968db33e2f9e1957510bbd59f25faa6828d678
* / Remove a bionic workaround.Elliott Hughes2012-11-292-6/+0
|/ | | | | | | | (Requires corresponding bionic patch 3975cec694a0c9b42e3f7e671fcd678da92836c3.) (cherry-pick of 1d24ddc612489f57c23e78a5deaaad91f1bf6ce5.) Change-Id: I7105b17c285ff24fb48be23cf2067aef37f36d45
* Bug 7170947 Update AAC codecJean-Michel Trivi2012-10-0221-1390/+1443
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Merge "Don't zero out spec coeffs before doing the final IMDCT." into jb-mr1-devJohn Grossman2012-09-121-4/+1
|\
| * Don't zero out spec coeffs before doing the final IMDCT.John Grossman2012-09-121-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Addresses bug 7140347. When flushing the decoder, you need to make sure to zero out any lingering spectral coefficients as well as zero out the overlap buffer state after decoding the final access unit. Zeroing out the spec coefficients *before* you decode the last block, however, seems like a mistake. If the final block contains any useful information for the stream, then you end up outputting the overlap portion of the second to last decoded block combined with zeros. Because of the shape of the second to last block's windows, this results in what appears to be a fade out, but actually is a zero'ed out final block. Signed-off-by: John Grossman <johngro@google.com> Change-Id: I0fab9ee1a5899811d5519a91dc05631e9bf4963c
* | fix mips build by reverting files backKeun young Park2012-09-112-31/+5
|/ | | | | | - MIPS still needs the work-around Change-Id: If68b2028bd2779ada79020bb333ec8817abe9429
* Bug fixes in AAC decoder, AAC encoder, FDK libraryJean-Michel Trivi2012-09-0928-4331/+4235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Merge "Remove workaround in aac for broken toolchain"Jean-Baptiste Queru2012-09-042-5/+0
|\
| * Remove workaround in aac for broken toolchainIrina Tirdea2012-09-032-5/+0
|/ | | | | | | | | | | | aac project forces the system not to include sys/types.h by defining _SYS_TYPES_H_. This is a workaround for broken android toolchain. This is no longer needed in latest android version and can be safely removed. This will also lead to more errors if changes in bionic headers are needed. Change-Id: Icb76c207d6b47e811eacff9f9403177629bfb451 Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
* Merge "GCC 4.4 and later cannot handle h constructs. Fix to replace the ↵Jean-Baptiste Queru2012-08-152-31/+5
|\ | | | | | | assembly constructs."
| * GCC 4.4 and later cannot handle h constructs. Fix to replace the assembly ↵Raghu Gandham2012-08-092-31/+5
| | | | | | | | | | | | constructs. Change-Id: I47509c20ee32f04ce42105563d2d4013910da531
* | Merge "Don't try to shift more bits than the variable length"Jean-Baptiste Queru2012-08-131-2/+8
|\ \ | |/ |/|
| * 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
* Merge "Only use __int64 on MSVC, not on all win32 compilers"Jean-Baptiste Queru2012-08-081-1/+1
|\
| * Only use __int64 on MSVC, not on all win32 compilersMartin Storsjo2012-07-121-1/+1
|/ | | | | | Mingw32 doesn't define the __int64 types. Change-Id: Ia45add37be1bf85abde664fd6e382334a6bb4498
* Snapshot 2bda038c163298531d47394bc2c09e1409c5d0dbThe Android Open Source Project2012-07-11311-0/+148595
Change-Id: If584e579464f28b97d50e51fc76ba654a5536c54