Commit 839c13bb authored by Arthur Tritthart's avatar Arthur Tritthart
Browse files

fix issue 1795: Q3 overflow

parent f7da3e8d
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -111,4 +111,6 @@

#define FIX_1735_W_SHL_SAT_L                    /* FhG: Usage of W_shl_sat_l() */

#define FIX_ISSUE_1795_Q3_OVERFLOW              /* FhG: Q3 overflow in function WB_BWE_gain_pred_fx (EVS legacy code) BE, MR1855 */

#endif
+7 −0
Original line number Diff line number Diff line
@@ -242,8 +242,15 @@ Word16 WB_BWE_gain_pred_fx(

    enerL = L_deposit_l( enerL_16 );
    enerL = L_shl( enerL, 6 );           /*Q6 */
#ifdef FIX_ISSUE_1795_Q3_OVERFLOW_not
    /* Here, we first square WB_fenv into Q6 format, then it is taken 3x */
    L_tmp = L_mult0( WB_fenv[0], WB_fenv[0] );     /* Q6 */
    L_tmp = L_add(L_tmp, L_add( L_tmp, L_tmp ) );  /* Q6 */
#else
    /* Here, we have not enough headroom for mult with 3, so we get some overflow */
    tmp1 = i_mult_sat( 3, WB_fenv[0] );  /*Q3 */
    L_tmp = L_mult0( tmp1, WB_fenv[0] ); /*Q6 */
#endif

    test();
    test();