diff --git a/celt/celt.c b/celt/celt.c index 3b1b4f6d6f158f6a871fbadf6c163ed910b055ba..8c9105bdd53dcbd2702bb294f6f1737c51b0ab8c 100644 --- a/celt/celt.c +++ b/celt/celt.c @@ -865,8 +865,9 @@ static int stereo_analysis(const CELTMode *m, const celt_norm *X, R = X[N0+j]; M = L+R; S = L-R; - sumLR += EXTEND32(ABS16(L)) + EXTEND32(ABS16(R)); - sumMS += EXTEND32(ABS16(M)) + EXTEND32(ABS16(S)); + /* We cast to 32-bit first because of the -32768 case */ + sumLR += ABS32(EXTEND32(L)) + ABS32(EXTEND32(R)); + sumMS += ABS32(EXTEND32(M)) + ABS32(EXTEND32(S)); } } sumMS = MULT16_32_Q15(QCONST16(0.707107f, 15), sumMS); diff --git a/silk/fixed/prefilter_FIX.c b/silk/fixed/prefilter_FIX.c index 1b54d142d7b1f9fd497489c59da71b098bfc0313..a96f5118b0bd30681afccb9e3f0de69298fef181 100644 --- a/silk/fixed/prefilter_FIX.c +++ b/silk/fixed/prefilter_FIX.c @@ -135,9 +135,9 @@ void silk_prefilter_FIX( tmp_32 = silk_SMULWB( tmp_32, -psEncCtrl->GainsPre_Q14[ k ] ); /* Q24 */ tmp_32 = silk_RSHIFT_ROUND( tmp_32, 14 ); /* Q10 */ B_Q10[ 1 ]= silk_SAT16( tmp_32 ); - x_filt_Q12[ 0 ] = silk_SMLABB( silk_SMULBB( st_res_Q2[ 0 ], B_Q10[ 0 ] ), P->sHarmHP_Q2, B_Q10[ 1 ] ); + x_filt_Q12[ 0 ] = silk_MLA( silk_MUL( st_res_Q2[ 0 ], B_Q10[ 0 ] ), P->sHarmHP_Q2, B_Q10[ 1 ] ); for( j = 1; j < psEnc->sCmn.subfr_length; j++ ) { - x_filt_Q12[ j ] = silk_SMLABB( silk_SMULBB( st_res_Q2[ j ], B_Q10[ 0 ] ), st_res_Q2[ j - 1 ], B_Q10[ 1 ] ); + x_filt_Q12[ j ] = silk_MLA( silk_MUL( st_res_Q2[ j ], B_Q10[ 0 ] ), st_res_Q2[ j - 1 ], B_Q10[ 1 ] ); } P->sHarmHP_Q2 = st_res_Q2[ psEnc->sCmn.subfr_length - 1 ];