Skip to content

Bug in renderer flush in ISM JBM bitrate switching

There is a bug in the ISM JBM bitrate switching, specifically when switching from DISC to PARAM mode. In this case, the function ivas_jbm_dec_flush_renderer() is called with the wrong number of transport channels as the number of TC channels from the new frame is used (i.e. 2 TCs) while the flushing corresponds to the old received frame (i.e. 3 or 4 TCs). Consequently, not all decoded TC channels are used to render the flushed samples.

Command line to reproduce:

// 4 ISM with and without metadata bitrate switching from 24.4 kbps to 256 kbps, 48 kHz in, 48 kHz out, DTX on, binaural out
../IVAS_cod -dtx -ism 4 testv/stvISM1.csv NULL NULL testv/stvISM4.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv4ISM48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -voip -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin binaural 48 netsimoutput testv/stv4ISM48n.wav_brate_sw_48-48_DTX_binaural_JBM5.tst

The synthesis is slightly improved - red = main, yellow = bug-fixed from MR: Screenshot_-_10_15_2024___6_10_35_PM

Note: the bug was discovered in the course of !1804 (merged).

Edited by vaclav