From 06139656740df22a92c70caeace9bac95041a031 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Fri, 29 May 2026 17:33:59 +0200 Subject: [PATCH 1/6] issue 2615: creating the switch and fixing the false shiftings --- lib_com/options.h | 1 + lib_dec/ivas_stereo_dft_plc_fx.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index aacc67cc7..d5c4b1632 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -104,6 +104,7 @@ #define HARMONIZE_2598_tcx_arith_decode_envelope /* FhG: harmonize tcx_arith_decode_envelope between EVS and IVAS versions */ #define HARMONIZE_2598_tcx_arith_encode_envelope /* FhG: harmonize tcx_arith_encode_envelope between EVS and IVAS versions */ #define FIX_ISSUE_2594_FALSE_COMMENT /* FhG: basop issue 2594: fixing false comments about Q value*/ +#define FIX_ISSUE_2615_FALSE_SHIFTING /* FhG: basop issue 2615: Incorrect shifting in function stereo_dft_dmx_swb_nrg_fx()*/ /* #################### End BE switches ################################## */ diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c index 670b19e36..ccf811561 100644 --- a/lib_dec/ivas_stereo_dft_plc_fx.c +++ b/lib_dec/ivas_stereo_dft_plc_fx.c @@ -795,10 +795,17 @@ Word32 stereo_dft_dmx_swb_nrg_fx( { FOR( i = 0; i < frame_length / 2; i++ ) { - dmx_nrg = L_add( dmx_nrg, - L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 ), - L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 ) ), - 1 ) ); /*3*q0 - 31*/ +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING + dmx_nrg = L_add(dmx_nrg, + L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), q0), + L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), q1)), + 1) ); /*3*q0 - 31*/ +#else + dmx_nrg = L_add(dmx_nrg, + L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), q0 << 1 ), + L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), q1 << 1 )), + 1)); /*3*q0 - 31*/ +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING } } -- GitLab From cfa3403516eae8bcdff7a598634ac4d7beb7d783 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Fri, 29 May 2026 17:44:32 +0200 Subject: [PATCH 2/6] issue 2615: Clang formatting patch --- lib_dec/ivas_stereo_dft_plc_fx.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c index ccf811561..4dd4dc89a 100644 --- a/lib_dec/ivas_stereo_dft_plc_fx.c +++ b/lib_dec/ivas_stereo_dft_plc_fx.c @@ -796,15 +796,15 @@ Word32 stereo_dft_dmx_swb_nrg_fx( FOR( i = 0; i < frame_length / 2; i++ ) { #ifndef FIX_ISSUE_2615_FALSE_SHIFTING - dmx_nrg = L_add(dmx_nrg, - L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), q0), - L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), q1)), - 1) ); /*3*q0 - 31*/ + dmx_nrg = L_add( dmx_nrg, + L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 ), + L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 ) ), + 1 ) ); /*3*q0 - 31*/ #else - dmx_nrg = L_add(dmx_nrg, - L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), q0 << 1 ), - L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), q1 << 1 )), - 1)); /*3*q0 - 31*/ + dmx_nrg = L_add( dmx_nrg, + L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 << 1 ), + L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 << 1 ) ), + 1 ) ); /*3*q0 - 31*/ #endif // !FIX_ISSUE_2615_FALSE_SHIFTING } } -- GitLab From d842ad19a92aa614b5987c540cf0a74b497d334b Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 1 Jun 2026 10:36:03 +0200 Subject: [PATCH 3/6] issue 2615: adding extra argument for final Q value and editing the function to use it. --- lib_com/ivas_prot_fx.h | 19 ++++++++++++++++--- lib_dec/ivas_stereo_dft_plc_fx.c | 20 ++++++++++++++++---- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 8c7a31bc1..2b8ad3df9 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -552,13 +552,26 @@ void filter_with_allpass_fx( Word16 q_shift ); +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING Word32 stereo_dft_dmx_swb_nrg_fx( - const Word32 *dmx_k0, /* i : first subframe spectrum */ - const Word32 *dmx_k1, /* i : second subframe spectrum */ + const Word32* dmx_k0, /* i : first subframe spectrum */ + const Word32* dmx_k1, /* i : second subframe spectrum */ const Word16 frame_length, /* i : frame lanegth */ const Word16 q0, - const Word16 q1 + const Word16 q1 ); +#else +Word32 stereo_dft_dmx_swb_nrg_fx( + const Word32* dmx_k0, /* i : first subframe spectrum */ + const Word32* dmx_k1, /* i : second subframe spectrum */ + const Word16 frame_length, /* i : frame lanegth */ + const Word16 q0, + const Word16 q1, + const Word16 q_dft +); +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING + + void stereo_dft_dec_core_switching_fx( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c index 4dd4dc89a..13d7fe0ed 100644 --- a/lib_dec/ivas_stereo_dft_plc_fx.c +++ b/lib_dec/ivas_stereo_dft_plc_fx.c @@ -768,12 +768,24 @@ void stereo_dft_res_ecu_burst_att_fx( * ---------------------------------------------------------------*/ /*! r: total energy of downmix with maximum swb bandwidth max */ +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING Word32 stereo_dft_dmx_swb_nrg_fx( - const Word32 *dmx_k0, /* i : first subframe spectrum q0*/ - const Word32 *dmx_k1, /* i : second subframe spectrum q1*/ + const Word32* dmx_k0, /* i : first subframe spectrum q0*/ + const Word32* dmx_k1, /* i : second subframe spectrum q1*/ const Word16 frame_length, /* i : frame lanegth Q0*/ const Word16 q0, const Word16 q1 ) +#else +Word32 stereo_dft_dmx_swb_nrg_fx( + const Word32* dmx_k0, /* i : first subframe spectrum q0*/ + const Word32* dmx_k1, /* i : second subframe spectrum q1*/ + const Word16 frame_length, /* i : frame lanegth Q0*/ + const Word16 q0, + const Word16 q1, + const Word16 q_dft) +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING + + { Word16 i; Word32 dmx_nrg; @@ -802,8 +814,8 @@ Word32 stereo_dft_dmx_swb_nrg_fx( 1 ) ); /*3*q0 - 31*/ #else dmx_nrg = L_add( dmx_nrg, - L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 << 1 ), - L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 << 1 ) ), + L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), (q_dft - q0) << 1 ), + L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), (q_dft - q1) << 1 ) ), 1 ) ); /*3*q0 - 31*/ #endif // !FIX_ISSUE_2615_FALSE_SHIFTING } -- GitLab From cdf00750577a950e931c84c934a924f9ef2c72c2 Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 1 Jun 2026 10:44:55 +0200 Subject: [PATCH 4/6] issue 2615: Wrapping all changes in one switch use. getting rid of the conditional since it needs to shift to achieve final Q value --- lib_dec/ivas_stereo_dft_plc_fx.c | 40 +++++++++++++++++--------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c index 13d7fe0ed..cef3c729e 100644 --- a/lib_dec/ivas_stereo_dft_plc_fx.c +++ b/lib_dec/ivas_stereo_dft_plc_fx.c @@ -793,34 +793,36 @@ Word32 stereo_dft_dmx_swb_nrg_fx( dmx_nrg = EPSILON_FIX; move32(); test(); - IF( q0 == 0 && q1 == 0 ) +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING + IF(q0 == 0 && q1 == 0) { - FOR( i = 0; i < frame_length / 2; i++ ) + FOR(i = 0; i < frame_length / 2; i++) { - dmx_nrg = L_add( dmx_nrg, - L_shr( L_add( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), - Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ) ), - 1 ) ); /* Q0 */ + dmx_nrg = L_add(dmx_nrg, + L_shr(L_add(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), + Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1])), + 1)); /* Q0 */ } } ELSE { - FOR( i = 0; i < frame_length / 2; i++ ) + FOR(i = 0; i < frame_length / 2; i++) { -#ifndef FIX_ISSUE_2615_FALSE_SHIFTING - dmx_nrg = L_add( dmx_nrg, - L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 ), - L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 ) ), - 1 ) ); /*3*q0 - 31*/ -#else - dmx_nrg = L_add( dmx_nrg, - L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), (q_dft - q0) << 1 ), - L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), (q_dft - q1) << 1 ) ), - 1 ) ); /*3*q0 - 31*/ -#endif // !FIX_ISSUE_2615_FALSE_SHIFTING + dmx_nrg = L_add(dmx_nrg, + L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), q0), + L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), q1)), + 1)); /*3*q0 - 31*/ } } - +#else + FOR(i = 0; i < frame_length / 2; i++) + { + dmx_nrg = L_add(dmx_nrg, + L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), (q_dft - q0) << 1), + L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), (q_dft - q1) << 1)), + 1)); /* Q(2*q_dft)*/ + } +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING return dmx_nrg; } -- GitLab From 38f9dddc1531a4d654a5fbf21485bfbd1150b98f Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 1 Jun 2026 10:51:54 +0200 Subject: [PATCH 5/6] issue 2615: Changing instances of function to match the new argument --- lib_dec/ivas_stereo_dft_dec_dmx_fx.c | 12 ++++++++++-- lib_dec/ivas_stereo_dft_dec_fx.c | 15 ++++++++++++--- lib_dec/ivas_stereo_dft_plc_fx.c | 2 -- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c index 125063b3f..d992c36cd 100644 --- a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c @@ -125,7 +125,11 @@ void stereo_dft_unify_dmx_fx( } IF( prev_bfi ) { - dmx_nrg = stereo_dft_dmx_swb_nrg_fx( DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), 0, 0 ); +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING + dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0); +#else + dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0, hStereoDft->q_dft); +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING } /* Analyze nature of current frame */ @@ -382,7 +386,11 @@ void stereo_dft_unify_dmx_fx( q_shift1 = sub( hStereoDft->q_dft, hStereoDft->q_DFT_past_DMX_fx[idx_k1] ); /*dmx energy memory*/ - hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx( hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), q_shift0, q_shift1 ); /* 2 * q_dft */ +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1); /* 2 * q_dft */ +#else + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1, hStereoDft->q_dft); /* 2 * q_dft */ +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING move32(); } } diff --git a/lib_dec/ivas_stereo_dft_dec_fx.c b/lib_dec/ivas_stereo_dft_dec_fx.c index 59307c38d..247e5b304 100644 --- a/lib_dec/ivas_stereo_dft_dec_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_fx.c @@ -1936,7 +1936,11 @@ void stereo_dft_dec_fx( move32(); IF( prev_bfi ) { - dmx_nrg = stereo_dft_dmx_swb_nrg_fx( DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), 0, 0 ); /* Q0 */ +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING + dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0); /* Q0 */ +#else + dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0, hStereoDft->q_dft); /* Q0 */ +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING } FOR( k = 0; k < N_div; k++ ) @@ -2657,8 +2661,13 @@ void stereo_dft_dec_fx( q_shift0 = sub( hStereoDft->q_dft, hStereoDft->q_DFT_past_DMX_fx[idx_k0] ); q_shift1 = sub( hStereoDft->q_dft, hStereoDft->q_DFT_past_DMX_fx[idx_k1] ); /*dmx energy memory*/ - hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx( hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), q_shift0, q_shift1 ); /* 2 * q_DFT */ - } +#ifndef FIX_ISSUE_2615_FALSE_SHIFTING + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1); /* 2 * q_DFT */ +#else + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1, hStereoDft->q_dft); /* 2 * q_DFT */ +#endif // !FIX_ISSUE_2615_FALSE_SHIFTING + + } stereo_dft_compute_td_stefi_params_fx( hStereoDft, samp_ratio ); diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c index cef3c729e..e2140151c 100644 --- a/lib_dec/ivas_stereo_dft_plc_fx.c +++ b/lib_dec/ivas_stereo_dft_plc_fx.c @@ -784,8 +784,6 @@ Word32 stereo_dft_dmx_swb_nrg_fx( const Word16 q1, const Word16 q_dft) #endif // !FIX_ISSUE_2615_FALSE_SHIFTING - - { Word16 i; Word32 dmx_nrg; -- GitLab From 9b1a4efd7be8a8a0bc3599c7808639d3b970f30c Mon Sep 17 00:00:00 2001 From: "Azizi, Arash" Date: Mon, 1 Jun 2026 10:55:38 +0200 Subject: [PATCH 6/6] issue 2615: Clang formatting patch --- lib_dec/ivas_stereo_dft_dec_dmx_fx.c | 8 +++--- lib_dec/ivas_stereo_dft_dec_fx.c | 11 ++++---- lib_dec/ivas_stereo_dft_plc_fx.c | 42 ++++++++++++++-------------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c index d992c36cd..29512e189 100644 --- a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c @@ -126,9 +126,9 @@ void stereo_dft_unify_dmx_fx( IF( prev_bfi ) { #ifndef FIX_ISSUE_2615_FALSE_SHIFTING - dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0); + dmx_nrg = stereo_dft_dmx_swb_nrg_fx( DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), 0, 0 ); #else - dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0, hStereoDft->q_dft); + dmx_nrg = stereo_dft_dmx_swb_nrg_fx( DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), 0, 0, hStereoDft->q_dft ); #endif // !FIX_ISSUE_2615_FALSE_SHIFTING } @@ -387,9 +387,9 @@ void stereo_dft_unify_dmx_fx( /*dmx energy memory*/ #ifndef FIX_ISSUE_2615_FALSE_SHIFTING - hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1); /* 2 * q_dft */ + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx( hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), q_shift0, q_shift1 ); /* 2 * q_dft */ #else - hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1, hStereoDft->q_dft); /* 2 * q_dft */ + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx( hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), q_shift0, q_shift1, hStereoDft->q_dft ); /* 2 * q_dft */ #endif // !FIX_ISSUE_2615_FALSE_SHIFTING move32(); } diff --git a/lib_dec/ivas_stereo_dft_dec_fx.c b/lib_dec/ivas_stereo_dft_dec_fx.c index 247e5b304..b373fd508 100644 --- a/lib_dec/ivas_stereo_dft_dec_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_fx.c @@ -1937,9 +1937,9 @@ void stereo_dft_dec_fx( IF( prev_bfi ) { #ifndef FIX_ISSUE_2615_FALSE_SHIFTING - dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0); /* Q0 */ + dmx_nrg = stereo_dft_dmx_swb_nrg_fx( DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), 0, 0 ); /* Q0 */ #else - dmx_nrg = stereo_dft_dmx_swb_nrg_fx(DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), 0, 0, hStereoDft->q_dft); /* Q0 */ + dmx_nrg = stereo_dft_dmx_swb_nrg_fx( DFT[0], DFT[0] + STEREO_DFT32MS_N_MAX, s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), 0, 0, hStereoDft->q_dft ); /* Q0 */ #endif // !FIX_ISSUE_2615_FALSE_SHIFTING } @@ -2662,12 +2662,11 @@ void stereo_dft_dec_fx( q_shift1 = sub( hStereoDft->q_dft, hStereoDft->q_DFT_past_DMX_fx[idx_k1] ); /*dmx energy memory*/ #ifndef FIX_ISSUE_2615_FALSE_SHIFTING - hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1); /* 2 * q_DFT */ + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx( hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), q_shift0, q_shift1 ); /* 2 * q_DFT */ #else - hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx(hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min(hStereoDft->NFFT, STEREO_DFT32MS_N_32k), q_shift0, q_shift1, hStereoDft->q_dft); /* 2 * q_DFT */ + hStereoDft->past_dmx_nrg_fx = stereo_dft_dmx_swb_nrg_fx( hStereoDft->DFT_past_DMX_fx[idx_k0], hStereoDft->DFT_past_DMX_fx[idx_k1], s_min( hStereoDft->NFFT, STEREO_DFT32MS_N_32k ), q_shift0, q_shift1, hStereoDft->q_dft ); /* 2 * q_DFT */ #endif // !FIX_ISSUE_2615_FALSE_SHIFTING - - } + } stereo_dft_compute_td_stefi_params_fx( hStereoDft, samp_ratio ); diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c index e2140151c..8a5025fed 100644 --- a/lib_dec/ivas_stereo_dft_plc_fx.c +++ b/lib_dec/ivas_stereo_dft_plc_fx.c @@ -770,19 +770,19 @@ void stereo_dft_res_ecu_burst_att_fx( /*! r: total energy of downmix with maximum swb bandwidth max */ #ifndef FIX_ISSUE_2615_FALSE_SHIFTING Word32 stereo_dft_dmx_swb_nrg_fx( - const Word32* dmx_k0, /* i : first subframe spectrum q0*/ - const Word32* dmx_k1, /* i : second subframe spectrum q1*/ + const Word32 *dmx_k0, /* i : first subframe spectrum q0*/ + const Word32 *dmx_k1, /* i : second subframe spectrum q1*/ const Word16 frame_length, /* i : frame lanegth Q0*/ const Word16 q0, const Word16 q1 ) #else Word32 stereo_dft_dmx_swb_nrg_fx( - const Word32* dmx_k0, /* i : first subframe spectrum q0*/ - const Word32* dmx_k1, /* i : second subframe spectrum q1*/ + const Word32 *dmx_k0, /* i : first subframe spectrum q0*/ + const Word32 *dmx_k1, /* i : second subframe spectrum q1*/ const Word16 frame_length, /* i : frame lanegth Q0*/ const Word16 q0, const Word16 q1, - const Word16 q_dft) + const Word16 q_dft ) #endif // !FIX_ISSUE_2615_FALSE_SHIFTING { Word16 i; @@ -792,33 +792,33 @@ Word32 stereo_dft_dmx_swb_nrg_fx( move32(); test(); #ifndef FIX_ISSUE_2615_FALSE_SHIFTING - IF(q0 == 0 && q1 == 0) + IF( q0 == 0 && q1 == 0 ) { - FOR(i = 0; i < frame_length / 2; i++) + FOR( i = 0; i < frame_length / 2; i++ ) { - dmx_nrg = L_add(dmx_nrg, - L_shr(L_add(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), - Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1])), - 1)); /* Q0 */ + dmx_nrg = L_add( dmx_nrg, + L_shr( L_add( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), + Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ) ), + 1 ) ); /* Q0 */ } } ELSE { - FOR(i = 0; i < frame_length / 2; i++) + FOR( i = 0; i < frame_length / 2; i++ ) { - dmx_nrg = L_add(dmx_nrg, - L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), q0), - L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), q1)), - 1)); /*3*q0 - 31*/ + dmx_nrg = L_add( dmx_nrg, + L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 ), + L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 ) ), + 1 ) ); /*3*q0 - 31*/ } } #else - FOR(i = 0; i < frame_length / 2; i++) + FOR( i = 0; i < frame_length / 2; i++ ) { - dmx_nrg = L_add(dmx_nrg, - L_shr(L_add(L_shl(Madd_32_32(Mpy_32_32(dmx_k0[2 * i], dmx_k0[2 * i]), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1]), (q_dft - q0) << 1), - L_shl(Madd_32_32(Mpy_32_32(dmx_k1[2 * i], dmx_k1[2 * i]), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1]), (q_dft - q1) << 1)), - 1)); /* Q(2*q_dft)*/ + dmx_nrg = L_add( dmx_nrg, + L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), ( q_dft - q0 ) << 1 ), + L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), ( q_dft - q1 ) << 1 ) ), + 1 ) ); /* Q(2*q_dft)*/ } #endif // !FIX_ISSUE_2615_FALSE_SHIFTING return dmx_nrg; -- GitLab