From 96113d718001de038d550736815beed9568f99c9 Mon Sep 17 00:00:00 2001 From: gerstack Date: Thu, 5 Feb 2026 13:30:49 +0100 Subject: [PATCH 1/5] FIX 2387, MR 2800, harmonize AnalyzePowerSpectrum_fx() and AnalyzePowerSpectrum_ivas_fx() --- lib_com/options.h | 1 + lib_enc/cod_tcx_fx.c | 3 ++- lib_enc/ext_sig_ana_fx.c | 4 ++-- lib_enc/tcx_utils_enc_fx.c | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 37ad8d099..f779cb97b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,6 +86,7 @@ #define FIX_1904_HARM_GSC_ENC /* VA: #1904 Harmonization of EVS and IVAS GSC code */ #define FIX_2397_COPY_AQ_MDCT_CORE_BFI /* FhG: prevent copying of uninit memory in MDCT stereo core if bfi is set */ #define HARMONIZE_TBE /* VA: harmonize core-coder TBE function duplications */ +#define FIX_2387_ANALYZEPOWERSPECTRUM /* FhG: harmonize AnalyzePowerSpectrum_fx() and AnalyzePowerSpectrum_ivas_fx() */ /* #################### End BE switches ################################## */ diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c index d2dd0bf03..a233d36f4 100644 --- a/lib_enc/cod_tcx_fx.c +++ b/lib_enc/cod_tcx_fx.c @@ -3834,7 +3834,7 @@ void coder_tcx_fx( move16(); } - AnalyzePowerSpectrum_fx( st, + AnalyzePowerSpectrum_ivas_fx( st, round_fx( L_shl( Mpy_32_16_1( L_mult0( L_frame, st->L_frame ) /*Q0*/, getInvFrameLen( hTcxEnc->L_frameTCX ) /*Q21*/ ) /*Q6*/, 16 - 6 ) ), @@ -3842,6 +3842,7 @@ void coder_tcx_fx( left_overlap, right_overlap, spectrum, *spectrum_e, pWinMDST, + 0, powerSpec, &powerSpec_e ); IF( hTcxCfg->fIsTNSAllowed != 0 ) { diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c index 331817147..85cb5e48e 100644 --- a/lib_enc/ext_sig_ana_fx.c +++ b/lib_enc/ext_sig_ana_fx.c @@ -395,9 +395,9 @@ void core_signal_analysis_high_bitrate_fx( } /* Compute noise-measure flags for spectrum filling and quantization */ - AnalyzePowerSpectrum_fx( st, div_l( L_mult( L_subframe, st->L_frame ), hTcxEnc->L_frameTCX ), + AnalyzePowerSpectrum_ivas_fx( st, div_l( L_mult( L_subframe, st->L_frame ), hTcxEnc->L_frameTCX ), L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], - pMdstWin, powerSpec, &powerSpec_e ); + pMdstWin, 0, powerSpec, &powerSpec_e ); } } } diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index 9765655ba..98df09a3d 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -316,6 +316,7 @@ static void detectLowpassFac( const Word32 *powerSpec, Word16 powerSpec_e, Word1 move16(); } +#ifndef FIX_2387_ANALYZEPOWERSPECTRUM /*-----------------------------------------------------------* * Compute noise-measure flags for spectrum filling * * and quantization (0: tonal, 1: noise-like). * @@ -426,6 +427,7 @@ void AnalyzePowerSpectrum_fx( move16(); } } +#endif /* FIX_2387_ANALYZEPOWERSPECTRUM */ void AnalyzePowerSpectrum_ivas_fx( Encoder_State *st, /* i/o: encoder states */ -- GitLab From 97f37bd0297a8287e57d3ef94422d856dbb42f56 Mon Sep 17 00:00:00 2001 From: gerstack Date: Thu, 5 Feb 2026 13:34:18 +0100 Subject: [PATCH 2/5] clang format --- lib_enc/cod_tcx_fx.c | 18 +++++++++--------- lib_enc/ext_sig_ana_fx.c | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c index a233d36f4..7bf3af8a9 100644 --- a/lib_enc/cod_tcx_fx.c +++ b/lib_enc/cod_tcx_fx.c @@ -3835,15 +3835,15 @@ void coder_tcx_fx( } AnalyzePowerSpectrum_ivas_fx( st, - round_fx( L_shl( Mpy_32_16_1( L_mult0( L_frame, st->L_frame ) /*Q0*/, - getInvFrameLen( hTcxEnc->L_frameTCX ) /*Q21*/ ) /*Q6*/, - 16 - 6 ) ), - L_frame, - left_overlap, right_overlap, - spectrum, *spectrum_e, - pWinMDST, - 0, - powerSpec, &powerSpec_e ); + round_fx( L_shl( Mpy_32_16_1( L_mult0( L_frame, st->L_frame ) /*Q0*/, + getInvFrameLen( hTcxEnc->L_frameTCX ) /*Q21*/ ) /*Q6*/, + 16 - 6 ) ), + L_frame, + left_overlap, right_overlap, + spectrum, *spectrum_e, + pWinMDST, + 0, + powerSpec, &powerSpec_e ); IF( hTcxCfg->fIsTNSAllowed != 0 ) { diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c index 85cb5e48e..76e65b0f6 100644 --- a/lib_enc/ext_sig_ana_fx.c +++ b/lib_enc/ext_sig_ana_fx.c @@ -396,8 +396,8 @@ void core_signal_analysis_high_bitrate_fx( /* Compute noise-measure flags for spectrum filling and quantization */ AnalyzePowerSpectrum_ivas_fx( st, div_l( L_mult( L_subframe, st->L_frame ), hTcxEnc->L_frameTCX ), - L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], - pMdstWin, 0, powerSpec, &powerSpec_e ); + L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], + pMdstWin, 0, powerSpec, &powerSpec_e ); } } } -- GitLab From c4e255b28b8d703e4441ff3d29bbf3c6fef448d4 Mon Sep 17 00:00:00 2001 From: gerstack Date: Mon, 9 Feb 2026 09:32:14 +0100 Subject: [PATCH 3/5] changed q-value to 16-exp --- lib_enc/cod_tcx_fx.c | 13 ++++++++++++- lib_enc/ext_sig_ana_fx.c | 8 +++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c index 7bf3af8a9..304ba32dd 100644 --- a/lib_enc/cod_tcx_fx.c +++ b/lib_enc/cod_tcx_fx.c @@ -3833,7 +3833,7 @@ void coder_tcx_fx( pWinMDST = win; move16(); } - +#ifdef FIX_2387_ANALYZEPOWERSPECTRUM AnalyzePowerSpectrum_ivas_fx( st, round_fx( L_shl( Mpy_32_16_1( L_mult0( L_frame, st->L_frame ) /*Q0*/, getInvFrameLen( hTcxEnc->L_frameTCX ) /*Q21*/ ) /*Q6*/, @@ -3844,6 +3844,17 @@ void coder_tcx_fx( pWinMDST, 0, powerSpec, &powerSpec_e ); +#else + AnalyzePowerSpectrum_fx( st, + round_fx( L_shl( Mpy_32_16_1( L_mult0( L_frame, st->L_frame ) /*Q0*/, + getInvFrameLen( hTcxEnc->L_frameTCX ) /*Q21*/ ) /*Q6*/, + 16 - 6 ) ), + L_frame, + left_overlap, right_overlap, + spectrum, *spectrum_e, + pWinMDST, + powerSpec, &powerSpec_e ); +#endif IF( hTcxCfg->fIsTNSAllowed != 0 ) { diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c index 76e65b0f6..313fceb73 100644 --- a/lib_enc/ext_sig_ana_fx.c +++ b/lib_enc/ext_sig_ana_fx.c @@ -395,9 +395,15 @@ void core_signal_analysis_high_bitrate_fx( } /* Compute noise-measure flags for spectrum filling and quantization */ +#ifdef FIX_2387_ANALYZEPOWERSPECTRUM AnalyzePowerSpectrum_ivas_fx( st, div_l( L_mult( L_subframe, st->L_frame ), hTcxEnc->L_frameTCX ), L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], - pMdstWin, 0, powerSpec, &powerSpec_e ); + pMdstWin, 16-spectrum_e[frameno], powerSpec, &powerSpec_e ); +#else + AnalyzePowerSpectrum_fx( st, div_l( L_mult( L_subframe, st->L_frame ), hTcxEnc->L_frameTCX ), + L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], + pMdstWin, powerSpec, &powerSpec_e ); +#endif } } } -- GitLab From 70578ac8bbab5aa6e583fc487849df133c7da461 Mon Sep 17 00:00:00 2001 From: gerstack Date: Mon, 9 Feb 2026 09:35:56 +0100 Subject: [PATCH 4/5] clang format --- lib_enc/ext_sig_ana_fx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c index 313fceb73..3a4582152 100644 --- a/lib_enc/ext_sig_ana_fx.c +++ b/lib_enc/ext_sig_ana_fx.c @@ -398,11 +398,11 @@ void core_signal_analysis_high_bitrate_fx( #ifdef FIX_2387_ANALYZEPOWERSPECTRUM AnalyzePowerSpectrum_ivas_fx( st, div_l( L_mult( L_subframe, st->L_frame ), hTcxEnc->L_frameTCX ), L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], - pMdstWin, 16-spectrum_e[frameno], powerSpec, &powerSpec_e ); + pMdstWin, 16 - spectrum_e[frameno], powerSpec, &powerSpec_e ); #else AnalyzePowerSpectrum_fx( st, div_l( L_mult( L_subframe, st->L_frame ), hTcxEnc->L_frameTCX ), - L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], - pMdstWin, powerSpec, &powerSpec_e ); + L_subframe, left_overlap, right_overlap, spectrum[frameno], spectrum_e[frameno], + pMdstWin, powerSpec, &powerSpec_e ); #endif } } -- GitLab From 6fef2512d21b5f7243887ea36bf13cd23c906cff Mon Sep 17 00:00:00 2001 From: gerstack Date: Mon, 9 Feb 2026 09:45:05 +0100 Subject: [PATCH 5/5] changed q-value to 16-exp --- lib_enc/cod_tcx_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c index 304ba32dd..feac17912 100644 --- a/lib_enc/cod_tcx_fx.c +++ b/lib_enc/cod_tcx_fx.c @@ -3842,7 +3842,7 @@ void coder_tcx_fx( left_overlap, right_overlap, spectrum, *spectrum_e, pWinMDST, - 0, + 16 - *spectrum_e, powerSpec, &powerSpec_e ); #else AnalyzePowerSpectrum_fx( st, -- GitLab