Loading lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -97,8 +97,8 @@ #define HARMONIZE_2595_reconfig_decoder_LPD /* FhG: Harmonize reconfig_decoder_LPD with its ivas derivate */ #define HARMONIZE_2596_SetModeIndex /* FhG: Harmonize SetModeIndex with its ivas derivate */ #define HARMONIZE_2597_ShapeSpectrum /* FhG: Harmonize ShapeSpectrum with its ivas derivate */ #define HARMONIZE_2567_init_functions /* FhG: harmonize derivates for evs/ivas regarding functions init_acelp*(),init_tcx_cfg*(), init_tcx*(), init_coder_ace_plus*(), init_core_sig_ana*() and init_modes*() */ #define HARMONIZE_2607_GetFilterParameters /* FhG: Harmonize GetFilterParameters with its ivas derivate */ /* #################### End BE switches ################################## */ Loading lib_enc/tns_base_enc_fx.c +53 −15 Original line number Diff line number Diff line Loading @@ -23,9 +23,13 @@ * @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. * Loading Loading @@ -150,7 +154,11 @@ 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 } } Loading Loading @@ -368,7 +376,11 @@ 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 } } Loading Loading @@ -527,10 +539,17 @@ 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 Loading @@ -542,6 +561,18 @@ 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 */ 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 } ELSE { #endif rxx_0 = rxx[0]; move32(); /* compute TNS filter in lattice (ParCor) form with LeRoux-Gueguen algorithm */ Loading @@ -557,6 +588,9 @@ 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 ); Loading @@ -566,6 +600,7 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter test(); WHILE( ( i >= 0 ) && ( indexes[i] == 0 ) ) { test(); i = sub( i, 1 ); } Loading @@ -590,6 +625,8 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter /* assert(maxOrder == 8); pTnsFilter->avgSqrCoef = shr(pTnsFilter->avgSqrCoef, 3); */ } #ifndef HARMONIZE_2607_GetFilterParameters static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter ) { Word16 i; Loading Loading @@ -643,6 +680,7 @@ static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTns /* assert(maxOrder == 8); pTnsFilter->avgSqrCoef = shr(pTnsFilter->avgSqrCoef, 3); */ } #endif /*HARMONIZE_2607_GetFilterParameters*/ static void Parcor2Index( const Word16 parCoeff[] /*Q15*/, Word16 index[], Word16 order ) { Loading Loading
lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -97,8 +97,8 @@ #define HARMONIZE_2595_reconfig_decoder_LPD /* FhG: Harmonize reconfig_decoder_LPD with its ivas derivate */ #define HARMONIZE_2596_SetModeIndex /* FhG: Harmonize SetModeIndex with its ivas derivate */ #define HARMONIZE_2597_ShapeSpectrum /* FhG: Harmonize ShapeSpectrum with its ivas derivate */ #define HARMONIZE_2567_init_functions /* FhG: harmonize derivates for evs/ivas regarding functions init_acelp*(),init_tcx_cfg*(), init_tcx*(), init_coder_ace_plus*(), init_core_sig_ana*() and init_modes*() */ #define HARMONIZE_2607_GetFilterParameters /* FhG: Harmonize GetFilterParameters with its ivas derivate */ /* #################### End BE switches ################################## */ Loading
lib_enc/tns_base_enc_fx.c +53 −15 Original line number Diff line number Diff line Loading @@ -23,9 +23,13 @@ * @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. * Loading Loading @@ -150,7 +154,11 @@ 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 } } Loading Loading @@ -368,7 +376,11 @@ 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 } } Loading Loading @@ -527,10 +539,17 @@ 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 Loading @@ -542,6 +561,18 @@ 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 */ 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 } ELSE { #endif rxx_0 = rxx[0]; move32(); /* compute TNS filter in lattice (ParCor) form with LeRoux-Gueguen algorithm */ Loading @@ -557,6 +588,9 @@ 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 ); Loading @@ -566,6 +600,7 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter test(); WHILE( ( i >= 0 ) && ( indexes[i] == 0 ) ) { test(); i = sub( i, 1 ); } Loading @@ -590,6 +625,8 @@ static void GetFilterParameters_ivas( Word32 rxx[], Word16 maxOrder, STnsFilter /* assert(maxOrder == 8); pTnsFilter->avgSqrCoef = shr(pTnsFilter->avgSqrCoef, 3); */ } #ifndef HARMONIZE_2607_GetFilterParameters static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTnsFilter ) { Word16 i; Loading Loading @@ -643,6 +680,7 @@ static void GetFilterParameters( Word32 rxx[], Word16 maxOrder, STnsFilter *pTns /* assert(maxOrder == 8); pTnsFilter->avgSqrCoef = shr(pTnsFilter->avgSqrCoef, 3); */ } #endif /*HARMONIZE_2607_GetFilterParameters*/ static void Parcor2Index( const Word16 parCoeff[] /*Q15*/, Word16 index[], Word16 order ) { Loading