Skip to content

STEREO CNG and EVS LPCNG , initialization value of shb CNG parameter leads to incorrect startup interpolation in dB domain, not BE

Basic info

EVS initilization of shb CNG parameter leads to incorrect startup interpolation in dB domain, likely not BE

in in cng_dec.c line 858

"hTdCngDec->last_shb_ener = 0.001f;"

in cng_dec.c line 732

" ener = hTdCngDec->shb_cng_ener + sin_table256[i] * ( hTdCngDec->last_shb_ener - hTdCngDec->shb_cng_ener );"

The last_shb_ener , should be initialized to something like -82 in dB domain corresponding to a received shb energy index index0(-15), while it now is initialized to 0.001f

  • Commit SHA: c42f4258
  • Platform: MSVC and LINUX

Bug description

initialization error for EVS SHB CNG and IVAS -stereo shb CNG

Ways to reproduce

(Clear steps or refer to a failing automated test, e.g. with a pipeline link)

see inactive define //#define FIX617_UBSAN_DIVBYZERO_STEREOCNG_LAST_SHB_ENER_INIT

in https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/tree/617-ubsan-division-by-zero-in-stereo-cng-when-inut-is-16khz-and-output-is-32khz

run:

./IVAS_cod -STEREO -dtx 24400 16 ./scripts/testv/stvST16nwav bit
./IVAS_dec stereo 32 bit out.wav 

and break at line 
in cng_dec.c line 732
"   ener = hTdCngDec->shb_cng_ener + sin_table256[i] * ( **hTdCngDec->last_shb_ener -** hTdCngDec->shb_cng_ener );"