Commit 5c974270 authored by Vidhya V P's avatar Vidhya V P
Browse files

Cleaned up few switches

parent 9730dd97
Loading
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -201,13 +201,7 @@
#define SPLIT_REND_IVAS_DEC_HT_TR

/*CLDFB CODEC SWITCHES -- START*/
#define ENABLE_MS_PRED
#define BUG_FIX_03_15_23_INIT_GROUPING
#define FORCE_GROUPS_OF_2
#define USE_BIT_COUNT_MERGE_COST
#define OPTIMIZE_DPCM_QUANT
#define SPLIT_REND_PLC
#define ROM_TO_RAM                                      /* switch to convert CQMF decoder tables to RAM */
/*CLDFB CODEC SWITCHES -- END*/

#define SPLIT_REND_CLANG_SAN_FIX
+11 −47
Original line number Diff line number Diff line
@@ -48,9 +48,7 @@ Nations Convention on Contracts on the International Sales of Goods.
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#ifdef ENABLE_MS_PRED
#include "ivas_MSPred.h"
#endif
#include "ivas_PredDecoder.h"
#include "ivas_prot_rend.h"
#include "wmc_auto.h"
@@ -88,10 +86,8 @@ struct CQMF_DECODER
    uint32_t ( *c_apauiHuffDecTable_RAM[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE];
    uint32_t num_decode_table[2 * ALLOC_TABLE_SIZE];
#endif
#ifdef ENABLE_MS_PRED
    int32_t piMSPredCoefs[MAX_BANDS];
    int32_t piLRPhaseDiffs[MAX_BANDS];
#endif
#ifdef ENABLE_PMOD_ADJUST
    int32_t **ppiHiSMRFlags;
#endif
@@ -374,13 +370,11 @@ CQMFDecoder *CreateCQMFDecoder( const int32_t iSampleRate,
    psCQMFDecoder->iMSMode = 0;
    psCQMFDecoder->piMSFlags =
        (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) );
#ifdef ENABLE_MS_PRED
    for ( n = 0; n < MAX_BANDS; n++ )
    {
        psCQMFDecoder->piLRPhaseDiffs[n] = 0;
        psCQMFDecoder->piMSPredCoefs[n] = 0;
    }
#endif
#ifdef ENABLE_PMOD_ADJUST
    psCQMFDecoder->ppiHiSMRFlags =
        (int32_t **) malloc( psCQMFDecoder->iChannels * sizeof( int32_t * ) );
@@ -690,24 +684,13 @@ static void
InvQuantizeSpectrum( const int32_t iNumGroups, const int32_t *piGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, int32_t **ppiAlloc, int32_t **ppiQReal, int32_t **ppiQImag, float **ppfReal, float **ppfImag,
                     NoiseGen *psNoiseGen ); // Nullable

static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iMSMode, const int32_t *piMSFlags,
#ifdef ENABLE_MS_PRED
                         const int32_t *piLRPhaseDiffs,
                         const int32_t *piMSPredCoefs,
#endif
                         float ***pppfReal,
                         float ***pppfImag );
static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iMSMode, const int32_t *piMSFlags, const int32_t *piLRPhaseDiffs, const int32_t *piMSPredCoefs, float ***pppfReal, float ***pppfImag );

/* Currently only the number of bands in frame */
static int32_t ReadHeaderInformation( int32_t *piNumBands,
                                      ivas_split_rend_bits_t *pBits );

static int32_t ReadMSInformation( const int32_t iNumBands, int32_t *piMSMode, int32_t *piMSFlags,
#ifdef ENABLE_MS_PRED
                                  int32_t *piLRPhaseDiffs,
                                  int32_t *piMSPredCoefs,
#endif
                                  ivas_split_rend_bits_t *pBits );
static int32_t ReadMSInformation( const int32_t iNumBands, int32_t *piMSMode, int32_t *piMSFlags, int32_t *piLRPhaseDiffs, int32_t *piMSPredCoefs, ivas_split_rend_bits_t *pBits );

