diff --git a/lib_com/options.h b/lib_com/options.h index 1d498d32d22e67e3ae3c85b8cce3ec589fba08fd..1db0e842d345024f4810c040fce4af7141498548 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -106,7 +106,7 @@ #define FIX_BASOP_2592_OVERFLOW /* FhG: BASOP #2592: fix overflow in GetF0() */ #define FIX_BASOP_2591_EDGE_DETECT_COMP /* FhG: BASOP #2591: Wrong comparison in edge_detect_fx() */ #define FIX_NONBE_2580_USE_LENGTH_NOT_CONSTANT /* Dolby: fix 2580: use dynamic length denominator for average energy in unclr_calc_corr_features_fx() */ - +#define FIX_BASOP_2599_TCA_OVERFLOW /* VA: issue 2599, Fix TCA overflow */ /* ##################### End NON-BE switches ########################### */ /* ################## End MAINTENANCE switches ######################### */ diff --git a/lib_enc/ivas_stereo_ica_enc_fx.c b/lib_enc/ivas_stereo_ica_enc_fx.c index f981a2957c1e0b1b57c14bd2bd99472f840a1b58..de17deb22718c77bb8f335f0738566256e75c932 100644 --- a/lib_enc/ivas_stereo_ica_enc_fx.c +++ b/lib_enc/ivas_stereo_ica_enc_fx.c @@ -1330,7 +1330,11 @@ static void estDownmixGain_fx( exp = 0; move16(); } +#ifdef FIX_BASOP_2599_TCA_OVERFLOW + unclr_instTargetGain = BASOP_Util_Log10( L_add_sat( unclr_instTargetGain, L_shr( MAX_32, sub( Q31, exp ) ) ), exp ); +#else unclr_instTargetGain = BASOP_Util_Log10( L_add( unclr_instTargetGain, L_shr( MAX_32, sub( Q31, exp ) ) ), exp ); +#endif // unclr_fv_fx is expected in Q15 - log result will be in Q25 - hence rightshift by 10. hStereoClassif->unclr_fv_fx[E_ica_instTargetGain] = L_shr( unclr_instTargetGain, Q10 ); /* Q15 */ move32();