Skip to content

BWE issue leading to crash in stereo

with e6911975, this command line :

IVAS_dec STEREO 32 bit syn

and the following bitstream :

bit.zip

The crash happens at frame 3083, for channel 0 (Left), due to a saturation at Ln3703 of swb_tbe_com.c with the mac_r:


    FOR ( i = 0; i < l_shb_lahead; i++ )
    {
        L_tmp = Mult_32_16(mod_syn[i], gain_frame_Q16); /* Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15 */
        L_tmp2 = Mult_32_16(L_tmp, win[i]);             /* (Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15) + 15 + (1-16) */
    >>> synSHB[i] = mac_r(L_tmp2, overlap[i], MAX_16);
        move16(); /* Q_bwe_exc + Q_gFr_norm - 13 */
        synSHB[i+l_shb_lahead] = round_fx(L_tmp);       /* Q_bwe_exc + Q_gFr_norm - 13 */
    }

But the synthesis at that place fits on 12 bits and the high frequency content has nothing particular. So I don't believe a saturation should occurs there at this point in time. When looking at the previous frames, the level of the BWE of the left channel is below the floating point level but about 3dB (Yellow = Float; Blue=Fix-point)

image

While for the right channel, the BWE seems just corrupted (Red = float; Blue = Fix-point)

image