static int32_t ReadGroupInformation( const int32_t iChannels,
                                     const int32_t iNumBlocks,
@@ -760,9 +743,7 @@ int32_t DecodeFrame( CQMFDecoder *psCQMFDecoder,
        iBitsRead += ReadMSInformation(
            psCQMFDecoder->iNumBands, &psCQMFDecoder->iMSMode,
            psCQMFDecoder->piMSFlags,
#ifdef ENABLE_MS_PRED
            psCQMFDecoder->piLRPhaseDiffs, psCQMFDecoder->piMSPredCoefs,
#endif
            pBits );
    }
    iBitsRead += ReadPredictors( psCQMFDecoder->psPredictionDecoder,
@@ -877,10 +858,8 @@ int32_t DecodeFrame( CQMFDecoder *psCQMFDecoder,
        InvMSCoding( psCQMFDecoder->iNumBlocks, psCQMFDecoder->iNumBands,
                     psCQMFDecoder->piBandwidths, psCQMFDecoder->iMSMode,
                     (const int32_t *) psCQMFDecoder->piMSFlags,
#ifdef ENABLE_MS_PRED
                     (const int32_t *) psCQMFDecoder->piLRPhaseDiffs,
                     (const int32_t *) psCQMFDecoder->piMSPredCoefs,
#endif
                     pppfCQMFReal, pppfCQMFImag );
    }

@@ -1019,24 +998,16 @@ static void InvQuantizeSpectrum(
    }
}

static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iMSMode, const int32_t *piMSFlags,
#ifdef ENABLE_MS_PRED
                         const int32_t *piLRPhaseDiffs,
                         const int32_t *piMSPredCoefs,
#endif
                         float ***pppfReal,
                         float ***pppfImag )
static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iMSMode, const int32_t *piMSFlags, const int32_t *piLRPhaseDiffs, const int32_t *piMSPredCoefs, float ***pppfReal, float ***pppfImag )
{
    if ( iMSMode > 0 )
    {
        int32_t b;
        int32_t iFBOffset;
#ifdef ENABLE_MS_PRED
        int32_t bms = 0;
#if defined SIMPLE_PHASE
        void( *pFuncPhaseRotateOptions[4] ) = { &rot_zero, &rot_m_pi_2, &rot_pm_pi,
                                                &rot_p_pi_2 };
#endif
#endif

        iFBOffset = 0;
@@ -1045,7 +1016,7 @@ static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, cons
            if ( piMSFlags[b] == 1 )
            {
                int32_t n;
#if defined ENABLE_MS_PRED && defined SIMPLE_PHASE
#if defined SIMPLE_PHASE
                void ( *pFuncPhaseRotate )( float *, float * ) =
                    pFuncPhaseRotateOptions[piLRPhaseDiffs[bms]];
#endif
@@ -1058,7 +1029,7 @@ static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, cons
                        float fLeftImag;
                        float fRightReal;
                        float fRightImag;
#ifdef ENABLE_MS_PRED

                        if ( iMSMode == 3 )
                        {
                            float fPred;
@@ -1066,14 +1037,14 @@ static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, cons
                            pppfReal[1][k][iFBOffset] += fPred * pppfReal[0][k][iFBOffset];
                            pppfImag[1][k][iFBOffset] += fPred * pppfImag[0][k][iFBOffset];
                        }
#endif

                        fLeftReal = ( pppfReal[0][k][iFBOffset] + pppfReal[1][k][iFBOffset] );
                        fLeftImag = ( pppfImag[0][k][iFBOffset] + pppfImag[1][k][iFBOffset] );
                        fRightReal =
                            ( pppfReal[0][k][iFBOffset] - pppfReal[1][k][iFBOffset] );
                        fRightImag =
                            ( pppfImag[0][k][iFBOffset] - pppfImag[1][k][iFBOffset] );
#ifdef ENABLE_MS_PRED

                        if ( iMSMode == 3 )
                        {
#ifdef SIMPLE_PHASE
@@ -1085,7 +1056,7 @@ static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, cons
                                      -c_afRotRealImag[phaseIdx][1] );
#endif
                        }
#endif

                        pppfReal[0][k][iFBOffset] = fLeftReal;
                        pppfReal[1][k][iFBOffset] = fRightReal;
                        pppfImag[0][k][iFBOffset] = fLeftImag;
@@ -1093,9 +1064,8 @@ static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, cons
                    }
                    iFBOffset++;
                }
#ifdef ENABLE_MS_PRED

                bms++;
