Loading lib_enc/lsf_enc_fx.c +37 −17 Original line number Diff line number Diff line Loading @@ -2438,22 +2438,22 @@ static Word32 vq_lvq_lsf_enc( Vr_subt( cand[i], lsf, diff, M ); FOR( j = 0; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc diff[j] = shl_sat( diff[j], 4 ); //??sat #ifdef ISSUE_1796_replace_shl_o diff[j] = shl_sat( diff[j], 4 ); #else diff[j] = shl_o( diff[j], 4, &Overflow ); #endif move16(); } #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mult( mult( diff[0], shl_o( w[0], 1, &Overflow ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif FOR( j = 1; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mac( L_tmp, mult( diff[j], shl_o( w[j], 1, &Overflow ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif Loading Loading @@ -2503,7 +2503,7 @@ static Word32 vq_lvq_lsf_enc_ivas_fx( Word16 quant[LSFMBEST][M], diff[M], dd[M]; Word16 lat_cv[LSFMBEST][M]; Word16 idx_lead[LSFMBEST][2], idx_scale[LSFMBEST][2]; #ifndef ISSUE_1867_replace_overflow_libenc #ifndef ISSUE_1796_replace_shl_o #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif Loading Loading @@ -2575,22 +2575,22 @@ static Word32 vq_lvq_lsf_enc_ivas_fx( Vr_subt( cand[i], lsf, diff, M ); FOR( j = 0; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc diff[j] = shl_sat( diff[j], 4 ); //??sat #ifdef ISSUE_1796_replace_shl_o diff[j] = shl_sat( diff[j], 4 ); #else diff[j] = shl_o( diff[j], 4, &Overflow ); #endif move16(); } #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mult( mult( diff[0], shl_o( w[0], 1, &Overflow ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif FOR( j = 1; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mac( L_tmp, mult( diff[j], shl_o( w[j], 1, &Overflow ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif Loading Loading @@ -3446,8 +3446,12 @@ Word32 qlsf_ARSN_tcvq_Enc_16k_fx( move16(); #ifdef ISSUE_1867_replace_overflow_libenc temp_l = L_mac_sat( temp_l, mult( yy_fx[i], shl_sat( w_fx[i], 2 ) ), yy_fx[i] ); //??sat //??sat #else #ifdef ISSUE_1796_replace_shl_o temp_l = L_mac_o( temp_l, mult( yy_fx[i], shl_sat( w_fx[i], 2 ) ), yy_fx[i], &Overflow ); #else temp_l = L_mac_o( temp_l, mult( yy_fx[i], shl_o( w_fx[i], 2, &Overflow ) ), yy_fx[i], &Overflow ); #endif #endif } cs = shl( cs, 1 ); Loading Loading @@ -3664,10 +3668,18 @@ static void lsf_mid_enc_fx( tmp = shl_sat( tmp, 4 ); //??sat tmp = mult_r_sat( tmp, tmp ); //??sat err = L_mac_sat( err, tmp, shl_sat( wghts[j], 2 ) ); //??sat //??sat #else #ifdef ISSUE_1796_replace_shl_o tmp = shl_sat( tmp, 4 ); #else tmp = shl_o( tmp, 4, &Overflow ); #endif tmp = mult_ro( tmp, tmp, &Overflow ); #ifdef ISSUE_1796_replace_shl_o err = L_mac_o( err, tmp, shl_sat( wghts[j], 2 ), &Overflow ); #else err = L_mac_o( err, tmp, shl_o( wghts[j], 2, &Overflow ), &Overflow ); #endif #endif } /* err = L_shl(err,Wscale); */ Loading Loading @@ -3856,12 +3868,20 @@ static void lsf_mid_enc_ivas_fx( /* tmp is usually very small, we can have some extra precision with very rare saturation */ #ifdef ISSUE_1867_replace_overflow_libenc tmp = shl_sat( tmp, 4 ); //??sat err = L_mac_sat( err, tmp, shl_sat( wghts[j], 2 ) ); //??sat //??sat tmp = mult_r_sat( tmp, tmp ); //??sat err = L_mac_sat( err, tmp, shl_sat( wghts[j], 2 ) ); //??sat //??sat #else #ifdef ISSUE_1796_replace_shl_o tmp = shl_sat( tmp, 4 ); #else tmp = shl_o( tmp, 4, &Overflow ); err = L_mac_o( err, tmp, shl_o( wghts[j], 2, &Overflow ), &Overflow ); #endif tmp = mult_ro( tmp, tmp, &Overflow ); #ifdef ISSUE_1796_replace_shl_o err = L_mac_o( err, tmp, shl_sat( wghts[j], 2 ), &Overflow ); #else err = L_mac_o( err, tmp, shl_o( wghts[j], 2, &Overflow ), &Overflow ); #endif #endif } /* err = L_shl(err,Wscale); */ Loading lib_enc/lsf_msvq_ma_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -1635,8 +1635,12 @@ void midlsf_enc_fx( #ifdef ISSUE_1867_replace_overflow_libenc tmp = shl_sat( tmp, 4 ); //??sat tmp = mult_r_sat( tmp, tmp ); //??sat #else #ifdef ISSUE_1796_replace_shl_o tmp = shl_sat( tmp, 4 ); #else tmp = shl_o( tmp, 4, &Overflow ); #endif tmp = mult_ro( tmp, tmp, &Overflow ); #endif err = L_mac( err, tmp, wghts[j] ); Loading Loading
lib_enc/lsf_enc_fx.c +37 −17 Original line number Diff line number Diff line Loading @@ -2438,22 +2438,22 @@ static Word32 vq_lvq_lsf_enc( Vr_subt( cand[i], lsf, diff, M ); FOR( j = 0; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc diff[j] = shl_sat( diff[j], 4 ); //??sat #ifdef ISSUE_1796_replace_shl_o diff[j] = shl_sat( diff[j], 4 ); #else diff[j] = shl_o( diff[j], 4, &Overflow ); #endif move16(); } #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mult( mult( diff[0], shl_o( w[0], 1, &Overflow ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif FOR( j = 1; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mac( L_tmp, mult( diff[j], shl_o( w[j], 1, &Overflow ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif Loading Loading @@ -2503,7 +2503,7 @@ static Word32 vq_lvq_lsf_enc_ivas_fx( Word16 quant[LSFMBEST][M], diff[M], dd[M]; Word16 lat_cv[LSFMBEST][M]; Word16 idx_lead[LSFMBEST][2], idx_scale[LSFMBEST][2]; #ifndef ISSUE_1867_replace_overflow_libenc #ifndef ISSUE_1796_replace_shl_o #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif Loading Loading @@ -2575,22 +2575,22 @@ static Word32 vq_lvq_lsf_enc_ivas_fx( Vr_subt( cand[i], lsf, diff, M ); FOR( j = 0; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc diff[j] = shl_sat( diff[j], 4 ); //??sat #ifdef ISSUE_1796_replace_shl_o diff[j] = shl_sat( diff[j], 4 ); #else diff[j] = shl_o( diff[j], 4, &Overflow ); #endif move16(); } #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mult( mult( diff[0], shl_sat( w[0], 1 ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mult( mult( diff[0], shl_o( w[0], 1, &Overflow ) ), diff[0] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif FOR( j = 1; j < M; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ //??sat #ifdef ISSUE_1796_replace_shl_o L_tmp = L_mac( L_tmp, mult( diff[j], shl_sat( w[j], 1 ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #else L_tmp = L_mac( L_tmp, mult( diff[j], shl_o( w[j], 1, &Overflow ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */ #endif Loading Loading @@ -3446,8 +3446,12 @@ Word32 qlsf_ARSN_tcvq_Enc_16k_fx( move16(); #ifdef ISSUE_1867_replace_overflow_libenc temp_l = L_mac_sat( temp_l, mult( yy_fx[i], shl_sat( w_fx[i], 2 ) ), yy_fx[i] ); //??sat //??sat #else #ifdef ISSUE_1796_replace_shl_o temp_l = L_mac_o( temp_l, mult( yy_fx[i], shl_sat( w_fx[i], 2 ) ), yy_fx[i], &Overflow ); #else temp_l = L_mac_o( temp_l, mult( yy_fx[i], shl_o( w_fx[i], 2, &Overflow ) ), yy_fx[i], &Overflow ); #endif #endif } cs = shl( cs, 1 ); Loading Loading @@ -3664,10 +3668,18 @@ static void lsf_mid_enc_fx( tmp = shl_sat( tmp, 4 ); //??sat tmp = mult_r_sat( tmp, tmp ); //??sat err = L_mac_sat( err, tmp, shl_sat( wghts[j], 2 ) ); //??sat //??sat #else #ifdef ISSUE_1796_replace_shl_o tmp = shl_sat( tmp, 4 ); #else tmp = shl_o( tmp, 4, &Overflow ); #endif tmp = mult_ro( tmp, tmp, &Overflow ); #ifdef ISSUE_1796_replace_shl_o err = L_mac_o( err, tmp, shl_sat( wghts[j], 2 ), &Overflow ); #else err = L_mac_o( err, tmp, shl_o( wghts[j], 2, &Overflow ), &Overflow ); #endif #endif } /* err = L_shl(err,Wscale); */ Loading Loading @@ -3856,12 +3868,20 @@ static void lsf_mid_enc_ivas_fx( /* tmp is usually very small, we can have some extra precision with very rare saturation */ #ifdef ISSUE_1867_replace_overflow_libenc tmp = shl_sat( tmp, 4 ); //??sat err = L_mac_sat( err, tmp, shl_sat( wghts[j], 2 ) ); //??sat //??sat tmp = mult_r_sat( tmp, tmp ); //??sat err = L_mac_sat( err, tmp, shl_sat( wghts[j], 2 ) ); //??sat //??sat #else #ifdef ISSUE_1796_replace_shl_o tmp = shl_sat( tmp, 4 ); #else tmp = shl_o( tmp, 4, &Overflow ); err = L_mac_o( err, tmp, shl_o( wghts[j], 2, &Overflow ), &Overflow ); #endif tmp = mult_ro( tmp, tmp, &Overflow ); #ifdef ISSUE_1796_replace_shl_o err = L_mac_o( err, tmp, shl_sat( wghts[j], 2 ), &Overflow ); #else err = L_mac_o( err, tmp, shl_o( wghts[j], 2, &Overflow ), &Overflow ); #endif #endif } /* err = L_shl(err,Wscale); */ Loading
lib_enc/lsf_msvq_ma_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -1635,8 +1635,12 @@ void midlsf_enc_fx( #ifdef ISSUE_1867_replace_overflow_libenc tmp = shl_sat( tmp, 4 ); //??sat tmp = mult_r_sat( tmp, tmp ); //??sat #else #ifdef ISSUE_1796_replace_shl_o tmp = shl_sat( tmp, 4 ); #else tmp = shl_o( tmp, 4, &Overflow ); #endif tmp = mult_ro( tmp, tmp, &Overflow ); #endif err = L_mac( err, tmp, wghts[j] ); Loading