Bug: 110641440
Bug: 109936783
Test: atest DecoderTestXheAac ; atest DecoderTestAacDrc
Prevent bit buffer counter overflow.
While long-term test we discovered a bit counter overflow in the bit buffer.
The bit buffer state was only used by HCR and RVLC tool and can easily be substituted with FDKgetValidBits() call.
The following patch completely removes the bit counter and all its obsolete functions.
Change-Id: Icee0519d26a2aa62367d2dece59cd3d60ffcade7
Fix call to function sbrDecoder_Header() through pointer to incorrect function type.
While testing FDK in Android P DP3 x86 64bit emulator we observed a runtime error.
The function parameter of the callback didn't use a typeless pointer.
Following patch contains a revised sbr decoder callback function with explicit data type cast to be inline with all other callbacks in FDK.
Change-Id: Id224de22beaf2eb9631babd838c4c3ceae0a801e
Fix huffman decoder escape sequence length limitation.
Change-Id: Ib05cc2c065739c27b9720a24f90d0ce4d15bf601
Prevent overflow in MPEG-D DRC _setSelectionDataInfo().
Change-Id: I3b90ef7a5168e20766a2574d57d81bb39d2a5fb9
Add sanity check for allowed LPD sampling rate.
Change-Id: I0702024adc07ed463db795dd48f4efd3de1d7896
Always check whether given channel config is supported.
Change-Id: I169161dd31bc624f2cab6be2b4c6518946ed32ba
Unsigned Integer Overflow in aacDecoder_DecodeFrame().
Change-Id: I617dd545f9ea0aca5a5e7d214bbc35f089bc355d
Unsigned Integer Overflow in SpatialDecParseSpecificConfigHeader().
Change-Id: I5994a55f993835fa511ff61a337726b3e51aed5d
Unsigned Integer Overflows in mpegSurroundDecoder_Parse().
Change-Id: I3714e88d7a9a866297bb2e93571804665a97773f
Unsigned Integer Overflow in transportDec_AdjustEndOfAccessUnit().
Change-Id: Ie4924460d30ea4ef76917704ded809d04db78993
Unsigned Integer Overflow in transportDec_readHeader().
Change-Id: I0beedab38175fc57e5bd9eb5700a3850ef2bebf7
UBSAN overflow in FFT
An overflow in the fft was observed for certain configurations. The root cause was in the scaling of the fft input data in dct_IV and dst_IV.
The following patch revises the scaling in dct and removes the unused arm implementation.
Change-Id: Idc9c44a9755b8151d5c7d8107696f43ac592413b
Clang warns about this being deprecated, when building without specifying
-std=c++98.
This doesn't give any measurable encoding speed impact on ARM or AArch64,
on neither GCC nor Clang.
Change-Id: I63a0bbd1dccb97547522da188ee585d4d8127c29
This fixes building in C++11 mode, which normally errors out
on narrowing hex literals to signed long.
This is similar to what was done in git commit ef30836651
(change id I64d19a8a8059c5a96386b1eaac297fd2469515f8), completing
the fix for that category of issues.
Change-Id: I1907bc947d43bf44910fb2b34bf2b31c0e53aa53
* AAC-Decoder
- Add support for AOT 20 (ER-AAC scalable) (base layer only)
- Add support for AAC as used in Digital Radio Mondiale (DRM30/DRM+)
Modified file(s):
libAACdec/src/aacdecoder.cpp
libAACdec/src/aacdecoder_lib.cpp
libFDK/src/FDK_core.cpp
libFDK/src/FDK_tools_rom.cpp
libMpegTPDec/src/tpdec_asc.cpp
libMpegTPDec/src/tpdec_lib.cpp
libMpegTPDec/src/version
libSBRdec/include/sbrdecoder.h
libSBRdec/src/env_extr.h
libSBRdec/src/sbrdecoder.cpp
Added file(s):
libMpegTPDec/src/tpdec_drm.cpp
libMpegTPDec/src/tpdec_drm.h
- Fix sanity check in HCR module that was performed at the wrong point in time.
Modified file(s):
libAACdec/src/aacdecoder_lib.cpp
libAACdec/src/block.cpp
- Extend core sampling rate support up to 96 kHz.
Modified file(s):
libAACdec/src/aac_rom.cpp
libAACdec/src/aacdecoder.cpp
libAACdec/src/aacdecoder_lib.cpp
- Return correct audio output channel description according number of output
channels.
Modified file(s):
libAACdec/src/aacdecoder_lib.cpp
- Indroduce decoder intern output buffer. This change allows to use framework
output buffer with the actual size of the deocder output channels.
Modified file(s):
libAACdec/include/aacdecoder_lib.h
libAACdec/src/aacdecoder.h
libAACdec/src/aacdecoder_lib.cpp
* SBR-Decoder
- Increase robustness for erroneous input data.
- Improve error concealment performance.
- Fix handling of lowest sub-band for LD-SBR
Modified file(s):
libAACdec/src/aacdecoder.cpp
libAACdec/src/aacdecoder_lib.cpp
libSBRdec/src/env_calc.cpp
libSBRdec/src/env_dec.cpp
libSBRdec/src/env_extr.cpp
libSBRdec/src/env_extr.h
libSBRdec/src/sbr_dec.cpp
libSBRdec/src/sbr_rom.cpp
libSBRdec/src/sbr_rom.h
libSBRdec/src/sbrdecoder.cpp
- Add QMF delay compensation for ELD v2 streams decoded with the complex
low delay filter-bank.
Modified file(s):
libSBRdec/src/sbr_dec.cpp
libSBRdec/src/sbr_dec.h
libSBRdec/src/sbrdecoder.cpp
- Introduce a different handling of frames to be flushed
dependent on whether there are delayed frames available or not.
Modified file(s):
libSBRdec/src/sbr_ram.h
libSBRdec/src/sbrdecoder.cpp
- Calculate the correct number of samples for dual-mono copy in case of no
available PS data.
Modified file(s):
libSBRdec/src/sbrdecoder.cpp
* SYS-Library
- Change include order of genericStds.h to prevent conflict with definitions
which are also used in math.h.
Modified file(s):
libSYS/src/genericStds.cpp
Change-Id: I3ecffbad85f39b056213107955cfadbeb3f4b6e1
Building __DATE__/__TIME__ into the binaries means that every build will
create different binaries, even if all the sources are identical. This
also means that any libraries including this one will need to be patched
during every OTA.
Nothing appears to use the build_date/build_time fields, so just replace
them with empty strings.
Bug: 24204119
Change-Id: I9543eb388a1e8ab9284df9035a62fc8942cdc082
The libSYS/include/machine_type.h header file states LONG should be
"Data type representing 4 byte signed integer on all supported
platforms" but only provided for defining LONG as INT and ULONG as
UINT when __x86_64__ was defined. This has been changed to when
__LP64__ is defined, so that it also applies to AArch64. The change
to libFDK/include/common_fix.h is then needed to get the project to
compile.
Change-Id: Iea42d7eca97dcc9da772a05b207d134cb999a72a
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
- Update disclaimer in all source files.
- Increment library version in each FDK sub-module.
Bug 9428126
Change-Id: I490b96d4ee472246b01483202b0bb4f1e9c2a5d7
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
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