#endif
            }
            else
            {
@@ -1118,12 +1088,7 @@ static int32_t ReadHeaderInformation( int32_t *piNumBands,
    return iBitsRead;
}

static int32_t ReadMSInformation( const int32_t iNumBands, int32_t *piMSMode, int32_t *piMSFlags,
#ifdef ENABLE_MS_PRED
                                  int32_t *piLRPhaseDiffs,
                                  int32_t *piMSPredCoefs,
#endif
                                  ivas_split_rend_bits_t *pBits )
static int32_t ReadMSInformation( const int32_t iNumBands, int32_t *piMSMode, int32_t *piMSFlags, int32_t *piLRPhaseDiffs, int32_t *piMSPredCoefs, ivas_split_rend_bits_t *pBits )
{
    int32_t iBitsRead;

@@ -1156,7 +1121,7 @@ static int32_t ReadMSInformation( const int32_t iNumBands, int32_t *piMSMode, in
            iBitsRead += 1;
        }
    }
#ifdef ENABLE_MS_PRED

    else if ( *piMSMode == 3 )
    {
        int32_t n;
@@ -1247,7 +1212,6 @@ static int32_t ReadMSInformation( const int32_t iNumBands, int32_t *piMSMode, in
        }
#endif
    }
#endif
    else
    {
        printf( "ERROR UNSUPPORTED MS MODE\n" );
+17 −71
Original line number Diff line number Diff line
@@ -43,9 +43,7 @@
#include "ivas_PerceptualModel.h"
#include "ivas_cldfb_codec_bitstream.h"
#include "ivas_prot_rend.h"
#ifdef ENABLE_MS_PRED
#include "ivas_MSPred.h"
#endif
#ifdef ENABLE_PMOD_ADJUST
#include "ton_corr.h"
#endif
@@ -66,11 +64,10 @@ struct CQMF_ENCODER

    int32_t iMSMode;
    int32_t *piMSFlags;
#ifdef ENABLE_MS_PRED
    int32_t piMSPredCoefs[MAX_BANDS];
    int32_t piLRPhaseDiffs[MAX_BANDS];
    int32_t iAllowSidePred;
#endif

#ifdef ENABLE_PMOD_ADJUST
    int32_t **ppiHiSMRFlags;
#endif
@@ -122,14 +119,14 @@ CQMFEncoder *CreateCQMFEncoder( const int32_t iSampleRate,

    psCQMFEncoder->iMSMode = 0;
    psCQMFEncoder->piMSFlags = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) );
#ifdef ENABLE_MS_PRED

    for ( n = 0; n < MAX_BANDS; n++ )
    {
        psCQMFEncoder->piLRPhaseDiffs[n] = 0;
        psCQMFEncoder->piMSPredCoefs[n] = 0;
    }
    psCQMFEncoder->iAllowSidePred = iAllowSidePred;
#endif

    psCQMFEncoder->psRMSEnvelopeGrouping = CreateRMSEnvelopeGrouping( psCQMFEncoder->iNumBlocks );

    psCQMFEncoder->iCommonGrouping = 1; // Common grouping always on only impacts stereo
@@ -362,11 +359,9 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
                                  float ***pppfReal,
                                  float ***pppfImag,
                                  int32_t *piMSMode,
#ifdef ENABLE_MS_PRED
                                  int32_t *piLRPhaseDiff,
                                  int32_t *piMSPredCoef,
                                  const int32_t iAllowSidePred,
#endif
                                  int32_t *piMSFlags );

