diff --git a/lib_com/options.h b/lib_com/options.h index b69b5ed2c5bc6b6973e3a9ae29b4aa61b39cf752..9dad824fba4d86267d5c91cf9f4996b8c50fdd81 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 9468fff6017c9c9c08aacb8f5cb33fc62d763bcf..868374446a02808b79d4a5e0881aee1ba3a8148d 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 ) )