From e51b3544318dd35aef7d88a613e7502d217522d3 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 12 Sep 2024 18:53:49 +0530 Subject: [PATCH] Fix for 3GPP issue 886 - Crash in stereo_dft_generate_comfort_noise_fx at 24k4 --- lib_dec/ivas_stereo_cng_dec.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec.c index 48bf1711b..ad2022606 100644 --- a/lib_dec/ivas_stereo_cng_dec.c +++ b/lib_dec/ivas_stereo_cng_dec.c @@ -1047,10 +1047,13 @@ static void stereo_dft_generate_comfort_noise_fx( { ptr_cng = cngNoiseLevel_hist + hFdCngCom->startBand; ptr_tmp = cngNoiseLevel_upd + hFdCngCom->startBand; + Word32 temppp; + Word16 shift_g = shr( find_guarded_bits_fx( shr( sub( st->last_L_frame, hFdCngCom->startBand ), 1 ) ), 1 ); FOR( i = 0; i < shr( sub( st->last_L_frame, hFdCngCom->startBand ), 1 ); i++ ) { E0 = W_add( E0, *ptr_cng++ ); - E1 = W_mac_32_32( E1, ( *ptr_tmp ), ( *ptr_tmp ) ); + temppp = L_shr( ( *ptr_tmp ), shift_g ); + E1 = W_mac_32_32( E1, temppp, temppp ); ptr_tmp++; } E0_e = W_norm( E0 ); @@ -1058,7 +1061,7 @@ static void stereo_dft_generate_comfort_noise_fx( E0_e = add( sub( st->hFdCngDec->bandNoiseShape_exp, E0_e ), 32 ); E1_e = W_norm( E1 ); E1 = W_shl( E1, E1_e ); - E1_e = sub( 63, add( E1_e, add( shl( q_cngNoiseLevel_upd, 1 ), 1 ) ) ); + E1_e = sub( 63, add( E1_e, add( shl( sub( q_cngNoiseLevel_upd, shift_g ), 1 ), 1 ) ) ); IF( BASOP_Util_Cmp_Mant32Exp( W_extract_h( E0 ), E0_e, W_extract_h( E1 ), E1_e ) < 0 ) { -- GitLab