static void RemoveRMSEnvelope( const int32_t iNumBands,
@@ -399,11 +394,9 @@ static int32_t WritePmodInformation( const int32_t **ppiHiSMRFlags,
static int32_t WriteMSInformation( const int32_t iNumBands,
                                   const int32_t iMSMode,
                                   const int32_t *piMSFlags,
#ifdef ENABLE_MS_PRED
                                   const int32_t *piLRPhaseDiffs,
                                   const int32_t *piMSPredCoefs,
                                   int32_t iNumMSPredBands,
#endif
                                   ivas_split_rend_bits_t *pBits );

static int32_t WriteGroupInformation( const int32_t iChannels,
@@ -470,11 +463,9 @@ int32_t EncodeFrame( CQMFEncoder *psCQMFEncoder, float ***pppfCQMFReal, float **
                                         pppfCQMFReal,
                                         pppfCQMFImag,
                                         &psCQMFEncoder->iMSMode,
#ifdef ENABLE_MS_PRED
                                         psCQMFEncoder->piLRPhaseDiffs,
                                         psCQMFEncoder->piMSPredCoefs,
                                         psCQMFEncoder->iAllowSidePred,
#endif
                                         psCQMFEncoder->piMSFlags );

        if ( psCQMFEncoder->iMSMode > 0 )
@@ -496,10 +487,6 @@ int32_t EncodeFrame( CQMFEncoder *psCQMFEncoder, float ***pppfCQMFReal, float **
                                 psCQMFEncoder->piBandwidths,
                                 pppfCQMFReal,
                                 pppfCQMFImag,
#ifndef USE_BIT_COUNT_MERGE_COST
                                 8.0,
                                 20.0, // Use these to trade off RMS Env bits and quantizer loading
#endif
                                 &psCQMFEncoder->piNumGroups[0],
                                 psCQMFEncoder->ppiGroupLengths[0],
                                 psCQMFEncoder->pppiRMSEnvelope );
@@ -520,10 +507,6 @@ int32_t EncodeFrame( CQMFEncoder *psCQMFEncoder, float ***pppfCQMFReal, float **
                                     psCQMFEncoder->piBandwidths,
                                     &pppfCQMFReal[n],
                                     &pppfCQMFImag[n],
#ifndef USE_BIT_COUNT_MERGE_COST
                                     8.0,
                                     20.0, // Use these to trade off RMS Env bits and quantizer loading
#endif
                                     &psCQMFEncoder->piNumGroups[n],
                                     psCQMFEncoder->ppiGroupLengths[n],
                                     &psCQMFEncoder->pppiRMSEnvelope[n] );
@@ -553,11 +536,9 @@ int32_t EncodeFrame( CQMFEncoder *psCQMFEncoder, float ***pppfCQMFReal, float **
        iBitsWritten += WriteMSInformation( psCQMFEncoder->iNumBands,
                                            psCQMFEncoder->iMSMode,
                                            (const int32_t *) psCQMFEncoder->piMSFlags,
#ifdef ENABLE_MS_PRED
                                            (const int32_t *) psCQMFEncoder->piLRPhaseDiffs,
                                            (const int32_t *) psCQMFEncoder->piMSPredCoefs,
                                            iNumMSBands,
#endif
                                            pBits );
    }

@@ -666,17 +647,14 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
                                  float ***pppfReal,
                                  float ***pppfImag,
                                  int32_t *piMSMode,
#ifdef ENABLE_MS_PRED
                                  int32_t *piLRPhaseDiffs,
                                  int32_t *piMSPredCoefs,
                                  const int32_t iAllowSidePred,
#endif
                                  int32_t *piMSFlags )
{
    int32_t b;
    int32_t iFBOffset;
    int32_t iNumMSBands;
#ifdef ENABLE_MS_PRED
    int32_t piMSPredFlags[MAX_BANDS] = { 0 };
    int32_t iNumMSPredBands = 0;
    float msBitsReduction = 0.0f;
@@ -684,11 +662,10 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
    int32_t msBits;
    int32_t msPredBits;
    float fPred;
#if defined ENABLE_MS_PRED && defined SIMPLE_PHASE
#if defined SIMPLE_PHASE
    void( *pFuncPhaseRotateOptions[4] ) = { &rot_zero, &rot_p_pi_2, &rot_pm_pi, &rot_m_pi_2 };
#endif
    const float one_by_log10_2 = 3.32192809488736f;
#endif
    *piMSMode = 0;
    iFBOffset = 0;
    iNumMSBands = 0;
@@ -701,7 +678,6 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        float fSideEnergy;
        float fLRRatio;
        float fMSRatio;
#ifdef ENABLE_MS_PRED
        float fMSPredRatio;
        float fMidEnergyPred;
        float fSideEnergyPred;
@@ -710,7 +686,6 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        int32_t iPhase;
        int32_t iPred;
        int32_t tabIdx = 0;
#endif

        fLeftEnergy = 0.0f;
        fRightEnergy = 0.0f;
@@ -737,15 +712,13 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
                fMidEnergy += ( fMidReal * fMidReal + fMidImag * fMidImag );
                fSideEnergy += ( fSideReal * fSideReal + fSideImag * fSideImag );

#ifdef ENABLE_MS_PRED
                fLRCovReal += ( pppfReal[0][k][iFBOffset] * pppfReal[1][k][iFBOffset] + pppfImag[0][k][iFBOffset] * pppfImag[1][k][iFBOffset] );
                fLRCovImag += ( pppfImag[0][k][iFBOffset] * pppfReal[1][k][iFBOffset] - pppfImag[1][k][iFBOffset] * pppfReal[0][k][iFBOffset] );
#endif
            }

            iFBOffset++;
        }
#ifdef ENABLE_MS_PRED

        /* compute L/R phase difference if high coherence */
        if ( fLRCovReal * fLRCovReal + fLRCovImag * fLRCovImag > 0.5f * fLeftEnergy * fRightEnergy )
        {
@@ -779,7 +752,7 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        fSideEnergyPred += ( fPred * fPred * fMidEnergyPred - 2.0f * fPred * 0.25f * ( fLeftEnergy - fRightEnergy ) );
        /* -= fPred * fPred * fMidEnergyPred doesn't work because fPred is quantized and does not match MS/MM exactly */
        fMSPredRatio = (float) log10f( ( fMidEnergyPred + 1e-12f ) / ( fSideEnergyPred + 1e-12f ) );
#endif

        fLeftEnergy = log10f( fLeftEnergy + 1e-12f );
        fRightEnergy = log10f( fRightEnergy + 1e-12f );
        fMidEnergy = log10f( fMidEnergy + 1e-12f );
@@ -812,7 +785,7 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        {
            piMSFlags[b] = 0;
        }
#ifdef ENABLE_MS_PRED

        if ( fMSRatio > fLRRatio )
        {
            float maskThresShift_dB_by_10 = ( fMSRatio - fLRRatio ) * (float) c_aiDefaultTheta48[b] / 16.0f;
@@ -829,10 +802,8 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        {
            piMSPredFlags[b] = 0;
        }
#endif
    }

#ifdef ENABLE_MS_PRED
    msPredBits = CountMSBits( iNumBands, 3, piMSPredFlags, piLRPhaseDiffs, piMSPredCoefs );
    msPredBitsReduction = max( msPredBitsReduction - (float) msPredBits, 0.0f );
    msBits = CountMSBits( iNumBands, 2, piMSFlags, NULL, NULL );
@@ -857,7 +828,7 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        iNumMSBands = iNumMSPredBands;
    }
    else
#endif

        if ( iNumMSBands == iNumBands )
    {
        *piMSMode = 1;
@@ -876,7 +847,7 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        iFBOffset = 0;
        for ( b = 0; b < iNumBands; b++ )
        {
#if defined ENABLE_MS_PRED && defined SIMPLE_PHASE
#if defined SIMPLE_PHASE
            void ( *pFuncPhaseRotate )( float *, float * ) = pFuncPhaseRotateOptions[piLRPhaseDiffs[b]];
#endif
            if ( piMSFlags[b] == 1 )
@@ -891,7 +862,7 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
                        float fMidImag;
                        float fSideReal;
                        float fSideImag;
#ifdef ENABLE_MS_PRED

                        if ( *piMSMode == 3 )
                        {
#ifdef SIMPLE_PHASE
@@ -903,19 +874,19 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
                            cplxmult( &pppfReal[1][k][iFBOffset], &pppfImag[1][k][iFBOffset], c_afRotRealImag[phaseIdx][0], c_afRotRealImag[phaseIdx][1] );
#endif
                        }
#endif

                        fMidReal = 0.5f * ( pppfReal[0][k][iFBOffset] + pppfReal[1][k][iFBOffset] );
                        fMidImag = 0.5f * ( pppfImag[0][k][iFBOffset] + pppfImag[1][k][iFBOffset] );
                        fSideReal = 0.5f * ( pppfReal[0][k][iFBOffset] - pppfReal[1][k][iFBOffset] );
                        fSideImag = 0.5f * ( pppfImag[0][k][iFBOffset] - pppfImag[1][k][iFBOffset] );
#ifdef ENABLE_MS_PRED

                        if ( *piMSMode == 3 )
                        {
                            fPred = dequantPred( piMSPredCoefs[b] );
                            fSideReal -= fPred * fMidReal;
                            fSideImag -= fPred * fMidImag;
                        }
#endif

                        pppfReal[0][k][iFBOffset] = fMidReal;
                        pppfReal[1][k][iFBOffset] = fSideReal;
                        pppfImag[0][k][iFBOffset] = fMidImag;
@@ -930,7 +901,7 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
            }
        }
    }
