diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-10-15 03:11:12 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-10-15 03:11:12 +0000 |
commit | b56a4ce3f7bee6d24a8658b08d6277bea99e425e (patch) | |
tree | 1f8eca55fa97fd166bc633462d327bb171ee20dd | |
parent | b7cb239980c1cebec56249c2fc2e9cc8806fa724 (diff) | |
parent | b1b306443a1cc0308fa563b40a281bae53346d01 (diff) | |
download | fdk-aac-b56a4ce3f7bee6d24a8658b08d6277bea99e425e.tar.gz fdk-aac-b56a4ce3f7bee6d24a8658b08d6277bea99e425e.tar.bz2 fdk-aac-b56a4ce3f7bee6d24a8658b08d6277bea99e425e.zip |
Snap for 5939454 from b1b306443a1cc0308fa563b40a281bae53346d01 to rvc-release
Change-Id: I6dae09bcdf2319101d416e69dbd3b8a5cc97ac95
-rw-r--r-- | libMpegTPDec/src/tpdec_asc.cpp | 18 | ||||
-rw-r--r-- | libSACdec/src/sac_bitdec.cpp | 28 | ||||
-rw-r--r-- | libSBRdec/src/sbr_crc.cpp | 192 | ||||
-rw-r--r-- | libSBRdec/src/sbr_crc.h | 138 | ||||
-rw-r--r-- | libSBRdec/src/sbrdecoder.cpp | 87 |
5 files changed, 66 insertions, 397 deletions
diff --git a/libMpegTPDec/src/tpdec_asc.cpp b/libMpegTPDec/src/tpdec_asc.cpp index a86c2cb..ad13378 100644 --- a/libMpegTPDec/src/tpdec_asc.cpp +++ b/libMpegTPDec/src/tpdec_asc.cpp @@ -2144,6 +2144,24 @@ TRANSPORTDEC_ERROR AudioSpecificConfig_Parse( self->m_channelConfiguration = FDKreadBits(bs, 4); + /* MPEG-04 standard ISO/IEC 14496-3: channelConfiguration == 0 is reserved + in er_raw_data_block (table 4.19) and er_raw_data_block_eld (table 4.75) + MPEG-04 conformance ISO/IEC 14496-4: channelConfiguration == 0 is not + permitted for AOT_ER_AAC_LC, AOT_ER_AAC_LTP, AOT_ER_AAC_LD, + AOT_ER_AAC_SCAL (chapter 6.6.4.1.2.1.1) */ + if ((self->m_channelConfiguration == 0) && + ((self->m_aot == AOT_ER_AAC_LC) || (self->m_aot == AOT_ER_AAC_LTP) || + (self->m_aot == AOT_ER_AAC_LD) || (self->m_aot == AOT_ER_AAC_SCAL) || + (self->m_aot == AOT_ER_AAC_ELD))) { + return TRANSPORTDEC_UNSUPPORTED_FORMAT; + } + /* MPEG-04 conformance ISO/IEC 14496-4: channelConfiguration > 2 is not + * permitted for AOT_AAC_SCAL and AOT_ER_AAC_SCAL (chapter 6.6.4.1.2.1.1) */ + if ((self->m_channelConfiguration > 2) && + ((self->m_aot == AOT_AAC_SCAL) || (self->m_aot == AOT_ER_AAC_SCAL))) { + return TRANSPORTDEC_UNSUPPORTED_FORMAT; + } + /* SBR extension ( explicit non-backwards compatible mode ) */ self->m_sbrPresentFlag = 0; self->m_psPresentFlag = 0; diff --git a/libSACdec/src/sac_bitdec.cpp b/libSACdec/src/sac_bitdec.cpp index a1bdca4..4b47132 100644 --- a/libSACdec/src/sac_bitdec.cpp +++ b/libSACdec/src/sac_bitdec.cpp @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------------- Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. All rights reserved. 1. INTRODUCTION @@ -1554,22 +1554,20 @@ static SACDEC_ERROR mapIndexData( /* Interpolate */ i1 = 0; for (i = 0; i < numParameterSets; i++) { - int xi, i2, x1, x2; - if (aInterpolate[i] != 1) { i1 = i; - } - i2 = i; - while (aInterpolate[i2] == 1) { - i2++; - if (i2 >= MAX_PARAMETER_SETS) return MPS_WRONG_PARAMETERSETS; - } - x1 = paramSlot[i1]; - xi = paramSlot[i]; - x2 = paramSlot[i2]; + } else { + int xi, i2, x1, x2; - if (aInterpolate[i] == 1) { + for (i2 = i; i2 < numParameterSets; i2++) { + if (aInterpolate[i2] != 1) break; + } if (i2 >= numParameterSets) return MPS_WRONG_PARAMETERSETS; + + x1 = paramSlot[i1]; + xi = paramSlot[i]; + x2 = paramSlot[i2]; + for (band = startBand; band < stopBand; band++) { int yi, y1, y2; y1 = outputIdxData[xttIdx][i1][band]; @@ -1588,9 +1586,9 @@ static SACDEC_ERROR mapIndexData( for (ps = 0; ps < numParameterSets; ps++) { if (quantMode && (paramType == t_CLD)) { if (pOttVsTotDbIn == 0) return MPS_WRONG_OTT; - if ((pOttVsTotDb1 == 0) && (ottVsTotDbMode == ottVsTotDb1Activ)) + if ((pOttVsTotDb1 == 0) && (ottVsTotDbMode & ottVsTotDb1Activ)) return MPS_WRONG_OTT; - if ((pOttVsTotDb2 == 0) && (ottVsTotDbMode == ottVsTotDb2Activ)) + if ((pOttVsTotDb2 == 0) && (ottVsTotDbMode & ottVsTotDb2Activ)) return MPS_WRONG_OTT; for (pb = startBand; pb < stopBand; pb++) { diff --git a/libSBRdec/src/sbr_crc.cpp b/libSBRdec/src/sbr_crc.cpp deleted file mode 100644 index ba0fd05..0000000 --- a/libSBRdec/src/sbr_crc.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/* ----------------------------------------------------------------------------- -Software License for The Fraunhofer FDK AAC Codec Library for Android - -© Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten -Forschung e.V. All rights reserved. - - 1. INTRODUCTION -The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software -that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding -scheme for digital audio. This FDK AAC Codec software is intended to be used on -a wide variety of Android devices. - -AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient -general perceptual audio codecs. AAC-ELD is considered the best-performing -full-bandwidth communications codec by independent studies and is widely -deployed. AAC has been standardized by ISO and IEC as part of the MPEG -specifications. - -Patent licenses for necessary patent claims for the FDK AAC Codec (including -those of Fraunhofer) may be obtained through Via Licensing -(www.vialicensing.com) or through the respective patent owners individually for -the purpose of encoding or decoding bit streams in products that are compliant -with the ISO/IEC MPEG audio standards. Please note that most manufacturers of -Android devices already license these patent claims through Via Licensing or -directly from the patent owners, and therefore FDK AAC Codec software may -already be covered under those patent licenses when it is used for those -licensed purposes only. - -Commercially-licensed AAC software libraries, including floating-point versions -with enhanced sound quality, are also available from Fraunhofer. Users are -encouraged to check the Fraunhofer website for additional applications -information and documentation. - -2. COPYRIGHT LICENSE - -Redistribution and use in source and binary forms, with or without modification, -are permitted without payment of copyright license fees provided that you -satisfy the following conditions: - -You must retain the complete text of this software license in redistributions of -the FDK AAC Codec or your modifications thereto in source code form. - -You must retain the complete text of this software license in the documentation -and/or other materials provided with redistributions of the FDK AAC Codec or -your modifications thereto in binary form. You must make available free of -charge copies of the complete source code of the FDK AAC Codec and your -modifications thereto to recipients of copies in binary form. - -The name of Fraunhofer may not be used to endorse or promote products derived -from this library without prior written permission. - -You may not charge copyright license fees for anyone to use, copy or distribute -the FDK AAC Codec software or your modifications thereto. - -Your modified versions of the FDK AAC Codec must carry prominent notices stating -that you changed the software and the date of any change. For modified versions -of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android" -must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK -AAC Codec Library for Android." - -3. NO PATENT LICENSE - -NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without -limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE. -Fraunhofer provides no warranty of patent non-infringement with respect to this -software. - -You may use this FDK AAC Codec software or modifications thereto only for -purposes that are authorized by appropriate patent licenses. - -4. DISCLAIMER - -This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright -holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, -including but not limited to the implied warranties of merchantability and -fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, -or consequential damages, including but not limited to procurement of substitute -goods or services; loss of use, data, or profits, or business interruption, -however caused and on any theory of liability, whether in contract, strict -liability, or tort (including negligence), arising in any way out of the use of -this software, even if advised of the possibility of such damage. - -5. CONTACT INFORMATION - -Fraunhofer Institute for Integrated Circuits IIS -Attention: Audio and Multimedia Departments - FDK AAC LL -Am Wolfsmantel 33 -91058 Erlangen, Germany - -www.iis.fraunhofer.de/amm -amm-info@iis.fraunhofer.de ------------------------------------------------------------------------------ */ - -/**************************** SBR decoder library ****************************** - - Author(s): - - Description: - -*******************************************************************************/ - -/*! - \file - \brief CRC check coutines -*/ - -#include "sbr_crc.h" - -#include "FDK_bitstream.h" -#include "transcendent.h" - -#define MAXCRCSTEP 16 -#define MAXCRCSTEP_LD 4 - -/*! - \brief crc calculation -*/ -static ULONG calcCRC(HANDLE_CRC hCrcBuf, ULONG bValue, int nBits) { - int i; - ULONG bMask = (1UL << (nBits - 1)); - - for (i = 0; i < nBits; i++, bMask >>= 1) { - USHORT flag = (hCrcBuf->crcState & hCrcBuf->crcMask) ? 1 : 0; - USHORT flag1 = (bMask & bValue) ? 1 : 0; - - flag ^= flag1; - hCrcBuf->crcState <<= 1; - if (flag) hCrcBuf->crcState ^= hCrcBuf->crcPoly; - } - - return (hCrcBuf->crcState); -} - -/*! - \brief crc -*/ -static int getCrc(HANDLE_FDK_BITSTREAM hBs, ULONG NrBits) { - int i; - CRC_BUFFER CrcBuf; - - CrcBuf.crcState = SBR_CRC_START; - CrcBuf.crcPoly = SBR_CRC_POLY; - CrcBuf.crcMask = SBR_CRC_MASK; - - int CrcStep = NrBits >> MAXCRCSTEP_LD; - - int CrcNrBitsRest = (NrBits - CrcStep * MAXCRCSTEP); - ULONG bValue; - - for (i = 0; i < CrcStep; i++) { - bValue = FDKreadBits(hBs, MAXCRCSTEP); - calcCRC(&CrcBuf, bValue, MAXCRCSTEP); - } - - bValue = FDKreadBits(hBs, CrcNrBitsRest); - calcCRC(&CrcBuf, bValue, CrcNrBitsRest); - - return (CrcBuf.crcState & SBR_CRC_RANGE); -} - -/*! - \brief crc interface - \return 1: CRC OK, 0: CRC check failure -*/ -int SbrCrcCheck(HANDLE_FDK_BITSTREAM hBs, /*!< handle to bit-buffer */ - LONG NrBits) /*!< max. CRC length */ -{ - int crcResult = 1; - ULONG NrCrcBits; - ULONG crcCheckResult; - LONG NrBitsAvailable; - ULONG crcCheckSum; - - crcCheckSum = FDKreadBits(hBs, 10); - - NrBitsAvailable = FDKgetValidBits(hBs); - if (NrBitsAvailable <= 0) { - return 0; - } - - NrCrcBits = fixMin((INT)NrBits, (INT)NrBitsAvailable); - - crcCheckResult = getCrc(hBs, NrCrcBits); - FDKpushBack(hBs, (NrBitsAvailable - FDKgetValidBits(hBs))); - - if (crcCheckResult != crcCheckSum) { - crcResult = 0; - } - - return (crcResult); -} diff --git a/libSBRdec/src/sbr_crc.h b/libSBRdec/src/sbr_crc.h deleted file mode 100644 index 9633717..0000000 --- a/libSBRdec/src/sbr_crc.h +++ /dev/null @@ -1,138 +0,0 @@ -/* ----------------------------------------------------------------------------- -Software License for The Fraunhofer FDK AAC Codec Library for Android - -© Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten -Forschung e.V. All rights reserved. - - 1. INTRODUCTION -The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software -that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding -scheme for digital audio. This FDK AAC Codec software is intended to be used on -a wide variety of Android devices. - -AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient -general perceptual audio codecs. AAC-ELD is considered the best-performing -full-bandwidth communications codec by independent studies and is widely -deployed. AAC has been standardized by ISO and IEC as part of the MPEG -specifications. - -Patent licenses for necessary patent claims for the FDK AAC Codec (including -those of Fraunhofer) may be obtained through Via Licensing -(www.vialicensing.com) or through the respective patent owners individually for -the purpose of encoding or decoding bit streams in products that are compliant -with the ISO/IEC MPEG audio standards. Please note that most manufacturers of -Android devices already license these patent claims through Via Licensing or -directly from the patent owners, and therefore FDK AAC Codec software may -already be covered under those patent licenses when it is used for those -licensed purposes only. - -Commercially-licensed AAC software libraries, including floating-point versions -with enhanced sound quality, are also available from Fraunhofer. Users are -encouraged to check the Fraunhofer website for additional applications -information and documentation. - -2. COPYRIGHT LICENSE - -Redistribution and use in source and binary forms, with or without modification, -are permitted without payment of copyright license fees provided that you -satisfy the following conditions: - -You must retain the complete text of this software license in redistributions of -the FDK AAC Codec or your modifications thereto in source code form. - -You must retain the complete text of this software license in the documentation -and/or other materials provided with redistributions of the FDK AAC Codec or -your modifications thereto in binary form. You must make available free of -charge copies of the complete source code of the FDK AAC Codec and your -modifications thereto to recipients of copies in binary form. - -The name of Fraunhofer may not be used to endorse or promote products derived -from this library without prior written permission. - -You may not charge copyright license fees for anyone to use, copy or distribute -the FDK AAC Codec software or your modifications thereto. - -Your modified versions of the FDK AAC Codec must carry prominent notices stating -that you changed the software and the date of any change. For modified versions -of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android" -must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK -AAC Codec Library for Android." - -3. NO PATENT LICENSE - -NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without -limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE. -Fraunhofer provides no warranty of patent non-infringement with respect to this -software. - -You may use this FDK AAC Codec software or modifications thereto only for -purposes that are authorized by appropriate patent licenses. - -4. DISCLAIMER - -This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright -holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, -including but not limited to the implied warranties of merchantability and -fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, -or consequential damages, including but not limited to procurement of substitute -goods or services; loss of use, data, or profits, or business interruption, -however caused and on any theory of liability, whether in contract, strict -liability, or tort (including negligence), arising in any way out of the use of -this software, even if advised of the possibility of such damage. - -5. CONTACT INFORMATION - -Fraunhofer Institute for Integrated Circuits IIS -Attention: Audio and Multimedia Departments - FDK AAC LL -Am Wolfsmantel 33 -91058 Erlangen, Germany - -www.iis.fraunhofer.de/amm -amm-info@iis.fraunhofer.de ------------------------------------------------------------------------------ */ - -/**************************** SBR decoder library ****************************** - - Author(s): - - Description: - -*******************************************************************************/ - -/*! - \file - \brief CRC checking routines -*/ -#ifndef SBR_CRC_H -#define SBR_CRC_H - -#include "sbrdecoder.h" - -#include "FDK_bitstream.h" - -/* some useful crc polynoms: - -crc5: x^5+x^4+x^2+x^1+1 -crc6: x^6+x^5+x^3+x^2+x+1 -crc7: x^7+x^6+x^2+1 -crc8: x^8+x^2+x+x+1 -*/ - -/* default SBR CRC */ /* G(x) = x^10 + x^9 + x^5 + x^4 + x + 1 */ -#define SBR_CRC_POLY 0x0233 -#define SBR_CRC_MASK 0x0200 -#define SBR_CRC_START 0x0000 -#define SBR_CRC_RANGE 0x03FF - -typedef struct { - USHORT crcState; - USHORT crcMask; - USHORT crcPoly; -} CRC_BUFFER; - -typedef CRC_BUFFER *HANDLE_CRC; - -int SbrCrcCheck(HANDLE_FDK_BITSTREAM hBitBuf, LONG NrCrcBits); - -#endif diff --git a/libSBRdec/src/sbrdecoder.cpp b/libSBRdec/src/sbrdecoder.cpp index c827ced..52403f6 100644 --- a/libSBRdec/src/sbrdecoder.cpp +++ b/libSBRdec/src/sbrdecoder.cpp @@ -143,14 +143,12 @@ amm-info@iis.fraunhofer.de #include "env_extr.h" #include "sbr_dec.h" #include "env_dec.h" -#include "sbr_crc.h" +#include "FDK_crc.h" #include "sbr_ram.h" #include "sbr_rom.h" #include "lpp_tran.h" #include "transcendent.h" -#include "FDK_crc.h" - #include "sbrdec_drc.h" #include "psbitdec.h" @@ -1134,18 +1132,22 @@ SBR_ERROR sbrDecoder_Parse(HANDLE_SBRDECODER self, HANDLE_FDK_BITSTREAM hBs, SBR_HEADER_STATUS headerStatus = HEADER_NOT_PRESENT; INT startPos = FDKgetValidBits(hBs); - INT CRCLen = 0; + FDK_CRCINFO crcInfo; + INT crcReg = 0; + USHORT sbrCrc = 0; + UINT crcPoly; + UINT crcStartValue = 0; + UINT crcLen; + HANDLE_FDK_BITSTREAM hBsOriginal = hBs; FDK_BITSTREAM bsBwd; - FDK_CRCINFO crcInfo; - INT crcReg = 0; - USHORT drmSbrCrc = 0; const int fGlobalIndependencyFlag = acFlags & AC_INDEP; const int bs_pvc = acElFlags[elementIndex] & AC_EL_USAC_PVC; const int bs_interTes = acElFlags[elementIndex] & AC_EL_USAC_ITES; int stereo; int fDoDecodeSbrData = 1; + int alignBits = 0; int lastSlot, lastHdrSlot = 0, thisHdrSlot = 0; @@ -1277,27 +1279,23 @@ SBR_ERROR sbrDecoder_Parse(HANDLE_SBRDECODER self, HANDLE_FDK_BITSTREAM hBs, if (fDoDecodeSbrData) { if (crcFlag) { switch (self->coreCodec) { - case AOT_ER_AAC_ELD: - FDKpushFor(hBs, 10); - /* check sbrcrc later: we don't know the payload length now */ - break; case AOT_DRM_AAC: case AOT_DRM_SURROUND: - drmSbrCrc = (USHORT)FDKreadBits(hBs, 8); - /* Setup CRC decoder */ - FDKcrcInit(&crcInfo, 0x001d, 0xFFFF, 8); - /* Start CRC region */ - crcReg = FDKcrcStartReg(&crcInfo, hBs, 0); + crcPoly = 0x001d; + crcLen = 8; + crcStartValue = 0x000000ff; break; default: - CRCLen = bsPayLen - 10; /* change: 0 => i */ - if (CRCLen < 0) { - fDoDecodeSbrData = 0; - } else { - fDoDecodeSbrData = SbrCrcCheck(hBs, CRCLen); - } + crcPoly = 0x0633; + crcLen = 10; + crcStartValue = 0x00000000; break; } + sbrCrc = (USHORT)FDKreadBits(hBs, crcLen); + /* Setup CRC decoder */ + FDKcrcInit(&crcInfo, crcPoly, crcStartValue, crcLen); + /* Start CRC region */ + crcReg = FDKcrcStartReg(&crcInfo, hBs, 0); } } /* if (fDoDecodeSbrData) */ @@ -1450,35 +1448,6 @@ SBR_ERROR sbrDecoder_Parse(HANDLE_SBRDECODER self, HANDLE_FDK_BITSTREAM hBs, valBits = (INT)FDKgetValidBits(hBs); } - if (crcFlag) { - switch (self->coreCodec) { - case AOT_ER_AAC_ELD: { - /* late crc check for eld */ - INT payloadbits = - (INT)startPos - (INT)FDKgetValidBits(hBs) - startPos; - INT crcLen = payloadbits - 10; - FDKpushBack(hBs, payloadbits); - fDoDecodeSbrData = SbrCrcCheck(hBs, crcLen); - FDKpushFor(hBs, crcLen); - } break; - case AOT_DRM_AAC: - case AOT_DRM_SURROUND: - /* End CRC region */ - FDKcrcEndReg(&crcInfo, hBs, crcReg); - /* Check CRC */ - if ((FDKcrcGetCRC(&crcInfo) ^ 0xFF) != drmSbrCrc) { - fDoDecodeSbrData = 0; - if (headerStatus != HEADER_NOT_PRESENT) { - headerStatus = HEADER_ERROR; - hSbrHeader->syncState = SBR_NOT_INITIALIZED; - } - } - break; - default: - break; - } - } - /* sanity check of remaining bits */ if (valBits < 0) { fDoDecodeSbrData = 0; @@ -1489,7 +1458,7 @@ SBR_ERROR sbrDecoder_Parse(HANDLE_SBRDECODER self, HANDLE_FDK_BITSTREAM hBs, case AOT_AAC_LC: { /* This sanity check is only meaningful with General Audio * bitstreams */ - int alignBits = valBits & 0x7; + alignBits = valBits & 0x7; if (valBits > alignBits) { fDoDecodeSbrData = 0; @@ -1508,6 +1477,20 @@ SBR_ERROR sbrDecoder_Parse(HANDLE_SBRDECODER self, HANDLE_FDK_BITSTREAM hBs, errorStatus = SBRDEC_PARSE_ERROR; } + if (crcFlag && (hSbrHeader->syncState >= SBR_HEADER) && fDoDecodeSbrData) { + FDKpushFor(hBs, alignBits); + FDKcrcEndReg(&crcInfo, hBs, crcReg); /* End CRC region */ + FDKpushBack(hBs, alignBits); + /* Check CRC */ + if ((FDKcrcGetCRC(&crcInfo) ^ crcStartValue) != sbrCrc) { + fDoDecodeSbrData = 0; + if (headerStatus != HEADER_NOT_PRESENT) { + headerStatus = HEADER_ERROR; + hSbrHeader->syncState = SBR_NOT_INITIALIZED; + } + } + } + if (!fDoDecodeSbrData) { /* Set error flag for this slot to trigger concealment */ setFrameErrorFlag(self->pSbrElement[elementIndex], FRAME_ERROR); |