diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2012-09-09 11:48:51 -0700 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2012-09-09 11:52:09 -0700 |
commit | 381d69840ad3af2259f0b7ef49236f9ee9c76b76 (patch) | |
tree | 059754bb7c5ff151506ac52a2962d532a180b5bc /libFDK/src | |
parent | fef220869b4e5bf9241369d3379b389136c2f174 (diff) | |
download | ODR-AudioEnc-381d69840ad3af2259f0b7ef49236f9ee9c76b76.tar.gz ODR-AudioEnc-381d69840ad3af2259f0b7ef49236f9ee9c76b76.tar.bz2 ODR-AudioEnc-381d69840ad3af2259f0b7ef49236f9ee9c76b76.zip |
Bug fixes in AAC decoder, AAC encoder, FDK library
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
Diffstat (limited to 'libFDK/src')
-rw-r--r-- | libFDK/src/FDK_core.cpp | 2 | ||||
-rw-r--r-- | libFDK/src/qmf.cpp | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/libFDK/src/FDK_core.cpp b/libFDK/src/FDK_core.cpp index 37d88ee..98a051f 100644 --- a/libFDK/src/FDK_core.cpp +++ b/libFDK/src/FDK_core.cpp @@ -93,7 +93,7 @@ amm-info@iis.fraunhofer.de /* FDK tools library info */ #define FDK_TOOLS_LIB_VL0 2 #define FDK_TOOLS_LIB_VL1 2 -#define FDK_TOOLS_LIB_VL2 6 +#define FDK_TOOLS_LIB_VL2 7 #define FDK_TOOLS_LIB_TITLE "FDK Tools" #define FDK_TOOLS_LIB_BUILD_DATE __DATE__ #define FDK_TOOLS_LIB_BUILD_TIME __TIME__ diff --git a/libFDK/src/qmf.cpp b/libFDK/src/qmf.cpp index e410f55..314b9fe 100644 --- a/libFDK/src/qmf.cpp +++ b/libFDK/src/qmf.cpp @@ -1040,7 +1040,8 @@ qmfInitFilterBank (HANDLE_QMF_FILTER_BANK h_Qmf, /*!< Handle to return */ h_Qmf->outScalefactor = ALGORITHMIC_SCALING_IN_ANALYSIS_FILTERBANK + ALGORITHMIC_SCALING_IN_SYNTHESIS_FILTERBANK + h_Qmf->filterScale; - if (h_Qmf->p_stride == 2) { + if ( (h_Qmf->p_stride == 2) + || ((flags & QMF_FLAG_CLDFB) && (no_channels == 32)) ) { h_Qmf->outScalefactor -= 1; } h_Qmf->outGain = (FIXP_DBL)0x80000000; /* default init value will be not applied */ @@ -1147,7 +1148,8 @@ qmfChangeOutScalefactor (HANDLE_QMF_FILTER_BANK synQmf, /*!< Handle of Qmf S /* Add internal filterbank scale */ outScalefactor += ALGORITHMIC_SCALING_IN_ANALYSIS_FILTERBANK + ALGORITHMIC_SCALING_IN_SYNTHESIS_FILTERBANK + synQmf->filterScale; - if (synQmf->p_stride == 2) { + if ( (synQmf->p_stride == 2) + || ((synQmf->flags & QMF_FLAG_CLDFB) && (synQmf->no_channels == 32)) ) { outScalefactor -= 1; } |