Experiments related to saturation with floating point code (ivas-float-update)
It was observed that the range of values of signal or buffers exceeded the 16-bit size (functions reused from EVS) which is leading to saturation, that in turn is leading to high MLD. In the floating reference code (ivas-float-update), the values were limited to 32767 (simulating saturation) at some points where values exceeded the range:
- edct function
- TCX_MDCT_Inverse function
- acelp_core_dec (after syn_12k8), syn buffers were limited
- IMDCT function
With these changes, LTV test was run against ivas-float-update branch. It was observed that around 25 cases in original inputs, 245 cases in +10dB inputs and 2 cases in -10dB inputs had MLDs greater than 5 which overlapped with the cases reported with main branch (Fixed code). From this experiment, it appears that saturation happening due to bigger amplitude of signals could be leading to MLD deviations for some of the cases.
Changes in ivas-float-update are available here: https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/tree/saturation_check_test_1?ref_type=heads Excel sheet with LTV test result of above-mentioned branch and comparing against Fixed point (main branch) LTV test scores: comparison_with_floatcode_saturation_LTV.xlsx