Commit 039b08da authored by Manuel Jander's avatar Manuel Jander
Browse files

Fix extract_l() overflow in EnhanceClass_fx() by saturation.

parent 7790f560
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@
#define NONBE_FIX_2493_EXTRACT_L_spectral_balancer_fx16 /* FhG: Fix extract_l overflow inside spectral_balancer_fx16() */
#define NONBE_FIX_2493_EXTRACT_L_IGF_CalculateStereoEnvelope_fx /* FhG: Fix extract_l overflow inside IGF_CalculateStereoEnvelope_fx() */
#define NONBE_FIX_2493_CHECK_EXTRACT_L_GetTCXMaxenergyChange_fx /* FhG: Fix extract_l overflow inside GetTCXMaxenergyChange_fx() */
#define NONBE_FIX_2493_CHECK_EXTRACT_L_EnhanceClass_fx  /* FhG: Fix extract_l overflow inside EnhanceClass_fx() */
#define FIX_2584_TD_SM_ISSUE                            /* VA: Fix inconsistencies in the SM part of the TD stereo */
#define FIX_2556_ALIGN_CONDITIONS                       /* VA: Fix different conditions that were not exact between float and fix, BE on self-test */
#define FIX_NONBE_2579_INCORRECT_LAG_CALCULATION        /* Dolby: fix 2579: Incorrect lag calculation */
+4 −0
Original line number Diff line number Diff line
@@ -1288,10 +1288,14 @@ static Word16 EnhanceClass_fx(
    tmp1 = s_min( tmp1, 8192 /* 1.0f in Q13 */ );

    L_tmp = L_mult( tmp, tmp1 ); /*Q13+Q13+1 */
#ifdef NONBE_FIX_2493_CHECK_EXTRACT_L_EnhanceClass_fx
    unvoicing_tmp_fx = extract_h( L_shl_sat( L_tmp, 16 - 12 ) ); /*Q15 */
#else
#ifdef FIX_2493_CHECK_EXTRACT_L
    unvoicing_tmp_fx = extract_l2( L_shr( L_tmp, 12 ) ); /*Q15 */
#else
    unvoicing_tmp_fx = extract_l( L_shr( L_tmp, 12 ) ); /*Q15 */
#endif
#endif

    /**unvoicing_fx = add(mult_r(16384, *unvoicing_fx), mult_r(16384, unvoicing_tmp_fx));  //Q15 */