Possibe saturation in FB BWE
for some highlevel content, a saturation can happen in this part of the code : ``` IF( EQ_16( extl, FB_TBE ) ) { tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); Scale_sig( fb_tbe_demph, 1, tmp ); Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); /* i: White_exc16k_FB in (14-n2) */ /* o: White_exc16k_FB_temp in (14-n2) */ FOR( i = 0; i < 10; i++ ) { FOR( j = 0; j < 32; ++j ) { >>> White_exc16k_FB_temp[i * 32 + j] = mult_r( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); move16(); } } ``` Where cos_fb_exc_fx is in Q15 and containing values equal to 32767 and -32768. It seems White_exc16k_FB_temp is also using the full 16 bits scale, so leading to potential 32767 x 32767 or -32768 x -32768, thus leading to an overflow caused by the rounding. I proposed to use mult_r_sat() instead.
issue