Commit 62652af3 authored by multrus's avatar multrus
Browse files

[cleanup] accept HARMONIZE_2607_GetFilterParameters

parent 0ff3b887
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -86,7 +86,6 @@
#define FIX_1990_SANITIZER_IN_REVERB_LOAD               /* Nokia: Fix issue part of issue 1990 by introducing missing free of structure - keep until #2059 is addressed */
#define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR      /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */
#define NONBE_1122_KEEP_EVS_MODE_UNCHANGED              /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR.  */
#define HARMONIZE_2607_GetFilterParameters              /* FhG: Harmonize GetFilterParameters with its ivas derivate */
#define HAMRONIZE_2606_ENC_PRM                          /* FhG: Harmonize enc_prm_fx(), to match floating-point code */
#define HARMONIZE_2604_decoder_tcx_post                 /* FhG: Harmonize decoder_tcx_post with its ivas derivate */
#define HARMONIZE_2598_tcx_arith_decode_envelope        /* FhG: harmonize tcx_arith_decode_envelope between EVS and IVAS versions */
+0 −79
Original line number Diff line number Diff line
@@ -23,13 +23,7 @@
 * @param maxOrder Maximum filter order/number of coefficients.
 * @param pTnsFilter Pointer to the output filter.
 */
#ifndef HARMONIZE_2607_GetFilterParameters
static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter );

static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter );
#else
static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter, Word16 element_mode );
#endif

/** Quantization for reflection coefficients.
 *
@@ -154,11 +148,7 @@ void CalculateTnsFilt_fx(
            pFilter->spectrumLength = spectrumLength;
            move16();
            /* Limit the maximum order to spectrum length/4 */
#ifdef HARMONIZE_2607_GetFilterParameters
            GetFilterParameters( rxx, s_min( pTnsConfig->maxOrder, shr( pFilter->spectrumLength, 2 ) ), pFilter, 1 /*signal non-EVS*/ );
#else
            GetFilterParameters_ivas( rxx, s_min( pTnsConfig->maxOrder, shr( pFilter->spectrumLength, 2 ) ), pFilter );
#endif
        }
    }

@@ -376,11 +366,7 @@ Word16 DetectTnsFilt_fx(
            pFilter->spectrumLength = spectrumLength;
            move16();
            /* Limit the maximum order to spectrum length/4 */
#ifdef HARMONIZE_2607_GetFilterParameters
            GetFilterParameters( rxx, s_min( pTnsConfig->maxOrder, shr( pFilter->spectrumLength, 2 ) ), pFilter, EVS_MONO );
#else
            GetFilterParameters( rxx, s_min( pTnsConfig->maxOrder, shr( pFilter->spectrumLength, 2 ) ), pFilter );
#endif
        }
    }

@@ -539,17 +525,11 @@ Word16 WriteTnsData_fx( STnsConfig const *pTnsConfig, Word16 const *stream, Word
/********************************/
/*      Private functions       */
/********************************/
#ifdef HARMONIZE_2607_GetFilterParameters
static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter, Word16 element_mode )
#else
static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter )
#endif
{
    Word16 i;
    Word16 parCoeff[TNS_MAX_FILTER_ORDER + 1];
#ifdef HARMONIZE_2607_GetFilterParameters
    Word32 epsP[TNS_MAX_FILTER_ORDER + 1];
#endif
    Word32 rxx_0;
    Word32 L_tmp;
#if TNS_COEF_RES == 5
@@ -561,7 +541,6 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter
#endif
    Word16 *indexes = pTnsFilter->coefIndex;

#ifdef HARMONIZE_2607_GetFilterParameters
    IF( EQ_16( element_mode, EVS_MONO ) )
    {
        /* compute TNS filter in lattice (ParCor) form with LeRoux-Gueguen algorithm */
@@ -572,7 +551,6 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter
    }
    ELSE
    {
#endif
        rxx_0 = rxx[0];
        move32();
        /* compute TNS filter in lattice (ParCor) form with LeRoux-Gueguen algorithm */
@@ -588,9 +566,7 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter
        pTnsFilter->predictionGain = shl_sat( temp, sub( temp_e, PRED_GAIN_E ) ); // Q7
        move16();
        BASOP_SATURATE_WARNING_ON_EVS
#ifdef HARMONIZE_2607_GetFilterParameters
    }
#endif
    /* non-linear quantization of TNS lattice coefficients with given resolution */
    Parcor2Index( parCoeff, indexes, maxOrder );

@@ -626,61 +602,6 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter
     pTnsFilter->avgSqrCoef = shr(pTnsFilter->avgSqrCoef, 3); */
}

#ifndef HARMONIZE_2607_GetFilterParameters
static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter )
{
    Word16 i;
    Word16 parCoeff[TNS_MAX_FILTER_ORDER];
    Word32 epsP[TNS_MAX_FILTER_ORDER + 1], L_tmp;
#if TNS_COEF_RES == 5
    Word16 const *values = tnsCoeff5;
#elif TNS_COEF_RES == 4
    Word16 const *values = tnsCoeff4;
#elif TNS_COEF_RES == 3
    Word16 const *values = tnsCoeff3;
#endif
    Word16 *indexes = pTnsFilter->coefIndex;


    /* compute TNS filter in lattice (ParCor) form with LeRoux-Gueguen algorithm */
    L_tmp = E_LPC_schur( rxx, parCoeff, epsP, maxOrder );
    BASOP_SATURATE_WARNING_OFF_EVS /* Allow saturation, this value is compared against a threshold. */
        pTnsFilter->predictionGain = divide3232( L_shr( epsP[0], PRED_GAIN_E ), L_tmp );
    BASOP_SATURATE_WARNING_ON_EVS
    /* non-linear quantization of TNS lattice coefficients with given resolution */
    Parcor2Index( parCoeff, indexes, maxOrder );

    /* reduce filter order by truncating trailing zeros */
    i = sub( maxOrder, 1 );

    test();
    WHILE( ( i >= 0 ) && ( indexes[i] == 0 ) )
    {
        test();
        i = sub( i, 1 );
    }

    move16();
    pTnsFilter->order = add( i, 1 );

    /* compute avg(coef*coef) */
    L_tmp = L_deposit_l( 0 );

    FOR( i = pTnsFilter->order - 1; i >= 0; i-- )
    {
        Word16 value;

        value = shr( values[indexes[i] + INDEX_SHIFT], 1 );

        L_tmp = L_mac0( L_tmp, value, value );
    }
    move16();
    pTnsFilter->avgSqrCoef = round_fx( L_tmp );

    /* assert(maxOrder == 8);
     pTnsFilter->avgSqrCoef = shr(pTnsFilter->avgSqrCoef, 3); */
}
#endif /*HARMONIZE_2607_GetFilterParameters*/

static void Parcor2Index( const Word16 parCoeff[] /*Q15*/, Word16 index[], Word16 order )
{