Saturation possible in stereo TCX decoding with IGF
Git SHA: 6cfcf27f
Running
./IVAS_cod_float -stereo -max_band fb 48000 48 ltv48_STEREO.wav bit
./IVAS_dec_fx stereo 48 bit out.wav
results in an assert in the L_shl
BASOP. The assert happens in dec_tcx.c
at line 2141:
FOR ( j = startLine; j < endLine; j++ )
{
IF ( st->hIGFDec->flag_sparse[j - IGF_START_MN] == 2 )
{
x_fx[j] = L_shl(x_itf_fx[j - IGF_START_MN], s); // <--- line 2141
}
}
Here, left shift is applied on the values in x_itf_fx
. There are no differences between float decoder and fixed decoder with respect to st->hIGFDec->flag_sparse
, so this is likely not caused by accessing the wrong values. The assert happens for j=372
, so x_itf_fx[228]
is the culprit, which has the value -1206298368. This value being negative triggers the overflow assert in the BASOP function. In the float decoder, the corresponding value is -18406.9258, so negative as well.