#ifdef ENABLE_MS_PRED

#ifdef DEBUG_WRITE_MS_PRED
    {
        static FILE *fid = 0;
@@ -972,7 +943,6 @@ static int32_t MSModeCalculation( const int32_t iNumBlocks,
        }
#endif
    }
#endif

    return iNumMSBands;
}
@@ -1437,33 +1407,26 @@ static int32_t WriteHeaderInformation( const int32_t iNumBands,
static int32_t WriteMSInformation( const int32_t iNumBands,
                                   const int32_t iMSMode,
                                   const int32_t *piMSFlags,
#ifdef ENABLE_MS_PRED
                                   const int32_t *piLRPhaseDiff,
                                   const int32_t *piMSPredCoef,
                                   int32_t iNumMSPredBands,
#endif
                                   ivas_split_rend_bits_t *pBits )
{
    int32_t iBitsWritten;
#ifdef ENABLE_MS_PRED
    int32_t iMSPredAll = ( iNumMSPredBands == iNumBands );
#ifdef DEBUG_WRITE_MS_PRED
    int32_t iBitsWrittenTmp = 0;
#endif
#endif
    iBitsWritten = 0;
    ivas_split_rend_bitstream_write_int32( pBits, iMSMode, 2 );
    iBitsWritten += 2;
#ifdef ENABLE_MS_PRED

    if ( iMSMode == 3 )
    {
        ivas_split_rend_bitstream_write_int32( pBits, iMSPredAll, 1 );
        iBitsWritten += 1;
    }
    if ( iMSMode == 2 || ( iMSMode == 3 && !iMSPredAll ) )
#else
    if ( iMSMode == 2 )
#endif
    {
        int32_t n;
        for ( n = 0; n < iNumBands; n++ )
@@ -1472,7 +1435,7 @@ static int32_t WriteMSInformation( const int32_t iNumBands,
            iBitsWritten += 1;
        }
    }
#ifdef ENABLE_MS_PRED

#ifdef DEBUG_WRITE_MS_PRED
    iBitsWrittenTmp = iBitsWritten;
#endif
@@ -1549,7 +1512,6 @@ static int32_t WriteMSInformation( const int32_t iNumBands,
        }
        fprintf( fid, "%f\n", (float) ( ( iBitsWritten - iBitsWrittenTmp ) * ( iMSMode == 3 ) * 50 ) / 1000.0f ); /*kb/s*/
    }
#endif
#endif

    return iBitsWritten;
@@ -1963,7 +1925,7 @@ static int32_t ComputeAllocation( const int32_t iChannels,
                    pppiAlloc[n][k][b] = iAlloc;
                }
            }
