From 749ad1973ace972424e05b49d9d963d63310febb Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 28 Aug 2025 16:32:42 +0200 Subject: [PATCH] Merge branch '1978-encoder-crash-to-saturation-missing' into 'main' fix 1978, missing saturation in EVS code Closes #1978 See merge request sa4/audio/ivas-basop!2183 (cherry picked from commit b2399e45bcf7ca64e9baf9dfe435627e3c4a90ec) e0710ca3 fix for missing saturation 5c24127c Merge branch 'main' into 1978-encoder-crash-to-saturation-missing Co-authored-by: vaclav --- lib_com/options.h | 2 ++ lib_enc/gain_enc_fx.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index b69b5ed2c..9dad824fb 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -77,6 +77,7 @@ #define FIX_1942_ASSERTION_LOWSHELF /* FhG: Modified the target_gains_db_fx calculation in compute_t60_coeffs_fx() */ #define FIX_1944_CRASH_FOR_STEREO /* FhG: improve TonalMDCTConceal_InsertNoise calculation precision */ #define FIX_1970_SBA_CRASH /* Dlb: Fix for issue 1970, SBA crash */ +#define FIX_1978_SAT_MISSING_IN_GAIN_ENC /* VA: Fix add saturation missing that lead to a crash in P800-10 */ #define FIX_1946_CRASH_JBM_PROCESSING /* FhG: Increased guard bits of DFT_fx */ /* #################### Start BASOP porting switches ############################ */ @@ -85,6 +86,7 @@ #define FIX_1129_EXT_REND_OUTPUT_HIGH /* Philips: issue 1129: External renderer BINAURAL_ROOM_REVERB format output level too high compared to internal rendering output */ #define NONBE_1328_FIX_NON_LINEARITY /* VA: Fix possible issue when computing bwe_exc_extended and previous frame were almost 0, float issue 1328 */ + /* #################### End BASOP porting switches ############################ */ #endif diff --git a/lib_enc/gain_enc_fx.c b/lib_enc/gain_enc_fx.c index 9468fff60..868374446 100644 --- a/lib_enc/gain_enc_fx.c +++ b/lib_enc/gain_enc_fx.c @@ -728,10 +728,18 @@ void gain_enc_SQ_fx( *gain_pit = round_fx_o( L_shl_o( L_div, add( exp, exp_div ), &Overflow ), &Overflow ); /*Q14*/ +#ifdef FIX_1978_SAT_MISSING_IN_GAIN_ENC + L_tmp1 = L_mult_sat( coeff[1], coeff[4] ); /*Q31*/ +#else L_tmp1 = L_mult( coeff[1], coeff[4] ); /*Q31*/ +#endif exp1 = add( exp_coeff[1], exp_coeff[4] ); +#ifdef FIX_1978_SAT_MISSING_IN_GAIN_ENC + L_tmp2 = L_mult_sat( coeff[0], coeff[3] ); /*Q31*/ +#else L_tmp2 = L_mult( coeff[0], coeff[3] ); /*Q31*/ +#endif exp2 = add( exp_coeff[0], exp_coeff[3] ); IF( GT_16( exp1, exp2 ) ) -- GitLab