Draft: Resolve "lib_com/ivas_rotation_com.c : MLD sensitive ISAR_ENC path due to precision differences in sinf()"

  • Related issues: #1607
  • Requested reviewers: @patils, @tyagiri (git blame says you might have contributed this function?)

Reason why this change is needed

  • It seems like a cumulative error builds up from sinf() calls eventually resulting in selecting a different HRTF position
  • Upon listening to the reference, it sounds like a clear bug which is eliminated by this fix

Description of the change

  • Two steps have been taken to alleviate the issue instead of simply using double trig function variants:
    • Compute the cosine with double precision, then demote to float and derive the sine from it using trigonometric identity
    • Normalize the quaternion at the end of the function to ensure any error is spread across components
  • Helper function sincos_angle() is used

Affected operating points

  • Binaural rendering with headrotation / orientation tracking
  • Anything that calls Euler2Quat():

grafik

Related to #1607

Edited by Archit Tamarapu

Merge request reports

Loading