Skip to content

Saturation during tilt computation

The function est_tilt_ivas_fx() is using the function Dot_product12() to compute energy. This function should be used for input having a 12 bit range and a frame length of 64 samples to prevent overflow (12+12+6+1 = 31).

Because the function is called with a length of 128 (at frame 129 and 130 of the attached bitstream), and the excitation vector is using most of the dynamic (I have seen value using 15 bits), saturation occurs and thus leading to a wrong estimation of the tilt (voice_fac).

Here I have 2 propositions: 1- Dot_product12() should be replaced or adapted to prevent saturation on a longer frame. 2- the function decod_gen_2sbfr_ivas_fx, where est_tilt_ivas_fx() is called, should follow more closely the structure of decod_gen_voic_fx(), where Rescale_exc() is used and makes Q_exc variable to ensure the dynamic of the excitation vector is under an appropriate level.

ff_mic12_SbSb001_-stereo_24400_16.bit IVAS_dec STEREO 16 bit syn

SHA: aa0d22c1

Edited by vaillancour