#ifdef OPTIMIZE_DPCM_QUANT

            QuantizeSpectrumDPCM_Opt( piNumGroups[n],
                                      (const int32_t *) ppiGroupLengths[n],
                                      iNumBands,
@@ -1978,22 +1940,6 @@ static int32_t ComputeAllocation( const int32_t iChannels,
                                      ppiPredEnable[n],
                                      ppfA1Real[n],
                                      ppfA1Imag[n] );
#else
            QuantizeSpectrumDPCM( piNumGroups[n],
                                  (const int32_t *) ppiGroupLengths[n],
                                  iNumBands,
                                  piBandwidths,
                                  pppiAlloc[n],
                                  pppfReal[n],
                                  pppfImag[n],
                                  pppiQReal[n],
                                  pppiQImag[n],
                                  pppiSignReal[n],
                                  pppiSignImag[n],
                                  ppiPredEnable[n],
                                  ppfA1Real[n],
                                  ppfA1Imag[n] );
#endif

            iBitsUsed += CountCQMFBits( piNumGroups[n],
                                        (const int32_t *) ppiGroupLengths[n],
+6 −38
Original line number Diff line number Diff line
@@ -77,11 +77,8 @@ RMSEnvelopeGrouping *CreateRMSEnvelopeGrouping( int32_t iNumBlocks )

    psRMSEnvelopeGrouping = (RMSEnvelopeGrouping *) malloc( sizeof( RMSEnvelopeGrouping ) );
    psRMSEnvelopeGrouping->iNumBlocks = iNumBlocks;
#ifdef FORCE_GROUPS_OF_2

    psRMSEnvelopeGrouping->iMaxGroups = iNumBlocks >> 1;
#else
    psRMSEnvelopeGrouping->iMaxGroups = iNumBlocks;
#endif

    psRMSEnvelopeGrouping->ppfBandEnergy = (float **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( float * ) );
    psRMSEnvelopeGrouping->ppfBandEnergydB = (float **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( float * ) );
@@ -811,10 +808,6 @@ void ComputeEnvelopeGrouping( RMSEnvelopeGrouping *psRMSEnvelopeGrouping,
                              const int32_t *piBandwidths, // pass in absolute thresh
                              float ***pppfReal,
                              float ***pppfImag,
#ifndef USE_BIT_COUNT_MERGE_COST
                              const float fMeanAllowedDiffdB,
                              const float fMaxAllowedDiffdB,
#endif
                              int32_t *piNumGroups,
                              int32_t *piGroupLengths,
                              int32_t ***pppiRMSEnvelope )
@@ -834,14 +827,12 @@ void ComputeEnvelopeGrouping( RMSEnvelopeGrouping *psRMSEnvelopeGrouping,
                       psRMSEnvelopeGrouping->ppfWeight );

    /* Init GMNodes */
#ifdef FORCE_GROUPS_OF_2
    psRMSEnvelopeGrouping->psGMNodes[0].iGroupStart = 0;
    psRMSEnvelopeGrouping->psGMNodes[0].iGroupLength = 2;
    psRMSEnvelopeGrouping->psGMNodes[0].psNext = NULL;
#ifdef BUG_FIX_03_15_23_INIT_GROUPING
    psRMSEnvelopeGrouping->psGMNodes[0].iGroupRMSEnvelopeCost = -1;
    psRMSEnvelopeGrouping->psGMNodes[0].fGroupSNRPenalty = -1.0f;
#endif

    for ( n = 1; n < psRMSEnvelopeGrouping->iMaxGroups; n++ )
    {
        psRMSEnvelopeGrouping->psGMNodes[n - 1].psNext = &psRMSEnvelopeGrouping->psGMNodes[n];
@@ -851,32 +842,9 @@ void ComputeEnvelopeGrouping( RMSEnvelopeGrouping *psRMSEnvelopeGrouping,
        psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty = -1.0;
        psRMSEnvelopeGrouping->psGMNodes[n].psNext = NULL;
    }
#else
    psRMSEnvelopeGrouping->psGMNodes[0].iGroupStart = 0;
    psRMSEnvelopeGrouping->psGMNodes[0].iGroupLength = 1;
    psRMSEnvelopeGrouping->psGMNodes[0].psNext = NULL;
#ifdef BUG_FIX_03_15_23_INIT_GROUPING
    psRMSEnvelopeGrouping->psGMNodes[0].iGroupRMSEnvelopeCost = -1;
    psRMSEnvelopeGrouping->psGMNodes[0].fGroupSNRPenalty = -1.0f;
#endif
    for ( n = 1; n < psRMSEnvelopeGrouping->iMaxGroups; n++ )
    {
        psRMSEnvelopeGrouping->psGMNodes[n - 1].psNext = &psRMSEnvelopeGrouping->psGMNodes[n];
        psRMSEnvelopeGrouping->psGMNodes[n].iGroupStart = n;
        psRMSEnvelopeGrouping->psGMNodes[n].iGroupLength = 1;
        psRMSEnvelopeGrouping->psGMNodes[n].iGroupRMSEnvelopeCost = -1;
        psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty = -1.0;
        psRMSEnvelopeGrouping->psGMNodes[n].psNext = NULL;
    }
#endif

    /* Perform grouping via Greedy Merge */
#ifndef USE_BIT_COUNT_MERGE_COST
    ComputeGreedyGroups( psRMSEnvelopeGrouping,
                         iChannels,
                         iNumBands,
                         fMeanAllowedDiffdB,
                         fMaxAllowedDiffdB );
#else

    /*ComputeGreedyGroups2(psRMSEnvelopeGrouping,
                         iChannels,
                         iNumBands,
@@ -887,7 +855,7 @@ void ComputeEnvelopeGrouping( RMSEnvelopeGrouping *psRMSEnvelopeGrouping,
                          iNumBands,
                          piBandwidths,
                          CQMF_BLOCKS_PER_FRAME );
#endif


    /* Calc Groups from Merge Results */
    *piNumGroups = 0;
+0 −4
Original line number Diff line number Diff line
@@ -51,10 +51,6 @@ extern "C"
                                  const int32_t *piBandwidths,
                                  float ***pppfReal,
                                  float ***pppfImag,
#ifndef USE_BIT_COUNT_MERGE_COST
                                  const float fMeanAllowedDiffdB,
                                  const float fMaxAllowedDiffdB,
#endif
                                  int32_t *piNumGroups,
                                  int32_t *piGroupLengths,
                                  int32_t ***pppiRMSEnvelope );