Precision issues for Orientation tracking REF_VEC mode in VectorRotationToQuaternion_fx
Basic info
- Float reference: f9ca922123
- Fixed point: cf7f073c (main) ensure
FIX_BASOP_2361_OTRis active
Bug description
The headrotation trajectory full-circle-with-up-and-down-4s.csv is expected to be cancelled out by the static head trajectory const000.csv + the reference vector movement full-circle-with-up-and-down-4s-ccw-Vector3.csv. However this is not the case and a single digit MAX_ABS_DIFF is observed.
Further details in comment below. The root cause is related to precision of the vector math functions.
Ways to reproduce
Run the tests as described in the original issue #2361 with the branch/fix mentioned above.
make -j
python3 -m pytest -n auto -rA tests/renderer_short/test_renderer.py
Or run e.g. a failing testcase directly (with STV):
# Reference
./IVAS_rend -q -no_delay_cmp -fs 48 -fr 5 -i scripts/testv/stv714MC48c.wav -if 7_1_4 -of BINAURAL -o ref.wav -T scripts/trajectories/full-circle-with-up-and-down-4s.csv
# OTR REF VEC
./IVAS_rend -q -no_delay_cmp -fs 48 -fr 5 -i scripts/testv/stv714MC48c.wav -if 7_1_4 -of BINAURAL -o otr_ref_vec.wav -T scripts/trajectories/const000.csv -rvf scripts/trajectories/full-circle-with-up-and-down-4s-ccw-Vector3.csv -otr ref_vec
# diff the files ref.wav and otr_ref_vec.wav
Edited by Archit Tamarapu