Skip to content

Assert in BASOP renderer when rendering ISM to certain custom LS setup

Basic info

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