From 6cfabd35363c3ef5e3b209b867169a500b3ccc3c Mon Sep 17 00:00:00 2001 From: Fraunhofer IIS FDK Date: Mon, 26 Feb 2018 20:17:00 +0100 Subject: Upgrade to FDKv2 Bug: 71430241 Test: CTS DecoderTest and DecoderTestAacDrc original-Change-Id: Iaa20f749b8a04d553b20247cfe1a8930ebbabe30 Apply clang-format also on header files. original-Change-Id: I14de1ef16bbc79ec0283e745f98356a10efeb2e4 Fixes for MPEG-D DRC original-Change-Id: If1de2d74bbbac84b3f67de3b88b83f6a23b8a15c Catch unsupported tw_mdct at an early stage original-Change-Id: Ied9dd00d754162a0e3ca1ae3e6b854315d818afe Fixing PVC transition frames original-Change-Id: Ib75725abe39252806c32d71176308f2c03547a4e Move qmf bands sanity check original-Change-Id: Iab540c3013c174d9490d2ae100a4576f51d8dbc4 Initialize scaling variable original-Change-Id: I3c4087101b70e998c71c1689b122b0d7762e0f9e Add 16 qmf band configuration to getSlotNrgHQ() original-Change-Id: I49a5d30f703a1b126ff163df9656db2540df21f1 Always apply byte alignment at the end of the AudioMuxElement original-Change-Id: I42d560287506d65d4c3de8bfe3eb9a4ebeb4efc7 Setup SBR element only if no parse error exists original-Change-Id: I1915b73704bc80ab882b9173d6bec59cbd073676 Additional array index check in HCR original-Change-Id: I18cc6e501ea683b5009f1bbee26de8ddd04d8267 Fix fade-in index selection in concealment module original-Change-Id: Ibf802ed6ed8c05e9257e1f3b6d0ac1162e9b81c1 Enable explicit backward compatible parser for AAC_LD original-Change-Id: I27e9c678dcb5d40ed760a6d1e06609563d02482d Skip spatial specific config in explicit backward compatible ASC original-Change-Id: Iff7cc365561319e886090cedf30533f562ea4d6e Update flags description in decoder API original-Change-Id: I9a5b4f8da76bb652f5580cbd3ba9760425c43830 Add QMF domain reset function original-Change-Id: I4f89a8a2c0277d18103380134e4ed86996e9d8d6 DRC upgrade v2.1.0 original-Change-Id: I5731c0540139dab220094cd978ef42099fc45b74 Fix integer overflow in sqrtFixp_lookup() original-Change-Id: I429a6f0d19aa2cc957e0f181066f0ca73968c914 Fix integer overflow in invSqrtNorm2() original-Change-Id: I84de5cbf9fb3adeb611db203fe492fabf4eb6155 Fix integer overflow in GenerateRandomVector() original-Change-Id: I3118a641008bd9484d479e5b0b1ee2b5d7d44d74 Fix integer overflow in adjustTimeSlot_EldGrid() original-Change-Id: I29d503c247c5c8282349b79df940416a512fb9d5 Fix integer overflow in FDKsbrEnc_codeEnvelope() original-Change-Id: I6b34b61ebb9d525b0c651ed08de2befc1f801449 Follow-up on: Fix integer overflow in adjustTimeSlot_EldGrid() original-Change-Id: I6f8f578cc7089e5eb7c7b93e580b72ca35ad689a Fix integer overflow in get_pk_v2() original-Change-Id: I63375bed40d45867f6eeaa72b20b1f33e815938c Fix integer overflow in Syn_filt_zero() original-Change-Id: Ie0c02fdfbe03988f9d3b20d10cd9fe4c002d1279 Fix integer overflow in CFac_CalcFacSignal() original-Change-Id: Id2d767c40066c591b51768e978eb8af3b803f0c5 Fix integer overflow in FDKaacEnc_FDKaacEnc_calcPeNoAH() original-Change-Id: Idcbd0f4a51ae2550ed106aa6f3d678d1f9724841 Fix integer overflow in sbrDecoder_calculateGainVec() original-Change-Id: I7081bcbe29c5cede9821b38d93de07c7add2d507 Fix integer overflow in CLpc_SynthesisLattice() original-Change-Id: I4a95ddc18de150102352d4a1845f06094764c881 Fix integer overflow in Pred_Lt4() original-Change-Id: I4dbd012b2de7d07c3e70a47b92e3bfae8dbc750a Fix integer overflow in FDKsbrEnc_InitSbrFastTransientDetector() original-Change-Id: I788cbec1a4a00f44c2f3a72ad7a4afa219807d04 Fix unsigned integer overflow in FDKaacEnc_WriteBitstream() original-Change-Id: I68fc75166e7d2cd5cd45b18dbe3d8c2a92f1822a Fix unsigned integer overflow in FDK_MetadataEnc_Init() original-Change-Id: Ie8d025f9bcdb2442c704bd196e61065c03c10af4 Fix overflow in pseudo random number generators original-Change-Id: I3e2551ee01356297ca14e3788436ede80bd5513c Fix unsigned integer overflow in sbrDecoder_Parse() original-Change-Id: I3f231b2f437e9c37db4d5b964164686710eee971 Fix unsigned integer overflow in longsub() original-Change-Id: I73c2bc50415cac26f1f5a29e125bbe75f9180a6e Fix unsigned integer overflow in CAacDecoder_DecodeFrame() original-Change-Id: Ifce2db4b1454b46fa5f887e9d383f1cc43b291e4 Fix overflow at CLpdChannelStream_Read() original-Change-Id: Idb9d822ce3a4272e4794b643644f5434e2d4bf3f Fix unsigned integer overflow in Hcr_State_BODY_SIGN_ESC__ESC_WORD() original-Change-Id: I1ccf77c0015684b85534c5eb97162740a870b71c Fix unsigned integer overflow in UsacConfig_Parse() original-Change-Id: Ie6d27f84b6ae7eef092ecbff4447941c77864d9f Fix unsigned integer overflow in aacDecoder_drcParse() original-Change-Id: I713f28e883eea3d70b6fa56a7b8f8c22bcf66ca0 Fix unsigned integer overflow in aacDecoder_drcReadCompression() original-Change-Id: Ia34dfeb88c4705c558bce34314f584965cafcf7a Fix unsigned integer overflow in CDataStreamElement_Read() original-Change-Id: Iae896cc1d11f0a893d21be6aa90bd3e60a2c25f0 Fix unsigned integer overflow in transportDec_AdjustEndOfAccessUnit() original-Change-Id: I64cf29a153ee784bb4a16fdc088baabebc0007dc Fix unsigned integer overflow in transportDec_GetAuBitsRemaining() original-Change-Id: I975b3420faa9c16a041874ba0db82e92035962e4 Fix unsigned integer overflow in extractExtendedData() original-Change-Id: I2a59eb09e2053cfb58dfb75fcecfad6b85a80a8f Fix signed integer overflow in CAacDecoder_ExtPayloadParse() original-Change-Id: I4ad5ca4e3b83b5d964f1c2f8c5e7b17c477c7929 Fix unsigned integer overflow in CAacDecoder_DecodeFrame() original-Change-Id: I29a39df77d45c52a0c9c5c83c1ba81f8d0f25090 Follow-up on: Fix integer overflow in CLpc_SynthesisLattice() original-Change-Id: I8fb194ffc073a3432a380845be71036a272d388f Fix signed integer overflow in _interpolateDrcGain() original-Change-Id: I879ec9ab14005069a7c47faf80e8bc6e03d22e60 Fix unsigned integer overflow in FDKreadBits() original-Change-Id: I1f47a6a8037ff70375aa8844947d5681bb4287ad Fix unsigned integer overflow in FDKbyteAlign() original-Change-Id: Id5f3a11a0c9e50fc6f76ed6c572dbd4e9f2af766 Fix unsigned integer overflow in FDK_get32() original-Change-Id: I9d33b8e97e3d38cbb80629cb859266ca0acdce96 Fix unsigned integer overflow in FDK_pushBack() original-Change-Id: Ic87f899bc8c6acf7a377a8ca7f3ba74c3a1e1c19 Fix unsigned integer overflow in FDK_pushForward() original-Change-Id: I3b754382f6776a34be1602e66694ede8e0b8effc Fix unsigned integer overflow in ReadPsData() original-Change-Id: I25361664ba8139e32bbbef2ca8c106a606ce9c37 Fix signed integer overflow in E_UTIL_residu() original-Change-Id: I8c3abd1f437ee869caa8fb5903ce7d3d641b6aad REVERT: Follow-up on: Integer overflow in CLpc_SynthesisLattice(). original-Change-Id: I3d340099acb0414795c8dfbe6362bc0a8f045f9b Follow-up on: Fix integer overflow in CLpc_SynthesisLattice() original-Change-Id: I4aedb8b3a187064e9f4d985175aa55bb99cc7590 Follow-up on: Fix unsigned integer overflow in aacDecoder_drcParse() original-Change-Id: I2aa2e13916213bf52a67e8b0518e7bf7e57fb37d Fix integer overflow in acelp original-Change-Id: Ie6390c136d84055f8b728aefbe4ebef6e029dc77 Fix unsigned integer overflow in aacDecoder_UpdateBitStreamCounters() original-Change-Id: I391ffd97ddb0b2c184cba76139bfb356a3b4d2e2 Adjust concealment default settings original-Change-Id: I6a95db935a327c47df348030bcceafcb29f54b21 Saturate estimatedStartPos original-Change-Id: I27be2085e0ae83ec9501409f65e003f6bcba1ab6 Negative shift exponent in _interpolateDrcGain() original-Change-Id: I18edb26b26d002aafd5e633d4914960f7a359c29 Negative shift exponent in calculateICC() original-Change-Id: I3dcd2ae98d2eb70ee0d59750863cbb2a6f4f8aba Too large shift exponent in FDK_put() original-Change-Id: Ib7d9aaa434d2d8de4a13b720ca0464b31ca9b671 Too large shift exponent in CalcInvLdData() original-Change-Id: I43e6e78d4cd12daeb1dcd5d82d1798bdc2550262 Member access within null pointer of type SBR_CHANNEL original-Change-Id: Idc5e4ea8997810376d2f36bbdf628923b135b097 Member access within null pointer of type CpePersistentData original-Change-Id: Ib6c91cb0d37882768e5baf63324e429589de0d9d Member access within null pointer FDKaacEnc_psyMain() original-Change-Id: I7729b7f4479970531d9dc823abff63ca52e01997 Member access within null pointer FDKaacEnc_GetPnsParam() original-Change-Id: I9aa3b9f3456ae2e0f7483dbd5b3dde95fc62da39 Member access within null pointer FDKsbrEnc_EnvEncodeFrame() original-Change-Id: I67936f90ea714e90b3e81bc0dd1472cc713eb23a Add HCR sanity check original-Change-Id: I6c1d9732ebcf6af12f50b7641400752f74be39f7 Fix memory issue for HBE edge case with 8:3 SBR original-Change-Id: I11ea58a61e69fbe8bf75034b640baee3011e63e9 Additional SBR parametrization sanity check for ELD original-Change-Id: Ie26026fbfe174c2c7b3691f6218b5ce63e322140 Add MPEG-D DRC channel layout check original-Change-Id: Iea70a74f171b227cce636a9eac4ba662777a2f72 Additional out-of-bounds checks in MPEG-D DRC original-Change-Id: Ife4a8c3452c6fde8a0a09e941154a39a769777d4 Change-Id: Ic63cb2f628720f54fe9b572b0cb528e2599c624e --- libSBRenc/src/bit_sbr.cpp | 1076 ++++++++++++++++++++++----------------------- 1 file changed, 534 insertions(+), 542 deletions(-) (limited to 'libSBRenc/src/bit_sbr.cpp') diff --git a/libSBRenc/src/bit_sbr.cpp b/libSBRenc/src/bit_sbr.cpp index 9200e01..5a65e98 100644 --- a/libSBRenc/src/bit_sbr.cpp +++ b/libSBRenc/src/bit_sbr.cpp @@ -1,74 +1,85 @@ - -/* ----------------------------------------------------------------------------------------------------------- +/* ----------------------------------------------------------------------------- Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright 1995 - 2015 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. - All rights reserved. +© 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. +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: +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 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 +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. +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. +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." +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. +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. +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. +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 @@ -79,14 +90,21 @@ Am Wolfsmantel 33 www.iis.fraunhofer.de/amm amm-info@iis.fraunhofer.de ------------------------------------------------------------------------------------------------------------ */ +----------------------------------------------------------------------------- */ + +/**************************** SBR encoder library ****************************** + + Author(s): + + Description: + +*******************************************************************************/ /*! \file - \brief SBR bit writing routines + \brief SBR bit writing routines $Revision: 93300 $ */ - #include "bit_sbr.h" #include "code_env.h" @@ -95,71 +113,54 @@ amm-info@iis.fraunhofer.de #include "ps_main.h" -typedef enum { - SBR_ID_SCE = 1, - SBR_ID_CPE -} SBR_ELEMENT_TYPE; - - -static INT encodeSbrData (HANDLE_SBR_ENV_DATA sbrEnvDataLeft, - HANDLE_SBR_ENV_DATA sbrEnvDataRight, - HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_COMMON_DATA cmonData, - SBR_ELEMENT_TYPE sbrElem, - INT coupling, - UINT sbrSyntaxFlags); - -static INT encodeSbrHeader (HANDLE_SBR_HEADER_DATA sbrHeaderData, - HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, - HANDLE_COMMON_DATA cmonData); - - -static INT encodeSbrHeaderData (HANDLE_SBR_HEADER_DATA sbrHeaderData, - HANDLE_FDK_BITSTREAM hBitStream); - -static INT encodeSbrSingleChannelElement (HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream - ,HANDLE_PARAMETRIC_STEREO hParametricStereo - ,UINT sbrSyntaxFlags - ); - - +typedef enum { SBR_ID_SCE = 1, SBR_ID_CPE } SBR_ELEMENT_TYPE; -static INT encodeSbrChannelPairElement (HANDLE_SBR_ENV_DATA sbrEnvDataLeft, - HANDLE_SBR_ENV_DATA sbrEnvDataRight, - HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_FDK_BITSTREAM hBitStream, - INT coupling); +static INT encodeSbrData(HANDLE_SBR_ENV_DATA sbrEnvDataLeft, + HANDLE_SBR_ENV_DATA sbrEnvDataRight, + HANDLE_PARAMETRIC_STEREO hParametricStereo, + HANDLE_COMMON_DATA cmonData, SBR_ELEMENT_TYPE sbrElem, + INT coupling, UINT sbrSyntaxFlags); +static INT encodeSbrHeader(HANDLE_SBR_HEADER_DATA sbrHeaderData, + HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, + HANDLE_COMMON_DATA cmonData); -static INT encodeSbrGrid (HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream); +static INT encodeSbrHeaderData(HANDLE_SBR_HEADER_DATA sbrHeaderData, + HANDLE_FDK_BITSTREAM hBitStream); -static int encodeLowDelaySbrGrid ( HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream, - int transmitFreqs); +static INT encodeSbrSingleChannelElement( + HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream, + HANDLE_PARAMETRIC_STEREO hParametricStereo, const UINT sbrSyntaxFlags); -static INT encodeSbrDtdf (HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream); +static INT encodeSbrChannelPairElement( + HANDLE_SBR_ENV_DATA sbrEnvDataLeft, HANDLE_SBR_ENV_DATA sbrEnvDataRight, + HANDLE_PARAMETRIC_STEREO hParametricStereo, HANDLE_FDK_BITSTREAM hBitStream, + const INT coupling, const UINT sbrSyntaxFlags); -static INT writeNoiseLevelData (HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream, - INT coupling); +static INT encodeSbrGrid(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream); -static INT writeEnvelopeData (HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream, - INT coupling); +static int encodeLowDelaySbrGrid(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream, + const int transmitFreqs, + const UINT sbrSyntaxFlags); -static INT writeSyntheticCodingData (HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream); +static INT encodeSbrDtdf(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream); +static INT writeNoiseLevelData(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream, INT coupling); -static INT encodeExtendedData (HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_FDK_BITSTREAM hBitStream); +static INT writeEnvelopeData(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream, INT coupling); +static INT writeSyntheticCodingData(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream); +static INT encodeExtendedData(HANDLE_PARAMETRIC_STEREO hParametricStereo, + HANDLE_FDK_BITSTREAM hBitStream); -static INT getSbrExtendedDataSize (HANDLE_PARAMETRIC_STEREO hParametricStereo); +static INT getSbrExtendedDataSize(HANDLE_PARAMETRIC_STEREO hParametricStereo); /***************************************************************************** @@ -170,40 +171,26 @@ static INT getSbrExtendedDataSize (HANDLE_PARAMETRIC_STEREO hParametricStereo); output: *****************************************************************************/ -INT -FDKsbrEnc_WriteEnvSingleChannelElement( - HANDLE_SBR_HEADER_DATA sbrHeaderData, - HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, - HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_COMMON_DATA cmonData, - UINT sbrSyntaxFlags - ) +INT FDKsbrEnc_WriteEnvSingleChannelElement( + HANDLE_SBR_HEADER_DATA sbrHeaderData, + HANDLE_PARAMETRIC_STEREO hParametricStereo, + HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_COMMON_DATA cmonData, UINT sbrSyntaxFlags) { INT payloadBits = 0; - cmonData->sbrHdrBits = 0; + cmonData->sbrHdrBits = 0; cmonData->sbrDataBits = 0; /* write pure sbr data */ if (sbrEnvData != NULL) { - /* write header */ - payloadBits += encodeSbrHeader (sbrHeaderData, - sbrBitstreamData, - cmonData); - + payloadBits += encodeSbrHeader(sbrHeaderData, sbrBitstreamData, cmonData); /* write data */ - payloadBits += encodeSbrData (sbrEnvData, - NULL, - hParametricStereo, - cmonData, - SBR_ID_SCE, - 0, - sbrSyntaxFlags); - + payloadBits += encodeSbrData(sbrEnvData, NULL, hParametricStereo, cmonData, + SBR_ID_SCE, 0, sbrSyntaxFlags); } return payloadBits; } @@ -217,83 +204,65 @@ FDKsbrEnc_WriteEnvSingleChannelElement( output: *****************************************************************************/ -INT -FDKsbrEnc_WriteEnvChannelPairElement (HANDLE_SBR_HEADER_DATA sbrHeaderData, - HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, - HANDLE_SBR_ENV_DATA sbrEnvDataLeft, - HANDLE_SBR_ENV_DATA sbrEnvDataRight, - HANDLE_COMMON_DATA cmonData, - UINT sbrSyntaxFlags) +INT FDKsbrEnc_WriteEnvChannelPairElement( + HANDLE_SBR_HEADER_DATA sbrHeaderData, + HANDLE_PARAMETRIC_STEREO hParametricStereo, + HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, + HANDLE_SBR_ENV_DATA sbrEnvDataLeft, HANDLE_SBR_ENV_DATA sbrEnvDataRight, + HANDLE_COMMON_DATA cmonData, UINT sbrSyntaxFlags) { INT payloadBits = 0; - cmonData->sbrHdrBits = 0; + cmonData->sbrHdrBits = 0; cmonData->sbrDataBits = 0; /* write pure sbr data */ if ((sbrEnvDataLeft != NULL) && (sbrEnvDataRight != NULL)) { - /* write header */ - payloadBits += encodeSbrHeader (sbrHeaderData, - sbrBitstreamData, - cmonData); + payloadBits += encodeSbrHeader(sbrHeaderData, sbrBitstreamData, cmonData); /* write data */ - payloadBits += encodeSbrData (sbrEnvDataLeft, - sbrEnvDataRight, - hParametricStereo, - cmonData, - SBR_ID_CPE, - sbrHeaderData->coupling, - sbrSyntaxFlags); - + payloadBits += encodeSbrData(sbrEnvDataLeft, sbrEnvDataRight, + hParametricStereo, cmonData, SBR_ID_CPE, + sbrHeaderData->coupling, sbrSyntaxFlags); } return payloadBits; } -INT -FDKsbrEnc_CountSbrChannelPairElement (HANDLE_SBR_HEADER_DATA sbrHeaderData, - HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, - HANDLE_SBR_ENV_DATA sbrEnvDataLeft, - HANDLE_SBR_ENV_DATA sbrEnvDataRight, - HANDLE_COMMON_DATA cmonData, - UINT sbrSyntaxFlags) -{ +INT FDKsbrEnc_CountSbrChannelPairElement( + HANDLE_SBR_HEADER_DATA sbrHeaderData, + HANDLE_PARAMETRIC_STEREO hParametricStereo, + HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, + HANDLE_SBR_ENV_DATA sbrEnvDataLeft, HANDLE_SBR_ENV_DATA sbrEnvDataRight, + HANDLE_COMMON_DATA cmonData, UINT sbrSyntaxFlags) { INT payloadBits; INT bitPos = FDKgetValidBits(&cmonData->sbrBitbuf); - payloadBits = FDKsbrEnc_WriteEnvChannelPairElement(sbrHeaderData, - hParametricStereo, - sbrBitstreamData, - sbrEnvDataLeft, - sbrEnvDataRight, - cmonData, - sbrSyntaxFlags); + payloadBits = FDKsbrEnc_WriteEnvChannelPairElement( + sbrHeaderData, hParametricStereo, sbrBitstreamData, sbrEnvDataLeft, + sbrEnvDataRight, cmonData, sbrSyntaxFlags); - FDKpushBack(&cmonData->sbrBitbuf, (FDKgetValidBits(&cmonData->sbrBitbuf) - bitPos) ); + FDKpushBack(&cmonData->sbrBitbuf, + (FDKgetValidBits(&cmonData->sbrBitbuf) - bitPos)); return payloadBits; } +void sbrEncoder_GetHeader(SBR_ENCODER *sbrEncoder, HANDLE_FDK_BITSTREAM hBs, + INT element_index, int fSendHeaders) { + encodeSbrHeaderData(&sbrEncoder->sbrElement[element_index]->sbrHeaderData, + hBs); -void sbrEncoder_GetHeader(SBR_ENCODER *sbrEncoder, - HANDLE_FDK_BITSTREAM hBs, - INT element_index, - int fSendHeaders) -{ - encodeSbrHeaderData (&sbrEncoder->sbrElement[element_index]->sbrHeaderData, hBs); - if (fSendHeaders == 0) { /* Prevent header being embedded into the SBR payload. */ - sbrEncoder->sbrElement[element_index]->sbrBitstreamData.NrSendHeaderData = -1; + sbrEncoder->sbrElement[element_index]->sbrBitstreamData.NrSendHeaderData = + -1; sbrEncoder->sbrElement[element_index]->sbrBitstreamData.HeaderActive = 0; - sbrEncoder->sbrElement[element_index]->sbrBitstreamData.CountSendHeaderData = -1; + sbrEncoder->sbrElement[element_index] + ->sbrBitstreamData.CountSendHeaderData = -1; } } - /***************************************************************************** functionname: encodeSbrHeader @@ -303,20 +272,16 @@ void sbrEncoder_GetHeader(SBR_ENCODER *sbrEncoder, output: *****************************************************************************/ -static INT -encodeSbrHeader (HANDLE_SBR_HEADER_DATA sbrHeaderData, - HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, - HANDLE_COMMON_DATA cmonData) -{ +static INT encodeSbrHeader(HANDLE_SBR_HEADER_DATA sbrHeaderData, + HANDLE_SBR_BITSTREAM_DATA sbrBitstreamData, + HANDLE_COMMON_DATA cmonData) { INT payloadBits = 0; if (sbrBitstreamData->HeaderActive) { - payloadBits += FDKwriteBits (&cmonData->sbrBitbuf, 1, 1); - payloadBits += encodeSbrHeaderData (sbrHeaderData, - &cmonData->sbrBitbuf); - } - else { - payloadBits += FDKwriteBits (&cmonData->sbrBitbuf, 0, 1); + payloadBits += FDKwriteBits(&cmonData->sbrBitbuf, 1, 1); + payloadBits += encodeSbrHeaderData(sbrHeaderData, &cmonData->sbrBitbuf); + } else { + payloadBits += FDKwriteBits(&cmonData->sbrBitbuf, 0, 1); } cmonData->sbrHdrBits = payloadBits; @@ -324,8 +289,6 @@ encodeSbrHeader (HANDLE_SBR_HEADER_DATA sbrHeaderData, return payloadBits; } - - /***************************************************************************** functionname: encodeSbrHeaderData @@ -336,57 +299,54 @@ encodeSbrHeader (HANDLE_SBR_HEADER_DATA sbrHeaderData, output: *****************************************************************************/ -static INT -encodeSbrHeaderData (HANDLE_SBR_HEADER_DATA sbrHeaderData, - HANDLE_FDK_BITSTREAM hBitStream) +static INT encodeSbrHeaderData(HANDLE_SBR_HEADER_DATA sbrHeaderData, + HANDLE_FDK_BITSTREAM hBitStream) { INT payloadBits = 0; if (sbrHeaderData != NULL) { - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_amp_res, - SI_SBR_AMP_RES_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_start_frequency, - SI_SBR_START_FREQ_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_stop_frequency, - SI_SBR_STOP_FREQ_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_xover_band, - SI_SBR_XOVER_BAND_BITS); - - payloadBits += FDKwriteBits (hBitStream, 0, - SI_SBR_RESERVED_BITS); - - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->header_extra_1, - SI_SBR_HEADER_EXTRA_1_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->header_extra_2, - SI_SBR_HEADER_EXTRA_2_BITS); - + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_amp_res, + SI_SBR_AMP_RES_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_start_frequency, + SI_SBR_START_FREQ_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_stop_frequency, + SI_SBR_STOP_FREQ_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_xover_band, + SI_SBR_XOVER_BAND_BITS); + + payloadBits += FDKwriteBits(hBitStream, 0, SI_SBR_RESERVED_BITS); + + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->header_extra_1, + SI_SBR_HEADER_EXTRA_1_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->header_extra_2, + SI_SBR_HEADER_EXTRA_2_BITS); if (sbrHeaderData->header_extra_1) { - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->freqScale, - SI_SBR_FREQ_SCALE_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->alterScale, - SI_SBR_ALTER_SCALE_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_noise_bands, - SI_SBR_NOISE_BANDS_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->freqScale, + SI_SBR_FREQ_SCALE_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->alterScale, + SI_SBR_ALTER_SCALE_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_noise_bands, + SI_SBR_NOISE_BANDS_BITS); } /* sbrHeaderData->header_extra_1 */ if (sbrHeaderData->header_extra_2) { - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_limiter_bands, - SI_SBR_LIMITER_BANDS_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_limiter_gains, - SI_SBR_LIMITER_GAINS_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_interpol_freq, - SI_SBR_INTERPOL_FREQ_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrHeaderData->sbr_smoothing_length, - SI_SBR_SMOOTHING_LENGTH_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_limiter_bands, + SI_SBR_LIMITER_BANDS_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_limiter_gains, + SI_SBR_LIMITER_GAINS_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrHeaderData->sbr_interpol_freq, + SI_SBR_INTERPOL_FREQ_BITS); + payloadBits += + FDKwriteBits(hBitStream, sbrHeaderData->sbr_smoothing_length, + SI_SBR_SMOOTHING_LENGTH_BITS); } /* sbrHeaderData->header_extra_2 */ - } /* sbrHeaderData != NULL */ + } /* sbrHeaderData != NULL */ return payloadBits; } - /***************************************************************************** functionname: encodeSbrData @@ -396,27 +356,27 @@ encodeSbrHeaderData (HANDLE_SBR_HEADER_DATA sbrHeaderData, output: *****************************************************************************/ -static INT -encodeSbrData (HANDLE_SBR_ENV_DATA sbrEnvDataLeft, - HANDLE_SBR_ENV_DATA sbrEnvDataRight, - HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_COMMON_DATA cmonData, - SBR_ELEMENT_TYPE sbrElem, - INT coupling, - UINT sbrSyntaxFlags) -{ +static INT encodeSbrData(HANDLE_SBR_ENV_DATA sbrEnvDataLeft, + HANDLE_SBR_ENV_DATA sbrEnvDataRight, + HANDLE_PARAMETRIC_STEREO hParametricStereo, + HANDLE_COMMON_DATA cmonData, SBR_ELEMENT_TYPE sbrElem, + INT coupling, UINT sbrSyntaxFlags) { INT payloadBits = 0; switch (sbrElem) { - case SBR_ID_SCE: - payloadBits += encodeSbrSingleChannelElement (sbrEnvDataLeft, &cmonData->sbrBitbuf, hParametricStereo, sbrSyntaxFlags); - break; - case SBR_ID_CPE: - payloadBits += encodeSbrChannelPairElement (sbrEnvDataLeft, sbrEnvDataRight, hParametricStereo, &cmonData->sbrBitbuf, coupling); - break; - default: - /* we never should apply SBR to any other element type */ - FDK_ASSERT (0); + case SBR_ID_SCE: + payloadBits += + encodeSbrSingleChannelElement(sbrEnvDataLeft, &cmonData->sbrBitbuf, + hParametricStereo, sbrSyntaxFlags); + break; + case SBR_ID_CPE: + payloadBits += encodeSbrChannelPairElement( + sbrEnvDataLeft, sbrEnvDataRight, hParametricStereo, + &cmonData->sbrBitbuf, coupling, sbrSyntaxFlags); + break; + default: + /* we never should apply SBR to any other element type */ + FDK_ASSERT(0); } cmonData->sbrDataBits = payloadBits; @@ -424,13 +384,10 @@ encodeSbrData (HANDLE_SBR_ENV_DATA sbrEnvDataLeft, return payloadBits; } -#define MODE_FREQ_TANS 1 -#define MODE_NO_FREQ_TRAN 0 -#define LD_TRANSMISSION MODE_FREQ_TANS -static int encodeFreqs (int mode) { - return ((mode & MODE_FREQ_TANS) ? 1 : 0); -} - +#define MODE_FREQ_TANS 1 +#define MODE_NO_FREQ_TRAN 0 +#define LD_TRANSMISSION MODE_FREQ_TANS +static int encodeFreqs(int mode) { return ((mode & MODE_FREQ_TANS) ? 1 : 0); } /***************************************************************************** @@ -441,51 +398,47 @@ static int encodeFreqs (int mode) { output: *****************************************************************************/ -static INT -encodeSbrSingleChannelElement (HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream - ,HANDLE_PARAMETRIC_STEREO hParametricStereo - ,UINT sbrSyntaxFlags - ) -{ +static INT encodeSbrSingleChannelElement( + HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream, + HANDLE_PARAMETRIC_STEREO hParametricStereo, const UINT sbrSyntaxFlags) { INT i, payloadBits = 0; - payloadBits += FDKwriteBits (hBitStream, 0, SI_SBR_DATA_EXTRA_BITS); /* no reserved bits */ + payloadBits += FDKwriteBits(hBitStream, 0, + SI_SBR_DATA_EXTRA_BITS); /* no reserved bits */ if (sbrEnvData->ldGrid) { - if ( sbrEnvData->hSbrBSGrid->frameClass != FIXFIXonly ) { - /* encode normal SbrGrid */ - payloadBits += encodeSbrGrid (sbrEnvData, hBitStream); - } else { - /* use FIXFIXonly frame Grid */ - payloadBits += encodeLowDelaySbrGrid ( sbrEnvData, hBitStream, encodeFreqs(LD_TRANSMISSION)); - } - } - else - { + if (sbrEnvData->hSbrBSGrid->frameClass != FIXFIXonly) { + /* encode normal SbrGrid */ + payloadBits += encodeSbrGrid(sbrEnvData, hBitStream); + } else { + /* use FIXFIXonly frame Grid */ + payloadBits += encodeLowDelaySbrGrid( + sbrEnvData, hBitStream, encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags); + } + } else { if (sbrSyntaxFlags & SBR_SYNTAX_SCALABLE) { - payloadBits += FDKwriteBits (hBitStream, 1, SI_SBR_COUPLING_BITS); + payloadBits += FDKwriteBits(hBitStream, 1, SI_SBR_COUPLING_BITS); } - payloadBits += encodeSbrGrid (sbrEnvData, hBitStream); + payloadBits += encodeSbrGrid(sbrEnvData, hBitStream); } - payloadBits += encodeSbrDtdf (sbrEnvData, hBitStream); + payloadBits += encodeSbrDtdf(sbrEnvData, hBitStream); for (i = 0; i < sbrEnvData->noOfnoisebands; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->sbr_invf_mode_vec[i], SI_SBR_INVF_MODE_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->sbr_invf_mode_vec[i], + SI_SBR_INVF_MODE_BITS); } - payloadBits += writeEnvelopeData (sbrEnvData, hBitStream, 0); - payloadBits += writeNoiseLevelData (sbrEnvData, hBitStream, 0); + payloadBits += writeEnvelopeData(sbrEnvData, hBitStream, 0); + payloadBits += writeNoiseLevelData(sbrEnvData, hBitStream, 0); - payloadBits += writeSyntheticCodingData (sbrEnvData,hBitStream); + payloadBits += writeSyntheticCodingData(sbrEnvData, hBitStream); payloadBits += encodeExtendedData(hParametricStereo, hBitStream); return payloadBits; } - /***************************************************************************** functionname: encodeSbrChannelPairElement @@ -495,97 +448,104 @@ encodeSbrSingleChannelElement (HANDLE_SBR_ENV_DATA sbrEnvData, output: *****************************************************************************/ -static INT -encodeSbrChannelPairElement (HANDLE_SBR_ENV_DATA sbrEnvDataLeft, - HANDLE_SBR_ENV_DATA sbrEnvDataRight, - HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_FDK_BITSTREAM hBitStream, - INT coupling) -{ +static INT encodeSbrChannelPairElement( + HANDLE_SBR_ENV_DATA sbrEnvDataLeft, HANDLE_SBR_ENV_DATA sbrEnvDataRight, + HANDLE_PARAMETRIC_STEREO hParametricStereo, HANDLE_FDK_BITSTREAM hBitStream, + const INT coupling, const UINT sbrSyntaxFlags) { INT payloadBits = 0; INT i = 0; - payloadBits += FDKwriteBits (hBitStream, 0, SI_SBR_DATA_EXTRA_BITS); /* no reserved bits */ + payloadBits += FDKwriteBits(hBitStream, 0, + SI_SBR_DATA_EXTRA_BITS); /* no reserved bits */ - payloadBits += FDKwriteBits (hBitStream, coupling, SI_SBR_COUPLING_BITS); + payloadBits += FDKwriteBits(hBitStream, coupling, SI_SBR_COUPLING_BITS); if (coupling) { if (sbrEnvDataLeft->ldGrid) { - if ( sbrEnvDataLeft->hSbrBSGrid->frameClass != FIXFIXonly ) { - /* normal SbrGrid */ - payloadBits += encodeSbrGrid (sbrEnvDataLeft, hBitStream); + if (sbrEnvDataLeft->hSbrBSGrid->frameClass != FIXFIXonly) { + /* normal SbrGrid */ + payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream); - } else { - /* FIXFIXonly frame Grid */ - payloadBits += encodeLowDelaySbrGrid ( sbrEnvDataLeft, hBitStream, encodeFreqs(LD_TRANSMISSION)); - } + } else { + /* FIXFIXonly frame Grid */ + payloadBits += + encodeLowDelaySbrGrid(sbrEnvDataLeft, hBitStream, + encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags); + } } else - payloadBits += encodeSbrGrid (sbrEnvDataLeft, hBitStream); + payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream); - payloadBits += encodeSbrDtdf (sbrEnvDataLeft, hBitStream); - payloadBits += encodeSbrDtdf (sbrEnvDataRight, hBitStream); + payloadBits += encodeSbrDtdf(sbrEnvDataLeft, hBitStream); + payloadBits += encodeSbrDtdf(sbrEnvDataRight, hBitStream); for (i = 0; i < sbrEnvDataLeft->noOfnoisebands; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i], SI_SBR_INVF_MODE_BITS); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i], + SI_SBR_INVF_MODE_BITS); } - payloadBits += writeEnvelopeData (sbrEnvDataLeft, hBitStream,1); - payloadBits += writeNoiseLevelData (sbrEnvDataLeft, hBitStream,1); - payloadBits += writeEnvelopeData (sbrEnvDataRight, hBitStream,1); - payloadBits += writeNoiseLevelData (sbrEnvDataRight, hBitStream,1); + payloadBits += writeEnvelopeData(sbrEnvDataLeft, hBitStream, 1); + payloadBits += writeNoiseLevelData(sbrEnvDataLeft, hBitStream, 1); + payloadBits += writeEnvelopeData(sbrEnvDataRight, hBitStream, 1); + payloadBits += writeNoiseLevelData(sbrEnvDataRight, hBitStream, 1); - payloadBits += writeSyntheticCodingData (sbrEnvDataLeft,hBitStream); - payloadBits += writeSyntheticCodingData (sbrEnvDataRight,hBitStream); + payloadBits += writeSyntheticCodingData(sbrEnvDataLeft, hBitStream); + payloadBits += writeSyntheticCodingData(sbrEnvDataRight, hBitStream); } else { /* no coupling */ FDK_ASSERT(sbrEnvDataLeft->ldGrid == sbrEnvDataRight->ldGrid); if (sbrEnvDataLeft->ldGrid || sbrEnvDataRight->ldGrid) { - /* sbrEnvDataLeft (left channel) */ - if ( sbrEnvDataLeft->hSbrBSGrid->frameClass != FIXFIXonly) { + /* sbrEnvDataLeft (left channel) */ + if (sbrEnvDataLeft->hSbrBSGrid->frameClass != FIXFIXonly) { /* no FIXFIXonly Frame so we dont need encodeLowDelaySbrGrid */ /* normal SbrGrid */ - payloadBits += encodeSbrGrid (sbrEnvDataLeft, hBitStream); + payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream); } else { /* FIXFIXonly frame Grid */ - payloadBits += encodeLowDelaySbrGrid ( sbrEnvDataLeft, hBitStream, encodeFreqs(LD_TRANSMISSION)); + payloadBits += + encodeLowDelaySbrGrid(sbrEnvDataLeft, hBitStream, + encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags); } /* sbrEnvDataRight (right channel) */ - if ( sbrEnvDataRight->hSbrBSGrid->frameClass != FIXFIXonly) { + if (sbrEnvDataRight->hSbrBSGrid->frameClass != FIXFIXonly) { /* no FIXFIXonly Frame so we dont need encodeLowDelaySbrGrid */ /* normal SbrGrid */ - payloadBits += encodeSbrGrid (sbrEnvDataRight, hBitStream); + payloadBits += encodeSbrGrid(sbrEnvDataRight, hBitStream); } else { /* FIXFIXonly frame Grid */ - payloadBits += encodeLowDelaySbrGrid ( sbrEnvDataRight, hBitStream, encodeFreqs(LD_TRANSMISSION)); + payloadBits += + encodeLowDelaySbrGrid(sbrEnvDataRight, hBitStream, + encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags); } - } else - { - payloadBits += encodeSbrGrid (sbrEnvDataLeft, hBitStream); - payloadBits += encodeSbrGrid (sbrEnvDataRight, hBitStream); + } else { + payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream); + payloadBits += encodeSbrGrid(sbrEnvDataRight, hBitStream); } - payloadBits += encodeSbrDtdf (sbrEnvDataLeft, hBitStream); - payloadBits += encodeSbrDtdf (sbrEnvDataRight, hBitStream); + payloadBits += encodeSbrDtdf(sbrEnvDataLeft, hBitStream); + payloadBits += encodeSbrDtdf(sbrEnvDataRight, hBitStream); for (i = 0; i < sbrEnvDataLeft->noOfnoisebands; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i], - SI_SBR_INVF_MODE_BITS); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i], + SI_SBR_INVF_MODE_BITS); } for (i = 0; i < sbrEnvDataRight->noOfnoisebands; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvDataRight->sbr_invf_mode_vec[i], - SI_SBR_INVF_MODE_BITS); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvDataRight->sbr_invf_mode_vec[i], + SI_SBR_INVF_MODE_BITS); } - payloadBits += writeEnvelopeData (sbrEnvDataLeft, hBitStream,0); - payloadBits += writeEnvelopeData (sbrEnvDataRight, hBitStream,0); - payloadBits += writeNoiseLevelData (sbrEnvDataLeft, hBitStream,0); - payloadBits += writeNoiseLevelData (sbrEnvDataRight, hBitStream,0); + payloadBits += writeEnvelopeData(sbrEnvDataLeft, hBitStream, 0); + payloadBits += writeEnvelopeData(sbrEnvDataRight, hBitStream, 0); + payloadBits += writeNoiseLevelData(sbrEnvDataLeft, hBitStream, 0); + payloadBits += writeNoiseLevelData(sbrEnvDataRight, hBitStream, 0); - payloadBits += writeSyntheticCodingData (sbrEnvDataLeft,hBitStream); - payloadBits += writeSyntheticCodingData (sbrEnvDataRight,hBitStream); + payloadBits += writeSyntheticCodingData(sbrEnvDataLeft, hBitStream); + payloadBits += writeSyntheticCodingData(sbrEnvDataRight, hBitStream); } /* coupling */ @@ -594,14 +554,13 @@ encodeSbrChannelPairElement (HANDLE_SBR_ENV_DATA sbrEnvDataLeft, return payloadBits; } -static INT ceil_ln2(INT x) -{ - INT tmp=-1; - while((1<<++tmp) < x); - return(tmp); +static INT ceil_ln2(INT x) { + INT tmp = -1; + while ((1 << ++tmp) < x) + ; + return (tmp); } - /***************************************************************************** functionname: encodeSbrGrid @@ -612,91 +571,95 @@ static INT ceil_ln2(INT x) output: *****************************************************************************/ -static INT -encodeSbrGrid (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream) -{ +static INT encodeSbrGrid(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream) { INT payloadBits = 0; INT i, temp; INT bufferFrameStart = sbrEnvData->hSbrBSGrid->bufferFrameStart; - INT numberTimeSlots = sbrEnvData->hSbrBSGrid->numberTimeSlots; + INT numberTimeSlots = sbrEnvData->hSbrBSGrid->numberTimeSlots; if (sbrEnvData->ldGrid) - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hSbrBSGrid->frameClass, - SBR_CLA_BITS_LD); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->frameClass, + SBR_CLA_BITS_LD); else - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hSbrBSGrid->frameClass, - SBR_CLA_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->frameClass, + SBR_CLA_BITS); switch (sbrEnvData->hSbrBSGrid->frameClass) { - case FIXFIXonly: - FDK_ASSERT(0 /* Fatal error in encodeSbrGrid! */); - break; - case FIXFIX: - temp = ceil_ln2(sbrEnvData->hSbrBSGrid->bs_num_env); - payloadBits += FDKwriteBits (hBitStream, temp, SBR_ENV_BITS); - if ((sbrEnvData->ldGrid) && (sbrEnvData->hSbrBSGrid->bs_num_env==1)) - payloadBits += FDKwriteBits(hBitStream, sbrEnvData->currentAmpResFF, SI_SBR_AMP_RES_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->v_f[0], SBR_RES_BITS); - - break; - - case FIXVAR: - case VARFIX: - if (sbrEnvData->hSbrBSGrid->frameClass == FIXVAR) - temp = sbrEnvData->hSbrBSGrid->bs_abs_bord - (bufferFrameStart + numberTimeSlots); - else - temp = sbrEnvData->hSbrBSGrid->bs_abs_bord - bufferFrameStart; - - payloadBits += FDKwriteBits (hBitStream, temp, SBR_ABS_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->n, SBR_NUM_BITS); - - for (i = 0; i < sbrEnvData->hSbrBSGrid->n; i++) { - temp = (sbrEnvData->hSbrBSGrid->bs_rel_bord[i] - 2) >> 1; - payloadBits += FDKwriteBits (hBitStream, temp, SBR_REL_BITS); - } + case FIXFIXonly: + FDK_ASSERT(0 /* Fatal error in encodeSbrGrid! */); + break; + case FIXFIX: + temp = ceil_ln2(sbrEnvData->hSbrBSGrid->bs_num_env); + payloadBits += FDKwriteBits(hBitStream, temp, SBR_ENV_BITS); + if ((sbrEnvData->ldGrid) && (sbrEnvData->hSbrBSGrid->bs_num_env == 1)) + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->currentAmpResFF, + SI_SBR_AMP_RES_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->v_f[0], + SBR_RES_BITS); - temp = ceil_ln2(sbrEnvData->hSbrBSGrid->n + 2); - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->p, temp); + break; - for (i = 0; i < sbrEnvData->hSbrBSGrid->n + 1; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->v_f[i], - SBR_RES_BITS); - } - break; + case FIXVAR: + case VARFIX: + if (sbrEnvData->hSbrBSGrid->frameClass == FIXVAR) + temp = sbrEnvData->hSbrBSGrid->bs_abs_bord - + (bufferFrameStart + numberTimeSlots); + else + temp = sbrEnvData->hSbrBSGrid->bs_abs_bord - bufferFrameStart; + + payloadBits += FDKwriteBits(hBitStream, temp, SBR_ABS_BITS); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->n, SBR_NUM_BITS); + + for (i = 0; i < sbrEnvData->hSbrBSGrid->n; i++) { + temp = (sbrEnvData->hSbrBSGrid->bs_rel_bord[i] - 2) >> 1; + payloadBits += FDKwriteBits(hBitStream, temp, SBR_REL_BITS); + } - case VARVAR: - temp = sbrEnvData->hSbrBSGrid->bs_abs_bord_0 - bufferFrameStart; - payloadBits += FDKwriteBits (hBitStream, temp, SBR_ABS_BITS); - temp = sbrEnvData->hSbrBSGrid->bs_abs_bord_1 - (bufferFrameStart + numberTimeSlots); - payloadBits += FDKwriteBits (hBitStream, temp, SBR_ABS_BITS); + temp = ceil_ln2(sbrEnvData->hSbrBSGrid->n + 2); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->p, temp); - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->bs_num_rel_0, SBR_NUM_BITS); - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->bs_num_rel_1, SBR_NUM_BITS); + for (i = 0; i < sbrEnvData->hSbrBSGrid->n + 1; i++) { + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->v_f[i], + SBR_RES_BITS); + } + break; - for (i = 0; i < sbrEnvData->hSbrBSGrid->bs_num_rel_0; i++) { - temp = (sbrEnvData->hSbrBSGrid->bs_rel_bord_0[i] - 2) >> 1; - payloadBits += FDKwriteBits (hBitStream, temp, SBR_REL_BITS); - } + case VARVAR: + temp = sbrEnvData->hSbrBSGrid->bs_abs_bord_0 - bufferFrameStart; + payloadBits += FDKwriteBits(hBitStream, temp, SBR_ABS_BITS); + temp = sbrEnvData->hSbrBSGrid->bs_abs_bord_1 - + (bufferFrameStart + numberTimeSlots); + payloadBits += FDKwriteBits(hBitStream, temp, SBR_ABS_BITS); + + payloadBits += FDKwriteBits( + hBitStream, sbrEnvData->hSbrBSGrid->bs_num_rel_0, SBR_NUM_BITS); + payloadBits += FDKwriteBits( + hBitStream, sbrEnvData->hSbrBSGrid->bs_num_rel_1, SBR_NUM_BITS); + + for (i = 0; i < sbrEnvData->hSbrBSGrid->bs_num_rel_0; i++) { + temp = (sbrEnvData->hSbrBSGrid->bs_rel_bord_0[i] - 2) >> 1; + payloadBits += FDKwriteBits(hBitStream, temp, SBR_REL_BITS); + } - for (i = 0; i < sbrEnvData->hSbrBSGrid->bs_num_rel_1; i++) { - temp = (sbrEnvData->hSbrBSGrid->bs_rel_bord_1[i] - 2) >> 1; - payloadBits += FDKwriteBits (hBitStream, temp, SBR_REL_BITS); - } + for (i = 0; i < sbrEnvData->hSbrBSGrid->bs_num_rel_1; i++) { + temp = (sbrEnvData->hSbrBSGrid->bs_rel_bord_1[i] - 2) >> 1; + payloadBits += FDKwriteBits(hBitStream, temp, SBR_REL_BITS); + } - temp = ceil_ln2(sbrEnvData->hSbrBSGrid->bs_num_rel_0 + - sbrEnvData->hSbrBSGrid->bs_num_rel_1 + 2); - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->p, temp); + temp = ceil_ln2(sbrEnvData->hSbrBSGrid->bs_num_rel_0 + + sbrEnvData->hSbrBSGrid->bs_num_rel_1 + 2); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->p, temp); - temp = sbrEnvData->hSbrBSGrid->bs_num_rel_0 + - sbrEnvData->hSbrBSGrid->bs_num_rel_1 + 1; + temp = sbrEnvData->hSbrBSGrid->bs_num_rel_0 + + sbrEnvData->hSbrBSGrid->bs_num_rel_1 + 1; - for (i = 0; i < temp; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->v_fLR[i], - SBR_RES_BITS); - } - break; + for (i = 0; i < temp; i++) { + payloadBits += FDKwriteBits( + hBitStream, sbrEnvData->hSbrBSGrid->v_fLR[i], SBR_RES_BITS); + } + break; } return payloadBits; @@ -715,12 +678,10 @@ encodeSbrGrid (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream) output: *****************************************************************************/ -static int -encodeLowDelaySbrGrid ( HANDLE_SBR_ENV_DATA sbrEnvData, - HANDLE_FDK_BITSTREAM hBitStream, - int transmitFreqs - ) -{ +static int encodeLowDelaySbrGrid(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream, + const int transmitFreqs, + const UINT sbrSyntaxFlags) { int payloadBits = 0; int i; @@ -728,21 +689,25 @@ encodeLowDelaySbrGrid ( HANDLE_SBR_ENV_DATA sbrEnvData, /* write frameClass [1 bit] for FIXFIXonly Grid */ payloadBits += FDKwriteBits(hBitStream, 1, SBR_CLA_BITS_LD); - /* absolute Borders are fix: 0,X,X,X,nTimeSlots; so we dont have to transmit them */ + /* absolute Borders are fix: 0,X,X,X,nTimeSlots; so we dont have to transmit + * them */ /* only transmit the transient position! */ /* with this info (b1) we can reconstruct the Frame on Decoder side : */ /* border[0] = 0; border[1] = b1; border[2]=b1+2; border[3] = nrTimeSlots */ /* use 3 or 4bits for transient border (border) */ if (sbrEnvData->hSbrBSGrid->numberTimeSlots == 8) - payloadBits += FDKwriteBits ( hBitStream, sbrEnvData->hSbrBSGrid->bs_abs_bord, 3); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->bs_abs_bord, 3); else - payloadBits += FDKwriteBits ( hBitStream, sbrEnvData->hSbrBSGrid->bs_abs_bord, 4); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->bs_abs_bord, 4); if (transmitFreqs) { /* write FreqRes grid */ for (i = 0; i < sbrEnvData->hSbrBSGrid->bs_num_env; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->hSbrBSGrid->v_f[i], SBR_RES_BITS); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->hSbrBSGrid->v_f[i], + SBR_RES_BITS); } } @@ -752,30 +717,28 @@ encodeLowDelaySbrGrid ( HANDLE_SBR_ENV_DATA sbrEnvData, /***************************************************************************** functionname: encodeSbrDtdf - description: writes bits that describes the direction of the envelopes of a frame - returns: number of bits written - input: - output: + description: writes bits that describes the direction of the envelopes of a +frame returns: number of bits written input: output: *****************************************************************************/ -static INT -encodeSbrDtdf (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream) -{ +static INT encodeSbrDtdf(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream) { INT i, payloadBits = 0, noOfNoiseEnvelopes; noOfNoiseEnvelopes = sbrEnvData->noOfEnvelopes > 1 ? 2 : 1; for (i = 0; i < sbrEnvData->noOfEnvelopes; ++i) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->domain_vec[i], SBR_DIR_BITS); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvData->domain_vec[i], SBR_DIR_BITS); } for (i = 0; i < noOfNoiseEnvelopes; ++i) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->domain_vec_noise[i], SBR_DIR_BITS); + payloadBits += + FDKwriteBits(hBitStream, sbrEnvData->domain_vec_noise[i], SBR_DIR_BITS); } return payloadBits; } - /***************************************************************************** functionname: writeNoiseLevelData @@ -785,87 +748,101 @@ encodeSbrDtdf (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream) output: *****************************************************************************/ -static INT -writeNoiseLevelData (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream, INT coupling) -{ +static INT writeNoiseLevelData(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream, INT coupling) { INT j, i, payloadBits = 0; INT nNoiseEnvelopes = sbrEnvData->noOfEnvelopes > 1 ? 2 : 1; for (i = 0; i < nNoiseEnvelopes; i++) { switch (sbrEnvData->domain_vec_noise[i]) { - case FREQ: - if (coupling && sbrEnvData->balance) { - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->sbr_noise_levels[i * sbrEnvData->noOfnoisebands], - sbrEnvData->si_sbr_start_noise_bits_balance); - } else { - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->sbr_noise_levels[i * sbrEnvData->noOfnoisebands], - sbrEnvData->si_sbr_start_noise_bits); - } + case FREQ: + if (coupling && sbrEnvData->balance) { + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData->sbr_noise_levels[i * sbrEnvData->noOfnoisebands], + sbrEnvData->si_sbr_start_noise_bits_balance); + } else { + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData->sbr_noise_levels[i * sbrEnvData->noOfnoisebands], + sbrEnvData->si_sbr_start_noise_bits); + } - for (j = 1 + i * sbrEnvData->noOfnoisebands; j < (sbrEnvData->noOfnoisebands * (1 + i)); j++) { - if (coupling) { - if (sbrEnvData->balance) { - /* coupling && balance */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableNoiseBalanceFreqC[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV_BALANCE11], - sbrEnvData->hufftableNoiseBalanceFreqL[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV_BALANCE11]); + for (j = 1 + i * sbrEnvData->noOfnoisebands; + j < (sbrEnvData->noOfnoisebands * (1 + i)); j++) { + if (coupling) { + if (sbrEnvData->balance) { + /* coupling && balance */ + payloadBits += FDKwriteBits(hBitStream, + sbrEnvData->hufftableNoiseBalanceFreqC + [sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV_BALANCE11], + sbrEnvData->hufftableNoiseBalanceFreqL + [sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV_BALANCE11]); + } else { + /* coupling && !balance */ + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData->hufftableNoiseLevelFreqC + [sbrEnvData->sbr_noise_levels[j] + CODE_BOOK_SCF_LAV11], + sbrEnvData->hufftableNoiseLevelFreqL + [sbrEnvData->sbr_noise_levels[j] + CODE_BOOK_SCF_LAV11]); + } } else { - /* coupling && !balance */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableNoiseLevelFreqC[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11], - sbrEnvData->hufftableNoiseLevelFreqL[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11]); + /* !coupling */ + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData + ->hufftableNoiseFreqC[sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV11], + sbrEnvData + ->hufftableNoiseFreqL[sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV11]); } - } else { - /* !coupling */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableNoiseFreqC[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11], - sbrEnvData->hufftableNoiseFreqL[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11]); } - } - break; - - case TIME: - for (j = i * sbrEnvData->noOfnoisebands; j < (sbrEnvData->noOfnoisebands * (1 + i)); j++) { - if (coupling) { - if (sbrEnvData->balance) { - /* coupling && balance */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableNoiseBalanceTimeC[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV_BALANCE11], - sbrEnvData->hufftableNoiseBalanceTimeL[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV_BALANCE11]); + break; + + case TIME: + for (j = i * sbrEnvData->noOfnoisebands; + j < (sbrEnvData->noOfnoisebands * (1 + i)); j++) { + if (coupling) { + if (sbrEnvData->balance) { + /* coupling && balance */ + payloadBits += FDKwriteBits(hBitStream, + sbrEnvData->hufftableNoiseBalanceTimeC + [sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV_BALANCE11], + sbrEnvData->hufftableNoiseBalanceTimeL + [sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV_BALANCE11]); + } else { + /* coupling && !balance */ + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData->hufftableNoiseLevelTimeC + [sbrEnvData->sbr_noise_levels[j] + CODE_BOOK_SCF_LAV11], + sbrEnvData->hufftableNoiseLevelTimeL + [sbrEnvData->sbr_noise_levels[j] + CODE_BOOK_SCF_LAV11]); + } } else { - /* coupling && !balance */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableNoiseLevelTimeC[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11], - sbrEnvData->hufftableNoiseLevelTimeL[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11]); + /* !coupling */ + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData + ->hufftableNoiseLevelTimeC[sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV11], + sbrEnvData + ->hufftableNoiseLevelTimeL[sbrEnvData->sbr_noise_levels[j] + + CODE_BOOK_SCF_LAV11]); } - } else { - /* !coupling */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableNoiseLevelTimeC[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11], - sbrEnvData->hufftableNoiseLevelTimeL[sbrEnvData->sbr_noise_levels[j] + - CODE_BOOK_SCF_LAV11]); } - } - break; + break; } } return payloadBits; } - /***************************************************************************** functionname: writeEnvelopeData @@ -875,64 +852,85 @@ writeNoiseLevelData (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitSt output: *****************************************************************************/ -static INT -writeEnvelopeData (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream, INT coupling) -{ +static INT writeEnvelopeData(HANDLE_SBR_ENV_DATA sbrEnvData, + HANDLE_FDK_BITSTREAM hBitStream, INT coupling) { INT payloadBits = 0, j, i, delta; - for (j = 0; j < sbrEnvData->noOfEnvelopes; j++) { /* loop over all envelopes */ + for (j = 0; j < sbrEnvData->noOfEnvelopes; + j++) { /* loop over all envelopes */ if (sbrEnvData->domain_vec[j] == FREQ) { if (coupling && sbrEnvData->balance) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->ienvelope[j][0], sbrEnvData->si_sbr_start_env_bits_balance); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->ienvelope[j][0], + sbrEnvData->si_sbr_start_env_bits_balance); } else { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->ienvelope[j][0], sbrEnvData->si_sbr_start_env_bits); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->ienvelope[j][0], + sbrEnvData->si_sbr_start_env_bits); } } - for (i = 1 - sbrEnvData->domain_vec[j]; i < sbrEnvData->noScfBands[j]; i++) { + for (i = 1 - sbrEnvData->domain_vec[j]; i < sbrEnvData->noScfBands[j]; + i++) { delta = sbrEnvData->ienvelope[j][i]; if (coupling && sbrEnvData->balance) { - FDK_ASSERT (fixp_abs (delta) <= sbrEnvData->codeBookScfLavBalance); + FDK_ASSERT(fixp_abs(delta) <= sbrEnvData->codeBookScfLavBalance); } else { - FDK_ASSERT (fixp_abs (delta) <= sbrEnvData->codeBookScfLav); + FDK_ASSERT(fixp_abs(delta) <= sbrEnvData->codeBookScfLav); } if (coupling) { if (sbrEnvData->balance) { if (sbrEnvData->domain_vec[j]) { /* coupling && balance && TIME */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableBalanceTimeC[delta + sbrEnvData->codeBookScfLavBalance], - sbrEnvData->hufftableBalanceTimeL[delta + sbrEnvData->codeBookScfLavBalance]); + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData + ->hufftableBalanceTimeC[delta + + sbrEnvData->codeBookScfLavBalance], + sbrEnvData + ->hufftableBalanceTimeL[delta + + sbrEnvData->codeBookScfLavBalance]); } else { /* coupling && balance && FREQ */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableBalanceFreqC[delta + sbrEnvData->codeBookScfLavBalance], - sbrEnvData->hufftableBalanceFreqL[delta + sbrEnvData->codeBookScfLavBalance]); + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData + ->hufftableBalanceFreqC[delta + + sbrEnvData->codeBookScfLavBalance], + sbrEnvData + ->hufftableBalanceFreqL[delta + + sbrEnvData->codeBookScfLavBalance]); } } else { if (sbrEnvData->domain_vec[j]) { /* coupling && !balance && TIME */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableLevelTimeC[delta + sbrEnvData->codeBookScfLav], - sbrEnvData->hufftableLevelTimeL[delta + sbrEnvData->codeBookScfLav]); + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData + ->hufftableLevelTimeC[delta + sbrEnvData->codeBookScfLav], + sbrEnvData + ->hufftableLevelTimeL[delta + sbrEnvData->codeBookScfLav]); } else { /* coupling && !balance && FREQ */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableLevelFreqC[delta + sbrEnvData->codeBookScfLav], - sbrEnvData->hufftableLevelFreqL[delta + sbrEnvData->codeBookScfLav]); + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData + ->hufftableLevelFreqC[delta + sbrEnvData->codeBookScfLav], + sbrEnvData + ->hufftableLevelFreqL[delta + sbrEnvData->codeBookScfLav]); } } } else { if (sbrEnvData->domain_vec[j]) { /* !coupling && TIME */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableTimeC[delta + sbrEnvData->codeBookScfLav], - sbrEnvData->hufftableTimeL[delta + sbrEnvData->codeBookScfLav]); + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData->hufftableTimeC[delta + sbrEnvData->codeBookScfLav], + sbrEnvData->hufftableTimeL[delta + sbrEnvData->codeBookScfLav]); } else { /* !coupling && FREQ */ - payloadBits += FDKwriteBits (hBitStream, - sbrEnvData->hufftableFreqC[delta + sbrEnvData->codeBookScfLav], - sbrEnvData->hufftableFreqL[delta + sbrEnvData->codeBookScfLav]); + payloadBits += FDKwriteBits( + hBitStream, + sbrEnvData->hufftableFreqC[delta + sbrEnvData->codeBookScfLav], + sbrEnvData->hufftableFreqL[delta + sbrEnvData->codeBookScfLav]); } } } @@ -940,7 +938,6 @@ writeEnvelopeData (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStre return payloadBits; } - /***************************************************************************** functionname: encodeExtendedData @@ -950,49 +947,51 @@ writeEnvelopeData (HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStre output: *****************************************************************************/ -static INT encodeExtendedData (HANDLE_PARAMETRIC_STEREO hParametricStereo, - HANDLE_FDK_BITSTREAM hBitStream) -{ +static INT encodeExtendedData(HANDLE_PARAMETRIC_STEREO hParametricStereo, + HANDLE_FDK_BITSTREAM hBitStream) { INT extDataSize; INT payloadBits = 0; extDataSize = getSbrExtendedDataSize(hParametricStereo); - if (extDataSize != 0) { - INT maxExtSize = (1<addHarmonicFlag, 1); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->addHarmonicFlag, 1); if (sbrEnvData->addHarmonicFlag) { for (i = 0; i < sbrEnvData->noHarmonics; i++) { - payloadBits += FDKwriteBits (hBitStream, sbrEnvData->addHarmonic[i], 1); + payloadBits += FDKwriteBits(hBitStream, sbrEnvData->addHarmonic[i], 1); } } @@ -1031,9 +1030,7 @@ static INT writeSyntheticCodingData (HANDLE_SBR_ENV_DATA sbrEnvData, output: *****************************************************************************/ -static INT -getSbrExtendedDataSize (HANDLE_PARAMETRIC_STEREO hParametricStereo) -{ +static INT getSbrExtendedDataSize(HANDLE_PARAMETRIC_STEREO hParametricStereo) { INT extDataBits = 0; /* add your new extended data counting methods here */ @@ -1042,16 +1039,11 @@ getSbrExtendedDataSize (HANDLE_PARAMETRIC_STEREO hParametricStereo) no extended data */ - if(hParametricStereo){ + if (hParametricStereo) { /* PS extended data */ extDataBits += SI_SBR_EXTENSION_ID_BITS; extDataBits += FDKsbrEnc_PSEnc_WritePSData(hParametricStereo, NULL); } - return (extDataBits+7) >> 3; + return (extDataBits + 7) >> 3; } - - - - - -- cgit v1.2.3