diff --git a/lib_com/tcx_utils_fx.c b/lib_com/tcx_utils_fx.c index e7987d0cecad106e440145d9e91f34acfbaa391a..60f26d30324a0e8e1b4d2c1c830c9bb72ee0c842 100644 --- a/lib_com/tcx_utils_fx.c +++ b/lib_com/tcx_utils_fx.c @@ -1857,7 +1857,7 @@ void tcx_noise_filling_with_shift( tmp32 = L_shr( Mpy_32_16_1( tmp32, tmp1 ), 6 ); BASOP_SATURATE_WARNING_OFF_EVS; #ifdef BASOP_NOGLOB - tilt_factor = round_fx( BASOP_Util_InvLog2( tmp32 ) ); + tilt_factor = round_fx_sat( BASOP_Util_InvLog2( tmp32 ) ); #else tilt_factor = round_fx( BASOP_Util_InvLog2( tmp32 ) ); #endif diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index bccb9ea3f902a59bfcf791feccd29cf8fcad0802..ef4d0ff73edeb96564c39484f8348d7a5692ad19 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -841,6 +841,8 @@ static void ivas_CalcPowerSpecAndDetectTonalComponents_fx( power_spectrum_q = sub( 31, powerSpectrum_exp ); old_power_spectrum_q = power_spectrum_q; move16(); + Word16 length = 0; + move16(); /* here mdct_shaping() is intentionally used rather then mdct_shaping_16() */ IF( psychParamsCurrent == NULL ) { @@ -853,25 +855,29 @@ static void ivas_CalcPowerSpecAndDetectTonalComponents_fx( invScaleFactors_fx[i] = L_shl( invScaleFactors[i], add( 1, invScaleFactors_exp[i] ) ); // Q16 move32(); } - sns_shape_spectrum_fx( powerSpectrum, &power_spectrum_q, psychParamsCurrent, invScaleFactors_fx, 16, hTonalMDCTConc->nSamplesCore, NULL ); + sns_shape_spectrum_fx( powerSpectrum, &power_spectrum_q, psychParamsCurrent, invScaleFactors_fx, 16, hTonalMDCTConc->nSamplesCore, &length ); power_spectrum_q = add( power_spectrum_q, 1 ); // sns_shape_spectrum(powerSpectrum, psychParamsCurrent, invScaleFactors, hTonalMDCTConc->nSamplesCore); // nBands = psychParamsCurrent->nBands; } IF( LT_16( old_power_spectrum_q, power_spectrum_q ) ) { - Scale_sig32( powerSpectrum, hTonalMDCTConc->nSamplesCore, sub( old_power_spectrum_q, power_spectrum_q ) ); + Scale_sig32( powerSpectrum, length, sub( old_power_spectrum_q, power_spectrum_q ) ); } ELSE { - Scale_sig32( powerSpectrum + hTonalMDCTConc->nSamplesCore, sub( nSamples, hTonalMDCTConc->nSamplesCore ), sub( power_spectrum_q, old_power_spectrum_q ) ); + Scale_sig32( powerSpectrum + length, sub( nSamples, length ), sub( power_spectrum_q, old_power_spectrum_q ) ); powerSpectrum_exp = sub( 31, power_spectrum_q ); } Scale_sig32( powerSpectrum, nSamples, -3 ); /*Adding guard bits*/ powerSpectrum_exp = add( powerSpectrum_exp, 3 ); FOR( i = hTonalMDCTConc->nSamplesCore; i < nSamples; i++ ) { +#ifdef BASOP_NOGLOB + powerSpectrum[i] = L_shl_sat( Mpy_32_16_1( powerSpectrum[i], invScaleFactors[FDNS_NPTS - 1] ), invScaleFactors_exp[FDNS_NPTS - 1] ); +#else powerSpectrum[i] = L_shl( Mpy_32_16_1( powerSpectrum[i], invScaleFactors[FDNS_NPTS - 1] ), invScaleFactors_exp[FDNS_NPTS - 1] ); +#endif move32(); }