diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec.c index 48bf1711b6c9980485325fae7ec91dae0e0a99af..ad20226063325e9a15d75fd7f198e4c3d0186b9d 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 ) {