Assert in BASOP renderer when rendering ISM to certain custom LS setup
Basic info
- Fixed point: 3ea8505d
Bug description
When rendering ISM to a certain custom LS setup from our tests, an assert is hit:
==================================================================================================
IVAS Codec BASOP Baseline
Based on EVS Codec (Floating Point) 3GPP TS26.443 Nov 04, 2021,
Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
==================================================================================================
Custom Loudspeaker configuration:
AZI, ELE
( 0, -32)
( -58, 0)
( -90, 58)
( 0, 32)
(-122, 0)
( 90, -58)
( 180, -32)
( 122, 0)
( 90, 58)
( 180, 32)
( 58, 0)
( -90, -58)
Input audio file: /Users/knj/Documents/IVAS/ivas-codec/scripts/testv/stv3ISM48s.wav
Output audio file: /Users/knj/Documents/IVAS/ivas-codec/tests/renderer/ref/ISM3_to_t_design_4None_20msNone.wav
Input configuration: Object-based audio (3 objects)
Output configuration: Multichannel (custom loudspeaker layout)
Output sampling rate: 48000 Hz
Head-tracking: ON
-- Start the renderer (quiet mode) --
Assertion failed: (polyIdx != -1 && "EFAP: polygon not found!"), function efap_panning_fx, file ivas_efap_fx.c, line 1434.
fish: Job 1, '/Users/knj/Documents/IVAS/ivas-…' terminated by signal SIGABRT (Abort)
This could hint at a precision problem. For the EFAP panning algorithm, some geometric operations are required to create polygons between the loudspeakers for determining the gains. I did not debug or look into the code, but I can imagine that this could be a situation where the float math finds a solution, but the fixed-point math fails due precision differences.
Ways to reproduce
./IVAS_rend -i scripts/testv/stv3ISM48s.wav -if ISM3 -o ISM3_to_t_design_4None_20msNone.wav -of scripts/ls_layouts/t_design_4.txt -fs 48 -im scripts/testv/stvISM1.csv scripts/testv/stvISM2.csv scripts/testv/stvISM3.csv