Skip to content

Investigation for LTV crash issue for test case 10dB "ltv-Multi-channel 5_1 at 13.2 kbps, 48kHz in, 48kHz out"

There is an LTV crash issue with the fixed point decoder:
Test case: 10dB "ltv-Multi-channel 5_1 at 13.2 kbps, 48kHz in, 48kHz out" –
Command:
./IVAS_dec 5_1 48 ltv48_MC51.wav_MC51_13200_48-48_5_1.g192 ltv48_MC51.wav_MC51_13200_48-48_5_1.wav

The crash occurs at frame 548 in the function “gain_dec_gacelp_uv_fx” within “decod_unvoiced_ivas_fx” in “acelp_core_dec_ivas_fx”. The crash happens at the statement “*gain_code = L_shl(Mpy_32_16_1(*past_gcode, *gain_inov), 3);” when performing L_shl by 3. “gain_dec_gacelp_uv_fx” is an EVS function, and the Q of “gain_code” is considered as Q16 Word32. In the floating code of IVAS, the values of “gain_code” exceeds 32767, which will not fit in Word32 Q16, causing a crash. The value of gain_code in the float workspace for frame 548 is 36829.7852.

If the Q of “gain_code” is to be changed, it would require modifications in the subsequent functions that use “gain_code” after “gain_dec_gacelp_uv_fx”. Even saturating the value of “gain_code” does not resolve the issue, as it then crashes at a different place.

Code snippets for float and fixed at the place of crash respectively: image

image

Values of “gain_code” as observed from Float workspace at frame 548 and frame 549 respectively are - Frame 548 - 36829.7852 Frame 549 - 53306.2383

Encoded stream: ltv48_MC51.wav_MC51_13200_48-48_5_1.g192