From 12e48fda59637f7114c70df3f2cd79efa5133e03 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 21 Mar 2025 14:43:50 +0530 Subject: [PATCH] Fix for 3GPP issue 1390: Stereo Encoder 13.2 kbps: Wrong Classification for Noisy Content on LTV Link #1390 --- lib_enc/analy_sp_fx.c | 4 ++++ lib_enc/ivas_cpe_enc_fx.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib_enc/analy_sp_fx.c b/lib_enc/analy_sp_fx.c index 185bac26b..bd4ad12ba 100644 --- a/lib_enc/analy_sp_fx.c +++ b/lib_enc/analy_sp_fx.c @@ -399,6 +399,10 @@ static void find_enr_dft_ivas_fx( BinE_fx[STEREO_DFT_N_12k8_ENC / 2 - 1] = BinE_fx[STEREO_DFT_N_12k8_ENC / 2 - 2]; // // *q_Bin_E move32(); + Word16 norm = getScaleFactor32( BinE_fx, L_FFT ); + scale_sig32( BinE_fx, L_FFT, norm ); + *q_Bin_E = add( *q_Bin_E, norm ); + move16(); L_lerp_fx( BinE_fx, Bin_E_fx, L_FFT / 2, STEREO_DFT_N_12k8_ENC / 2, q_Bin_E ); MVR2R_WORD32( Bin_E_fx, ptE_fx, VOIC_BINS ); // *q_Bin_E diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index ea70a33d3..a98aa4f53 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -707,7 +707,7 @@ ivas_error ivas_cpe_enc_fx( sts[1]->q_old_inp = add( sts[1]->q_old_inp, shift ); move16(); shift = getScaleFactor16( sts[1]->input_fx, input_frame ); - Scale_sig( sts[1]->input_fx, input_frame, shift ); /* sts[1]->q_inp + shift */ + Copy_Scale_sig_32_16( sts[1]->input32_fx, sts[1]->input_fx, input_frame, sub( add( sts[1]->q_inp, shift ), sts[1]->q_inp32 ) ); /* sts[1]->q_inp + shift */ sts[1]->q_inp = add( sts[1]->q_inp, shift ); move16(); Scale_sig( sts[1]->input_fx, input_frame, sub( s_min( sts[1]->q_inp, sts[1]->q_old_inp ), sts[1]->q_inp ) ); /* min( sts[1]->q_inp, sts[1]->q_old_inp) */ @@ -722,7 +722,7 @@ ivas_error ivas_cpe_enc_fx( sts[0]->q_old_inp = add( sts[0]->q_old_inp, shift ); move16(); shift = getScaleFactor16( sts[0]->input_fx, input_frame ); - Scale_sig( sts[0]->input_fx, input_frame, shift ); /* sts[0]->q_inp + shift */ + Copy_Scale_sig_32_16( sts[0]->input32_fx, sts[0]->input_fx, input_frame, sub( add( sts[0]->q_inp, shift ), sts[0]->q_inp32 ) ); /* sts[0]->q_inp + shift */ sts[0]->q_inp = add( sts[0]->q_inp, shift ); move16(); Scale_sig( sts[0]->input_fx, input_frame, sub( s_min( sts[0]->q_inp, sts[0]->q_old_inp ), sts[0]->q_inp ) ); /* min( sts[1]->q_inp, sts[1]->q_old_inp) */ -- GitLab