diff options
author | Steve Kondik <shade@chemlab.org> | 2012-11-18 14:51:05 -0800 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2012-11-18 14:51:05 -0800 |
commit | b2511c6a79ea8d029b2b9d19130fd41d9838546f (patch) | |
tree | 19735375d488a64d7005b3b8e9ecec5438168913 /libSBRdec/src/sbrdecoder.cpp | |
parent | 49fa8770b0adce84246d5db3feec09db02eeeaee (diff) | |
parent | 6ab36997af5d5acda4f21d33031f4e45c85f96b7 (diff) | |
download | android_external_aac-b2511c6a79ea8d029b2b9d19130fd41d9838546f.tar.gz android_external_aac-b2511c6a79ea8d029b2b9d19130fd41d9838546f.tar.bz2 android_external_aac-b2511c6a79ea8d029b2b9d19130fd41d9838546f.zip |
Merge branch 'jb-mr1-release' of https://android.googlesource.com/platform/external/aac into mr1-stagingcm-10.1.3-RC2cm-10.1.3-RC1cm-10.1.3cm-10.1.2cm-10.1.1cm-10.1.0-RC5cm-10.1.0-RC4cm-10.1.0-RC3cm-10.1.0-RC2cm-10.1.0-RC1cm-10.1.0cm-10.1-M3cm-10.1-M2cm-10.1-M1mr1.1-stagingcm-10.1
Diffstat (limited to 'libSBRdec/src/sbrdecoder.cpp')
-rw-r--r-- | libSBRdec/src/sbrdecoder.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/libSBRdec/src/sbrdecoder.cpp b/libSBRdec/src/sbrdecoder.cpp index a40e5ba..192bdd2 100644 --- a/libSBRdec/src/sbrdecoder.cpp +++ b/libSBRdec/src/sbrdecoder.cpp @@ -137,7 +137,7 @@ amm-info@iis.fraunhofer.de /* Decoder library info */ #define SBRDECODER_LIB_VL0 2 #define SBRDECODER_LIB_VL1 1 -#define SBRDECODER_LIB_VL2 2 +#define SBRDECODER_LIB_VL2 3 #define SBRDECODER_LIB_TITLE "SBR Decoder" #define SBRDECODER_LIB_BUILD_DATE __DATE__ #define SBRDECODER_LIB_BUILD_TIME __TIME__ @@ -533,7 +533,7 @@ SBR_ERROR sbrDecoder_InitElement ( FDKmemclear(self->pSbrElement[elementIndex]->frameErrorFlag, ((1)+1)*sizeof(UCHAR)); /* Initialize this instance */ - sbrError = sbrDecoder_ResetElement( + sbrError = sbrDecoder_ResetElement( self, sampleRateIn, sampleRateOut, @@ -577,7 +577,7 @@ SBR_ERROR sbrDecoder_HeaderUpdate( ) { SBR_ERROR errorStatus = SBRDEC_OK; - + /* change of control data, reset decoder */ @@ -818,6 +818,7 @@ SBR_ERROR sbrDecoder_drcFeedChannel ( HANDLE_SBRDECODER self, USHORT *pBandTop ) { SBRDEC_DRC_CHANNEL *pSbrDrcChannelData = NULL; + int band, isValidData = 0; if (self == NULL) { return SBRDEC_NOT_INITIALIZED; @@ -826,10 +827,21 @@ SBR_ERROR sbrDecoder_drcFeedChannel ( HANDLE_SBRDECODER self, return SBRDEC_SET_PARAM_FAIL; } + /* Search for gain values different to 1.0f */ + for (band = 0; band < numBands; band += 1) { + if ( !((pNextFact_mag[band] == FL2FXCONST_DBL(0.5)) && (nextFact_exp == 1)) + && !((pNextFact_mag[band] == (FIXP_DBL)MAXVAL_DBL) && (nextFact_exp == 0)) ) { + isValidData = 1; + break; + } + } + /* Find the right SBR channel */ pSbrDrcChannelData = sbrDecoder_drcGetChannel( self, ch ); if ( pSbrDrcChannelData != NULL ) { + if ( pSbrDrcChannelData->enable || isValidData ) + { /* Activate processing only with real and valid data */ int i; pSbrDrcChannelData->enable = 1; @@ -844,6 +856,7 @@ SBR_ERROR sbrDecoder_drcFeedChannel ( HANDLE_SBRDECODER self, pSbrDrcChannelData->nextFact_mag[i] = pNextFact_mag[i]; } } + } return SBRDEC_OK; } |