From 57f7aa7b132a70d79435ff4a521db73fc1a8afee Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Fri, 20 Mar 2026 14:27:28 +0100 Subject: [PATCH 01/13] issue: 2480 Harmonizing Function tonalMDCTConceal_Detect_fx() --- lib_com/options.h | 2 +- lib_dec/er_util_fx.c | 6 +- lib_dec/tonalMDCTconcealment_fx.c | 157 ++++++++++++++++++++++++------ 3 files changed, 134 insertions(+), 31 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index eb5d8a66e..0420a0c37 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -89,7 +89,7 @@ #define FIX_2455_HARMONIZE_generate_comfort_noise_enc /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */ #define FIX_2455_HARMONIZE_configureFdCngEnc /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */ #define FIX_2463_EVS_BWE_LSF /* VA: basop issue 2463: harmonize calling of Quant_BWE_LSF_fx() */ - +#define FIX_2480_HARM_TONALMDCT /* FhG: basop issue 2480 Harmonize TonalMDCTConceal_Detect_fx() and TonalMDCTConceal_Detect_ivas_fx()*/ /* #################### End BE switches ################################## */ diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index 5632e52af..f888f7c19 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -455,7 +455,11 @@ Word16 GetPLCModeDecision_fx( } ELSE { - TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); +#ifndef FIX_2480_HARM_TONALMDCT + TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); +#else + TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode); +#endif // !FIX_2480_HARM_TONALMDCT } test(); diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index ee491c23b..3dc6643b9 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1061,22 +1061,47 @@ void TonalMDCTConceal_Detect_ivas_fx( Word16 element_mode ) { Word32 secondLastMDST[L_FRAME_MAX]; - set32_fx( secondLastMDST, 0, L_FRAME_MAX ); + +#ifndef FIX_2480_HARM_TONALMDCT + set32_fx(secondLastMDST, 0, L_FRAME_MAX); +#else + IF(NE_16(element_mode, EVS_MONO)) { + set32_fx(secondLastMDST, 0, L_FRAME_MAX); + } +#endif // !FIX_2480_HARM_TONALMDCT + Word32 secondLastMDCT[L_FRAME_MAX]; Word16 secondLastMDCT_exp; Word32 *powerSpectrum = secondLastMDST; Word16 i, powerSpectrum_exp, secondLastMDST_exp, s; Word16 nSamples; - // Word16 nBands; Word32 sns_int_scf_fx[FDNS_NPTS]; - set32_fx( sns_int_scf_fx, 0, FDNS_NPTS ); + set32_fx(sns_int_scf_fx, 0, FDNS_NPTS); + nSamples = hTonalMDCTConc->nSamples; move16(); - secondLastMDST_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + +#ifndef FIX_2480_HARM_TONALMDCT + secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); - secondLastMDCT_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); +#else + IF(EQ_16(element_mode, EVS_MONO)) { + secondLastMDST_exp = 16; /*time signal Q-1*/ + move16(); + secondLastMDCT_exp = 16; /*time signal Q-1*/ + move16(); + } + ELSE{ + secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + move16(); + secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + move16(); + } +#endif // !FIX_2480_HARM_TONALMDCT + test(); test(); test(); @@ -1108,8 +1133,14 @@ void TonalMDCTConceal_Detect_ivas_fx( move16(); nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); - - s = sub( getScaleFactor32( secondLastMDST, nSamples ), 1 ); +#ifndef FIX_2480_HARM_TONALMDCT + s = sub(getScaleFactor32(secondLastMDST, nSamples), 1); +#else + s = getScaleFactor32(secondLastMDST, nSamples); + IF(NE_16(element_mode, EVS_MONO)) { + s = sub(s, 1); + } +#endif // !FIX_2480_HARM_TONALMDCT FOR( i = 0; i < nSamples; i++ ) { @@ -1118,7 +1149,14 @@ void TonalMDCTConceal_Detect_ivas_fx( } secondLastMDST_exp = sub( secondLastMDST_exp, s ); move16(); - s = sub( getScaleFactor32( secondLastMDCT, nSamples ), 1 ); +#ifndef FIX_2480_HARM_TONALMDCT + s = sub(getScaleFactor32(secondLastMDCT, nSamples), 1); +#else + s = getScaleFactor32(secondLastMDCT, nSamples); + IF(NE_16(element_mode, EVS_MONO)) { + s = sub(s, 1); + } +#endif // !FIX_2480_HARM_TONALMDCT FOR( i = 0; i < nSamples; i++ ) { @@ -1127,7 +1165,16 @@ void TonalMDCTConceal_Detect_ivas_fx( } secondLastMDCT_exp = sub( secondLastMDCT_exp, s ); move16(); - CalcPowerSpecAndDetectTonalComponents_fx( hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode ); +#ifndef FIX_2480_HARM_TONALMDCT + CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); +#else + IF(EQ_16(element_mode, EVS_MONO)) { + CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, NULL, element_mode); + } + ELSE{ + CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); + } +#endif // !FIX_2480_HARM_TONALMDCT } ELSE { @@ -1136,8 +1183,15 @@ void TonalMDCTConceal_Detect_ivas_fx( Word16 temp_power_spectrum_q = 0; nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); - Copy_Scale_sig_16_32_DEPREC( hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15 ); - temp_power_spectrum_q = add( Q15, sub( 15, hTonalMDCTConc->secondLastPowerSpectrum_exp ) ); +#ifndef FIX_2480_HARM_TONALMDCT + Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); + temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); +#else + IF(NE_16(element_mode, EVS_MONO)) { + Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); + temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); + } +#endif // !FIX_2480_HARM_TONALMDCT IF( psychParamsCurrent == NULL ) { mdct_shaping_16( hTonalMDCTConc->secondLastPowerSpectrum, hTonalMDCTConc->nSamplesCore, nSamples, @@ -1175,25 +1229,70 @@ void TonalMDCTConceal_Detect_ivas_fx( } powerSpectrum_exp = sub( 31, sub( shl( sub( Q31 - 3, powerSpectrum_exp ), 1 ), 31 ) ); } +#ifndef FIX_2480_HARM_TONALMDCT + RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16*)hTonalMDCTConc->pTCI->lowerIndex, + (Word16*)hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16*)&hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + powerSpectrum_exp, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ +#else + IF(EQ_16(element_mode, EVS_MONO)) { + RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16*)hTonalMDCTConc->pTCI->lowerIndex, + (Word16*)hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16*)&hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + -1, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, NULL); + } + ELSE{ + RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16*)hTonalMDCTConc->pTCI->lowerIndex, + (Word16*)hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16*)&hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + powerSpectrum_exp, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ + } - RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, - (Word16 *) hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - powerSpectrum_exp, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ +#endif // !FIX_2480_HARM_TONALMDCT + + } } } -- GitLab From 9fdab734a5851c3fd7e31c7ff2679fe018c6f2ef Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Fri, 20 Mar 2026 14:31:10 +0100 Subject: [PATCH 02/13] issue: 2480 Clang formatting patch --- lib_dec/er_util_fx.c | 4 +- lib_dec/tonalMDCTconcealment_fx.c | 184 ++++++++++++++++-------------- 2 files changed, 98 insertions(+), 90 deletions(-) diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index f888f7c19..8bf1ab64b 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -456,9 +456,9 @@ Word16 GetPLCModeDecision_fx( ELSE { #ifndef FIX_2480_HARM_TONALMDCT - TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); + TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); #else - TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode); + TonalMDCTConceal_Detect_ivas_fx( st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode ); #endif // !FIX_2480_HARM_TONALMDCT } diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 3dc6643b9..acf70caf8 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1063,10 +1063,11 @@ void TonalMDCTConceal_Detect_ivas_fx( Word32 secondLastMDST[L_FRAME_MAX]; #ifndef FIX_2480_HARM_TONALMDCT - set32_fx(secondLastMDST, 0, L_FRAME_MAX); + set32_fx( secondLastMDST, 0, L_FRAME_MAX ); #else - IF(NE_16(element_mode, EVS_MONO)) { - set32_fx(secondLastMDST, 0, L_FRAME_MAX); + IF( NE_16( element_mode, EVS_MONO ) ) + { + set32_fx( secondLastMDST, 0, L_FRAME_MAX ); } #endif // !FIX_2480_HARM_TONALMDCT @@ -1076,28 +1077,30 @@ void TonalMDCTConceal_Detect_ivas_fx( Word16 i, powerSpectrum_exp, secondLastMDST_exp, s; Word16 nSamples; Word32 sns_int_scf_fx[FDNS_NPTS]; - set32_fx(sns_int_scf_fx, 0, FDNS_NPTS); + set32_fx( sns_int_scf_fx, 0, FDNS_NPTS ); nSamples = hTonalMDCTConc->nSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT - secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + secondLastMDST_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); - secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + secondLastMDCT_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); #else - IF(EQ_16(element_mode, EVS_MONO)) { + IF( EQ_16( element_mode, EVS_MONO ) ) + { secondLastMDST_exp = 16; /*time signal Q-1*/ move16(); secondLastMDCT_exp = 16; /*time signal Q-1*/ move16(); } - ELSE{ - secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + ELSE + { + secondLastMDST_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); - secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ + secondLastMDCT_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); } #endif // !FIX_2480_HARM_TONALMDCT @@ -1134,11 +1137,12 @@ void TonalMDCTConceal_Detect_ivas_fx( nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT - s = sub(getScaleFactor32(secondLastMDST, nSamples), 1); + s = sub( getScaleFactor32( secondLastMDST, nSamples ), 1 ); #else - s = getScaleFactor32(secondLastMDST, nSamples); - IF(NE_16(element_mode, EVS_MONO)) { - s = sub(s, 1); + s = getScaleFactor32( secondLastMDST, nSamples ); + IF( NE_16( element_mode, EVS_MONO ) ) + { + s = sub( s, 1 ); } #endif // !FIX_2480_HARM_TONALMDCT @@ -1150,11 +1154,12 @@ void TonalMDCTConceal_Detect_ivas_fx( secondLastMDST_exp = sub( secondLastMDST_exp, s ); move16(); #ifndef FIX_2480_HARM_TONALMDCT - s = sub(getScaleFactor32(secondLastMDCT, nSamples), 1); + s = sub( getScaleFactor32( secondLastMDCT, nSamples ), 1 ); #else - s = getScaleFactor32(secondLastMDCT, nSamples); - IF(NE_16(element_mode, EVS_MONO)) { - s = sub(s, 1); + s = getScaleFactor32( secondLastMDCT, nSamples ); + IF( NE_16( element_mode, EVS_MONO ) ) + { + s = sub( s, 1 ); } #endif // !FIX_2480_HARM_TONALMDCT @@ -1166,15 +1171,17 @@ void TonalMDCTConceal_Detect_ivas_fx( secondLastMDCT_exp = sub( secondLastMDCT_exp, s ); move16(); #ifndef FIX_2480_HARM_TONALMDCT - CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); + CalcPowerSpecAndDetectTonalComponents_fx( hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode ); #else - IF(EQ_16(element_mode, EVS_MONO)) { - CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, NULL, element_mode); + IF( EQ_16( element_mode, EVS_MONO ) ) + { + CalcPowerSpecAndDetectTonalComponents_fx( hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, NULL, element_mode ); } - ELSE{ - CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); + ELSE + { + CalcPowerSpecAndDetectTonalComponents_fx( hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode ); } -#endif // !FIX_2480_HARM_TONALMDCT +#endif // !FIX_2480_HARM_TONALMDCT } ELSE { @@ -1184,12 +1191,13 @@ void TonalMDCTConceal_Detect_ivas_fx( nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT - Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); - temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); + Copy_Scale_sig_16_32_DEPREC( hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15 ); + temp_power_spectrum_q = add( Q15, sub( 15, hTonalMDCTConc->secondLastPowerSpectrum_exp ) ); #else - IF(NE_16(element_mode, EVS_MONO)) { - Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); - temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); + IF( NE_16( element_mode, EVS_MONO ) ) + { + Copy_Scale_sig_16_32_DEPREC( hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15 ); + temp_power_spectrum_q = add( Q15, sub( 15, hTonalMDCTConc->secondLastPowerSpectrum_exp ) ); } #endif // !FIX_2480_HARM_TONALMDCT IF( psychParamsCurrent == NULL ) @@ -1230,69 +1238,69 @@ void TonalMDCTConceal_Detect_ivas_fx( powerSpectrum_exp = sub( 31, sub( shl( sub( Q31 - 3, powerSpectrum_exp ), 1 ), 31 ) ); } #ifndef FIX_2480_HARM_TONALMDCT - RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16*)hTonalMDCTConc->pTCI->lowerIndex, - (Word16*)hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16*)&hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - powerSpectrum_exp, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ + RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, + (Word16 *) hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + powerSpectrum_exp, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ #else - IF(EQ_16(element_mode, EVS_MONO)) { - RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16*)hTonalMDCTConc->pTCI->lowerIndex, - (Word16*)hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16*)&hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - -1, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, NULL); - } - ELSE{ - RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16*)hTonalMDCTConc->pTCI->lowerIndex, - (Word16*)hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16*)&hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - powerSpectrum_exp, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ + IF( EQ_16( element_mode, EVS_MONO ) ) + { + RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, + (Word16 *) hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + -1, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, NULL ); + } + ELSE + { + RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, + (Word16 *) hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + powerSpectrum_exp, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ } #endif // !FIX_2480_HARM_TONALMDCT - - } } } -- GitLab From 93c3e3a7b6420dddbeea5da8e36ad96224a82a23 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 09:20:41 +0100 Subject: [PATCH 03/13] issue: 2480 Removing legacy function definition and declaration --- lib_com/prot_fx.h | 2 ++ lib_dec/tonalMDCTconcealment_fx.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index de383d0a7..f9fdc441a 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -5706,12 +5706,14 @@ void TonalMDCTConceal_UpdateState_fx( const Word16 badBlock, const Word8 tonalConcealmentActive ); +#ifndef FIX_2480_HARM_TONALMDCT void TonalMDCTConceal_Detect_fx( const TonalMDCTConcealPtr self, /*IN */ const Word32 pitchLag, /*IN */ Word16 *umIndices, /*OUT*/ const Word16 element_mode /* IN */ ); +#endif // !FIX_2480_HARM_TONALMDCT void TonalMDCTConceal_Apply_fx( const TonalMDCTConcealPtr hTonalMDCTConc, /*IN */ diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index acf70caf8..6c8df8cd9 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -927,6 +927,7 @@ static void CalcMDXT( return; } +#ifndef FIX_2480_HARM_TONALMDCT void TonalMDCTConceal_Detect_fx( const TonalMDCTConcealPtr hTonalMDCTConc, const Word32 pitchLag, /*15Q16*/ @@ -1052,6 +1053,7 @@ void TonalMDCTConceal_Detect_fx( return; } +#endif // !FIX_2480_HARM_TONALMDCT void TonalMDCTConceal_Detect_ivas_fx( const TonalMDCTConcealPtr hTonalMDCTConc, -- GitLab From 2f83c80294494afec5b1839d4c61979b48e4dba8 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 09:23:59 +0100 Subject: [PATCH 04/13] issue: 2480 adding assert to verify psychParamsCurrent is NULL when EVS_MONO --- lib_dec/er_util_fx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index 8bf1ab64b..d384b3582 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -456,8 +456,9 @@ Word16 GetPLCModeDecision_fx( ELSE { #ifndef FIX_2480_HARM_TONALMDCT - TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); + TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); #else + assert(st->hTcxCfg->psychParamsCurrent == NULL); TonalMDCTConceal_Detect_ivas_fx( st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode ); #endif // !FIX_2480_HARM_TONALMDCT } -- GitLab From 6c39c7dae359cb024aedbe6e0012208c68c41e6f Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 09:46:13 +0100 Subject: [PATCH 05/13] issue: 2480 Clang formatting patch --- lib_dec/er_util_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index d384b3582..ba86fe754 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -456,9 +456,9 @@ Word16 GetPLCModeDecision_fx( ELSE { #ifndef FIX_2480_HARM_TONALMDCT - TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); + TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); #else - assert(st->hTcxCfg->psychParamsCurrent == NULL); + assert( st->hTcxCfg->psychParamsCurrent == NULL ); TonalMDCTConceal_Detect_ivas_fx( st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode ); #endif // !FIX_2480_HARM_TONALMDCT } -- GitLab From 54139ab5493b508c6b742e59728eadcd5612b32e Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 10:23:18 +0100 Subject: [PATCH 06/13] issue: 2480 Further reducing code in the function using verification from commit 2f83c802 --- lib_dec/tonalMDCTconcealment_fx.c | 61 +++++++++---------------------- 1 file changed, 18 insertions(+), 43 deletions(-) diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 6c8df8cd9..e917be959 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1259,49 +1259,24 @@ void TonalMDCTConceal_Detect_ivas_fx( hTonalMDCTConc->nSamplesCore, extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ #else - IF( EQ_16( element_mode, EVS_MONO ) ) - { - RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, - (Word16 *) hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - -1, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, NULL ); - } - ELSE - { - RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, - (Word16 *) hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - powerSpectrum_exp, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ - } - + RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16*)hTonalMDCTConc->pTCI->lowerIndex, + (Word16*)hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16*)&hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + powerSpectrum_exp, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ #endif // !FIX_2480_HARM_TONALMDCT } } -- GitLab From 649be6152cdd069a232b7a8927033043a1fcb6eb Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 10:25:55 +0100 Subject: [PATCH 07/13] issue: 2480 Clang formatting patch --- lib_dec/tonalMDCTconcealment_fx.c | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index e917be959..1b104adb0 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1259,24 +1259,24 @@ void TonalMDCTConceal_Detect_ivas_fx( hTonalMDCTConc->nSamplesCore, extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ #else - RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16*)hTonalMDCTConc->pTCI->lowerIndex, - (Word16*)hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16*)&hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - powerSpectrum_exp, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ + RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, + (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, + (Word16 *) hTonalMDCTConc->pTCI->upperIndex, + hTonalMDCTConc->pTCI->phaseDiff, + hTonalMDCTConc->pTCI->phase_currentFramePredicted, + (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, + hTonalMDCTConc->lastPitchLag, + pitchLag, + hTonalMDCTConc->lastBlockData.spectralData, + add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), + hTonalMDCTConc->lastBlockData.scaleFactors, + hTonalMDCTConc->lastBlockData.scaleFactors_exp, + hTonalMDCTConc->lastBlockData.scaleFactors_max_e, + powerSpectrum, + powerSpectrum_exp, + nSamples, + hTonalMDCTConc->nSamplesCore, + extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ #endif // !FIX_2480_HARM_TONALMDCT } } -- GitLab From 0672c9677448a4e0ccaa629fb58736443f306feb Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 10:45:42 +0100 Subject: [PATCH 08/13] issue: 2480 removing assert in commit 2f83c802 --- lib_dec/er_util_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index ba86fe754..8bf1ab64b 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -458,7 +458,6 @@ Word16 GetPLCModeDecision_fx( #ifndef FIX_2480_HARM_TONALMDCT TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); #else - assert( st->hTcxCfg->psychParamsCurrent == NULL ); TonalMDCTConceal_Detect_ivas_fx( st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode ); #endif // !FIX_2480_HARM_TONALMDCT } -- GitLab From 1f2a2a630befda12301ff7899f21fde8b298f421 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 10:58:01 +0100 Subject: [PATCH 09/13] issue: 2480 unifying both instances of function use. --- lib_dec/er_util_fx.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index 8bf1ab64b..9dba53305 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -449,18 +449,20 @@ Word16 GetPLCModeDecision_fx( { pitch = L_add( st->old_fpitch, 0 ); /*Q16*/ } - IF( NE_16( st->element_mode, EVS_MONO ) ) +#ifndef FIX_2480_HARM_TONALMDCT + IF(NE_16(st->element_mode, EVS_MONO)) { - TonalMDCTConceal_Detect_ivas_fx( st->hTonalMDCTConc, pitch, &numIndices, ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) ? &( st->hTcxCfg->psychParamsTCX20 ) : st->hTcxCfg->psychParamsCurrent ), st->element_mode ); + TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, (EQ_16(st->element_mode, IVAS_CPE_MDCT) ? &(st->hTcxCfg->psychParamsTCX20) : st->hTcxCfg->psychParamsCurrent), st->element_mode); } ELSE { -#ifndef FIX_2480_HARM_TONALMDCT - TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); + TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); + } #else - TonalMDCTConceal_Detect_ivas_fx( st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode ); + TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, (EQ_16(st->element_mode, IVAS_CPE_MDCT) ? &(st->hTcxCfg->psychParamsTCX20) : st->hTcxCfg->psychParamsCurrent), st->element_mode); #endif // !FIX_2480_HARM_TONALMDCT - } + + test(); test(); -- GitLab From fe30c9be341c675fa7998df10873d335c0d67b31 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 11:01:13 +0100 Subject: [PATCH 10/13] issue: 2480 Changing function name in definition declaration and instance --- lib_com/ivas_prot_fx.h | 11 ++++++++++- lib_dec/er_util_fx.c | 2 +- lib_dec/tonalMDCTconcealment_fx.c | 14 +++++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 17d4ba062..15af6dffe 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1681,6 +1681,7 @@ void ivas_mdct_tcx10_bit_distribution_fx( const Word16 nTnsBitsTCX10[NB_DIV] /* i : TNS bits */ ); +#ifndef FIX_2480_HARM_TONALMDCT void TonalMDCTConceal_Detect_ivas_fx( const TonalMDCTConcealPtr hTonalMDCTConc, const Word32 pitchLag, @@ -1688,7 +1689,15 @@ void TonalMDCTConceal_Detect_ivas_fx( const PsychoacousticParameters *psychParamsCurrent, Word16 element_mode ); - +#else +void TonalMDCTConceal_Detect_fx( + const TonalMDCTConcealPtr hTonalMDCTConc, + const Word32 pitchLag, + Word16* numIndices, + const PsychoacousticParameters* psychParamsCurrent, + Word16 element_mode +); +#endif // !FIX_2480_HARM_TONALMDCT ivas_error stereo_dft_dec_create_fx( STEREO_DFT_DEC_DATA_HANDLE *hStereoDft, /* i/o: decoder DFT stereo handle */ const Word32 element_brate, /* i : element bitrate */ diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index 9dba53305..c23e393f5 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -459,7 +459,7 @@ Word16 GetPLCModeDecision_fx( TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); } #else - TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, (EQ_16(st->element_mode, IVAS_CPE_MDCT) ? &(st->hTcxCfg->psychParamsTCX20) : st->hTcxCfg->psychParamsCurrent), st->element_mode); + TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, (EQ_16(st->element_mode, IVAS_CPE_MDCT) ? &(st->hTcxCfg->psychParamsTCX20) : st->hTcxCfg->psychParamsCurrent), st->element_mode); #endif // !FIX_2480_HARM_TONALMDCT diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 1b104adb0..42b5a0a1e 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1054,13 +1054,21 @@ void TonalMDCTConceal_Detect_fx( return; } #endif // !FIX_2480_HARM_TONALMDCT - +#ifndef FIX_2480_HARM_TONALMDCT void TonalMDCTConceal_Detect_ivas_fx( const TonalMDCTConcealPtr hTonalMDCTConc, const Word32 pitchLag, /*15Q16*/ - Word16 *numIndices, - const PsychoacousticParameters *psychParamsCurrent, + Word16* numIndices, + const PsychoacousticParameters* psychParamsCurrent, Word16 element_mode ) +#else +void TonalMDCTConceal_Detect_fx( + const TonalMDCTConcealPtr hTonalMDCTConc, + const Word32 pitchLag, /*15Q16*/ + Word16* numIndices, + const PsychoacousticParameters* psychParamsCurrent, + Word16 element_mode) +#endif // !FIX_2480_HARM_TONALMDCT { Word32 secondLastMDST[L_FRAME_MAX]; -- GitLab From 39687313226ae4e7cd766d617759bd4fb38ebb48 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 11:07:39 +0100 Subject: [PATCH 11/13] issue: 2480 Clang formatting patch --- lib_dec/er_util_fx.c | 9 ++++----- lib_dec/tonalMDCTconcealment_fx.c | 10 +++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index c23e393f5..7adb78c12 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -450,19 +450,18 @@ Word16 GetPLCModeDecision_fx( pitch = L_add( st->old_fpitch, 0 ); /*Q16*/ } #ifndef FIX_2480_HARM_TONALMDCT - IF(NE_16(st->element_mode, EVS_MONO)) + IF( NE_16( st->element_mode, EVS_MONO ) ) { - TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, (EQ_16(st->element_mode, IVAS_CPE_MDCT) ? &(st->hTcxCfg->psychParamsTCX20) : st->hTcxCfg->psychParamsCurrent), st->element_mode); + TonalMDCTConceal_Detect_ivas_fx( st->hTonalMDCTConc, pitch, &numIndices, ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) ? &( st->hTcxCfg->psychParamsTCX20 ) : st->hTcxCfg->psychParamsCurrent ), st->element_mode ); } ELSE { - TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); + TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); } #else - TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, (EQ_16(st->element_mode, IVAS_CPE_MDCT) ? &(st->hTcxCfg->psychParamsTCX20) : st->hTcxCfg->psychParamsCurrent), st->element_mode); + TonalMDCTConceal_Detect_fx( st->hTonalMDCTConc, pitch, &numIndices, ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) ? &( st->hTcxCfg->psychParamsTCX20 ) : st->hTcxCfg->psychParamsCurrent ), st->element_mode ); #endif // !FIX_2480_HARM_TONALMDCT - test(); test(); diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 42b5a0a1e..01b69254c 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1058,16 +1058,16 @@ void TonalMDCTConceal_Detect_fx( void TonalMDCTConceal_Detect_ivas_fx( const TonalMDCTConcealPtr hTonalMDCTConc, const Word32 pitchLag, /*15Q16*/ - Word16* numIndices, - const PsychoacousticParameters* psychParamsCurrent, + Word16 *numIndices, + const PsychoacousticParameters *psychParamsCurrent, Word16 element_mode ) #else void TonalMDCTConceal_Detect_fx( const TonalMDCTConcealPtr hTonalMDCTConc, const Word32 pitchLag, /*15Q16*/ - Word16* numIndices, - const PsychoacousticParameters* psychParamsCurrent, - Word16 element_mode) + Word16 *numIndices, + const PsychoacousticParameters *psychParamsCurrent, + Word16 element_mode ) #endif // !FIX_2480_HARM_TONALMDCT { Word32 secondLastMDST[L_FRAME_MAX]; -- GitLab From be2cc54a8e957fa80bf507a8c739f67bae44c39f Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 23 Mar 2026 12:24:23 +0100 Subject: [PATCH 12/13] issue: 2480 Removing some redundant parts based on psychParamsCurrent == NULL when st->element_mode == EVS_MONO --- lib_dec/tonalMDCTconcealment_fx.c | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 01b69254c..d5424952b 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1071,15 +1071,8 @@ void TonalMDCTConceal_Detect_fx( #endif // !FIX_2480_HARM_TONALMDCT { Word32 secondLastMDST[L_FRAME_MAX]; - -#ifndef FIX_2480_HARM_TONALMDCT set32_fx( secondLastMDST, 0, L_FRAME_MAX ); -#else - IF( NE_16( element_mode, EVS_MONO ) ) - { - set32_fx( secondLastMDST, 0, L_FRAME_MAX ); - } -#endif // !FIX_2480_HARM_TONALMDCT + Word32 secondLastMDCT[L_FRAME_MAX]; Word16 secondLastMDCT_exp; @@ -1102,19 +1095,16 @@ void TonalMDCTConceal_Detect_fx( IF( EQ_16( element_mode, EVS_MONO ) ) { secondLastMDST_exp = 16; /*time signal Q-1*/ - move16(); secondLastMDCT_exp = 16; /*time signal Q-1*/ - move16(); } ELSE { secondLastMDST_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ - move16(); secondLastMDCT_exp = sub( 16, hTonalMDCTConc->q_lastPcmOut ); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ - move16(); } #endif // !FIX_2480_HARM_TONALMDCT - + move16(); + move16(); test(); test(); test(); @@ -1180,18 +1170,7 @@ void TonalMDCTConceal_Detect_fx( } secondLastMDCT_exp = sub( secondLastMDCT_exp, s ); move16(); -#ifndef FIX_2480_HARM_TONALMDCT CalcPowerSpecAndDetectTonalComponents_fx( hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode ); -#else - IF( EQ_16( element_mode, EVS_MONO ) ) - { - CalcPowerSpecAndDetectTonalComponents_fx( hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, NULL, element_mode ); - } - ELSE - { - CalcPowerSpecAndDetectTonalComponents_fx( hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode ); - } -#endif // !FIX_2480_HARM_TONALMDCT } ELSE { -- GitLab From cf3be58e1dea8b4489f79d71911a77ca9c72e5e8 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 23 Mar 2026 17:47:37 +0100 Subject: [PATCH 13/13] cleanup --- lib_dec/tonalMDCTconcealment_fx.c | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index d5424952b..210d2a2c0 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1226,26 +1226,7 @@ void TonalMDCTConceal_Detect_fx( } powerSpectrum_exp = sub( 31, sub( shl( sub( Q31 - 3, powerSpectrum_exp ), 1 ), 31 ) ); } -#ifndef FIX_2480_HARM_TONALMDCT - RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, - (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, - (Word16 *) hTonalMDCTConc->pTCI->upperIndex, - hTonalMDCTConc->pTCI->phaseDiff, - hTonalMDCTConc->pTCI->phase_currentFramePredicted, - (Word16 *) &hTonalMDCTConc->pTCI->numIndexes, - hTonalMDCTConc->lastPitchLag, - pitchLag, - hTonalMDCTConc->lastBlockData.spectralData, - add( hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp ), - hTonalMDCTConc->lastBlockData.scaleFactors, - hTonalMDCTConc->lastBlockData.scaleFactors_exp, - hTonalMDCTConc->lastBlockData.scaleFactors_max_e, - powerSpectrum, - powerSpectrum_exp, - nSamples, - hTonalMDCTConc->nSamplesCore, - extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ -#else + RefineTonalComponents_fx( (Word16 *) hTonalMDCTConc->pTCI->indexOfTonalPeak, (Word16 *) hTonalMDCTConc->pTCI->lowerIndex, (Word16 *) hTonalMDCTConc->pTCI->upperIndex, @@ -1264,7 +1245,6 @@ void TonalMDCTConceal_Detect_fx( nSamples, hTonalMDCTConc->nSamplesCore, extract_l( Mpy_32_16_1( L_mult0( hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples ), 82 ) ), element_mode, psychParamsCurrent ); /* floorPowerSpectrum */ -#endif // !FIX_2480_HARM_TONALMDCT } } } -- GitLab