From bc40dbf0907fb05994df77c860111f66c71e9f17 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 7 May 2025 13:12:05 +0200 Subject: [PATCH 01/12] port NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG --- lib_com/options.h | 1 + lib_enc/ivas_stereo_dft_enc_itd_fx.c | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index c568a52fa..5590d163e 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -101,6 +101,7 @@ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define FIX_969_USAN_IGF_ARITH /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */ +#define NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG /* VoiceAge: issue 1063: division by zero for angle_rot feature in the UNCLR classifier */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index b7429e2e7..67c5a1f04 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -951,7 +951,9 @@ void stereo_dft_enc_compute_itd_fx( Word32 cng_xcorr_filt; Word16 cng_xcorr_filt_e; - +#ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG + Word32 sum_nrg_delta; +#endif Word16 prev_itd_max; Word16 itd_max_flip; @@ -1215,7 +1217,9 @@ void stereo_dft_enc_compute_itd_fx( move32(); xcorr_abs[i] = Sqrt32( xcorr_abs[i], &xcorr_abs_e[i] ); move32(); +#ifndef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG /* VM: prod_LL tends to overflow, better to replace with sum(log(prod_L)) and retrain the classifier */ +#endif prod_LL = prod_L; move32(); prod_LL_e = prod_L_e; @@ -1363,7 +1367,19 @@ void stereo_dft_enc_compute_itd_fx( hStereoClassif->xtalk_fv_fx[E_gainIPD] = L_shr_r( g_IPD, 10 ); // Q15 move32(); +#ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG + IF( L_sub( sum_nrg_L, sum_nrg_R ) >= 0 ) + { + sum_nrg_delta = L_max( L_sub( sum_nrg_L, sum_nrg_R ), 1 << sum_nrg_L_e ); + } + ELSE + { + sum_nrg_delta = L_min( L_sub( sum_nrg_L, sum_nrg_R ), L_negate( 1 << sum_nrg_L_e ) ); + } + //angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); +#else // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / ( sum_nrg_L - sum_nrg_R + 1.0f ) ) ); +#endif L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e ); -- GitLab From 08ee70d12dec06b38fa96a21271aa335ff379fae Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 27 May 2025 08:57:54 -0400 Subject: [PATCH 02/12] correction to port of flp 1504 --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index 67c5a1f04..c24a8b150 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1367,23 +1367,25 @@ void stereo_dft_enc_compute_itd_fx( hStereoClassif->xtalk_fv_fx[E_gainIPD] = L_shr_r( g_IPD, 10 ); // Q15 move32(); + L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); + #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG - IF( L_sub( sum_nrg_L, sum_nrg_R ) >= 0 ) + IF( L_temp >= 0 ) { - sum_nrg_delta = L_max( L_sub( sum_nrg_L, sum_nrg_R ), 1 << sum_nrg_L_e ); + L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); } ELSE { - sum_nrg_delta = L_min( L_sub( sum_nrg_L, sum_nrg_R ), L_negate( 1 << sum_nrg_L_e ) ); + L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MIN_32, 0, &L_temp_e ); } - //angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); #else - // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / ( sum_nrg_L - sum_nrg_R + 1.0f ) ) ); -#endif - L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); +#endif + L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ); + + angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 -- GitLab From 6303a1c41b670ded8569ead4b918db77f82cf173 Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Tue, 27 May 2025 16:17:47 +0200 Subject: [PATCH 03/12] fix the arithmetic calculating angle_rot --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index c24a8b150..d0dfad07e 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -953,6 +953,7 @@ void stereo_dft_enc_compute_itd_fx( Word16 cng_xcorr_filt_e; #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG Word32 sum_nrg_delta; + Word16 sum_nrg_delta_e; #endif Word16 prev_itd_max; Word16 itd_max_flip; @@ -1370,24 +1371,31 @@ void stereo_dft_enc_compute_itd_fx( L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG - IF( L_temp >= 0 ) + sum_nrg_delta = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &sum_nrg_delta_e ); + IF( GE_32( sum_nrg_delta, 0 ) ) { - L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); + sum_nrg_delta = L_max( sum_nrg_delta, 1 << sum_nrg_delta_e ); + } ELSE { - L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MIN_32, 0, &L_temp_e ); + sum_nrg_delta = L_min( sum_nrg_delta, L_negate( 1 << sum_nrg_delta_e ) ); } + //angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); + L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); + L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), sum_nrg_delta_e ) ); + angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 #else + // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / ( sum_nrg_L - sum_nrg_R + 1.0f ) ) ); + L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); -#endif - L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 +#endif hStereoClassif->unclr_fv_fx[E_angle_rot] = L_shl( angle_rot, 1 ); // Q15 move32(); -- GitLab From 4218029280383380bf3ca8e2d11f6771c7f766ac Mon Sep 17 00:00:00 2001 From: malenov Date: Tue, 27 May 2025 16:25:50 +0200 Subject: [PATCH 04/12] cleanup --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index d0dfad07e..e139707ed 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1367,9 +1367,7 @@ void stereo_dft_enc_compute_itd_fx( move32(); hStereoClassif->xtalk_fv_fx[E_gainIPD] = L_shr_r( g_IPD, 10 ); // Q15 move32(); - - L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); - + #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG sum_nrg_delta = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &sum_nrg_delta_e ); IF( GE_32( sum_nrg_delta, 0 ) ) -- GitLab From d922d8698061da197ba5fb295760fc468d457ffe Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Tue, 27 May 2025 16:28:30 +0200 Subject: [PATCH 05/12] clang format --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index e139707ed..1466da075 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1367,19 +1367,18 @@ void stereo_dft_enc_compute_itd_fx( move32(); hStereoClassif->xtalk_fv_fx[E_gainIPD] = L_shr_r( g_IPD, 10 ); // Q15 move32(); - + #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG sum_nrg_delta = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &sum_nrg_delta_e ); IF( GE_32( sum_nrg_delta, 0 ) ) { sum_nrg_delta = L_max( sum_nrg_delta, 1 << sum_nrg_delta_e ); - } ELSE { sum_nrg_delta = L_min( sum_nrg_delta, L_negate( 1 << sum_nrg_delta_e ) ); } - //angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); + // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), sum_nrg_delta_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 @@ -1392,7 +1391,7 @@ void stereo_dft_enc_compute_itd_fx( angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 - // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 + // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 #endif hStereoClassif->unclr_fv_fx[E_angle_rot] = L_shl( angle_rot, 1 ); // Q15 -- GitLab From 67d191233f2ef11e9cbd1f21263ba1024629f5ae Mon Sep 17 00:00:00 2001 From: malenov Date: Tue, 27 May 2025 16:42:20 +0200 Subject: [PATCH 06/12] cleanup --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index 6d14a2020..3383175a0 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1388,10 +1388,8 @@ void stereo_dft_enc_compute_itd_fx( L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ); - - angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 - // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 + // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 #endif hStereoClassif->unclr_fv_fx[E_angle_rot] = L_shl( angle_rot, 1 ); // Q15 -- GitLab From 2833b10e3489f91f3d1964fd5422a7534a12ebbe Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Tue, 27 May 2025 16:46:14 +0200 Subject: [PATCH 07/12] clang format --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index a8d3f809d..b9bd589cf 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1389,7 +1389,7 @@ void stereo_dft_enc_compute_itd_fx( L_temp2 = BASOP_Util_Divide3232_Scale_newton( grand_dot_prod_real, L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 - // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 + // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 #endif hStereoClassif->unclr_fv_fx[E_angle_rot] = L_shl( angle_rot, 1 ); // Q15 -- GitLab From 6effe4b25ed7c25019d17c9baa7e1873710ce559 Mon Sep 17 00:00:00 2001 From: malenov Date: Tue, 27 May 2025 16:51:49 +0200 Subject: [PATCH 08/12] apply L_shl instead of << --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index b9bd589cf..ea37a5b30 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1372,11 +1372,11 @@ void stereo_dft_enc_compute_itd_fx( sum_nrg_delta = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &sum_nrg_delta_e ); IF( GE_32( sum_nrg_delta, 0 ) ) { - sum_nrg_delta = L_max( sum_nrg_delta, 1 << sum_nrg_delta_e ); + sum_nrg_delta = L_max( sum_nrg_delta, L_shl( 1, sum_nrg_delta_e ) ); } ELSE { - sum_nrg_delta = L_min( sum_nrg_delta, L_negate( 1 << sum_nrg_delta_e ) ); + sum_nrg_delta = L_min( sum_nrg_delta, L_negate( L_shl( 1, sum_nrg_delta_e ) ) ); } // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); -- GitLab From 9435485e5dea4ef9ae52aaba851656825eaa6382 Mon Sep 17 00:00:00 2001 From: malenov Date: Wed, 28 May 2025 12:22:40 +0200 Subject: [PATCH 09/12] Chnage to _newton version of the BASOP divide function --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index ea37a5b30..b9200bb26 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1379,7 +1379,7 @@ void stereo_dft_enc_compute_itd_fx( sum_nrg_delta = L_min( sum_nrg_delta, L_negate( L_shl( 1, sum_nrg_delta_e ) ) ); } // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); - L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); + L_temp2 = BASOP_Util_Divide3232_Scale_newton( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), sum_nrg_delta_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 #else -- GitLab From b76c0f2faba04c95051b613c9a7dc67d145a888e Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Fri, 1 Aug 2025 15:45:58 -0400 Subject: [PATCH 10/12] merge main + add switch missing in options.h --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 458b1690d..fe5c38761 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -171,7 +171,7 @@ #define NONBE_FIX_1056_ISM_RATE_SWITCH /* FhG: Fix #1056: fix TC buffer udpate on a ISM rate switch */ #define NONBE_FIX_1075 /* FhG: fix segfault for bitrate switching + BINAURAL_ROOM_REVERB output in MC */ #define NON_BE_FIX_1041_USE_OLD_CNG_LSPS_IF_NONSTAB /* FhG: fix bug in TD MDCT-Stereo concealment */ - +#define NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG /* VoiceAge: issue 1063: division by zero for angle_rot feature in the UNCLR classifier */ /* #################### End BASOP porting switches ############################ */ #endif -- GitLab From 35f0468faac1d3afd7c2eb0f5c0630d31834c7ab Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Fri, 1 Aug 2025 15:46:19 -0400 Subject: [PATCH 11/12] remove warning --- lib_dec/waveadjust_fec_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/waveadjust_fec_dec_fx.c b/lib_dec/waveadjust_fec_dec_fx.c index e0c599e23..1b5b46d66 100644 --- a/lib_dec/waveadjust_fec_dec_fx.c +++ b/lib_dec/waveadjust_fec_dec_fx.c @@ -916,7 +916,7 @@ void concealment_decode_fix( Word16 i; Word16 N = hPlcInfo->L_frameTCX; Word16 *seed = &( hPlcInfo->seed ); - Word16 sign; + Word16 sign = 0; move16(); IF( hPlcInfo->concealment_method == TCX_NONTONAL ) /* #define TCX_NONTONAL 0 */ -- GitLab From 5eca10cdfc660b9bb5963cf632a799a7b1efdbe5 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Fri, 1 Aug 2025 16:20:23 -0400 Subject: [PATCH 12/12] fix possible L_shl ovf --- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index f0bf971fe..373f4287b 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1394,11 +1394,11 @@ void stereo_dft_enc_compute_itd_fx( sum_nrg_delta = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &sum_nrg_delta_e ); IF( GE_32( sum_nrg_delta, 0 ) ) { - sum_nrg_delta = L_max( sum_nrg_delta, L_shl( 1, sum_nrg_delta_e ) ); + sum_nrg_delta = L_max( sum_nrg_delta, L_shl_sat( 1, sum_nrg_delta_e ) ); } ELSE { - sum_nrg_delta = L_min( sum_nrg_delta, L_negate( L_shl( 1, sum_nrg_delta_e ) ) ); + sum_nrg_delta = L_min( sum_nrg_delta, L_negate( L_shl_sat( 1, sum_nrg_delta_e ) ) ); } // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); L_temp2 = BASOP_Util_Divide3232_Scale_newton( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); -- GitLab