From 6f55d5cc3c1b2272e31d6d61fa9599f3a0668000 Mon Sep 17 00:00:00 2001 From: Lauros Pajunen Date: Thu, 18 Sep 2025 12:52:33 +0300 Subject: [PATCH 1/3] Change head tracking parameter to not be a pointer --- lib_rend/ivas_prot_rend.h | 2 +- lib_rend/ivas_rotation.c | 12 ++++++------ lib_rend/lib_rend.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 6cce3e77f8..0bd66308bc 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -1322,7 +1322,7 @@ ivas_error combine_external_and_head_orientations_dec( ); ivas_error combine_external_and_head_orientations_rend( - IVAS_REND_HeadRotData *hHeadTrackData, /* i : head track handle */ + IVAS_REND_HeadRotData hHeadTrackData, /* i : head track data */ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ); diff --git a/lib_rend/ivas_rotation.c b/lib_rend/ivas_rotation.c index 9385bc753e..a8e9acdfcb 100644 --- a/lib_rend/ivas_rotation.c +++ b/lib_rend/ivas_rotation.c @@ -887,7 +887,7 @@ ivas_error combine_external_and_head_orientations_dec( *------------------------------------------------------------------------*/ ivas_error combine_external_and_head_orientations_rend( - IVAS_REND_HeadRotData *hHeadTrackData, /* i : head track handle */ + IVAS_REND_HeadRotData hHeadTrackData, /* i : head track data */ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) @@ -898,14 +898,14 @@ ivas_error combine_external_and_head_orientations_rend( int16_t i; sr_pose_pred_axis = DEFAULT_AXIS; - if ( hHeadTrackData != NULL ) + if ( hHeadTrackData.hOrientationTracker != NULL ) { - if ( hHeadTrackData->headRotEnabled ) + if ( hHeadTrackData.headRotEnabled ) { - headRotQuaternions = hHeadTrackData->headPositions; - listenerPos = hHeadTrackData->Pos; + headRotQuaternions = hHeadTrackData.headPositions; + listenerPos = hHeadTrackData.Pos; } - sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; + sr_pose_pred_axis = hHeadTrackData.sr_pose_pred_axis; } else if ( hExtOrientationData != NULL ) { diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 0f56db1ae3..645772e610 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -5058,7 +5058,7 @@ ivas_error IVAS_REND_CombineHeadAndExternalOrientation( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - return combine_external_and_head_orientations_rend( &hIvasRend->headRotData, hIvasRend->hExternalOrientationData, hIvasRend->hCombinedOrientationData ); + return combine_external_and_head_orientations_rend( hIvasRend->headRotData, hIvasRend->hExternalOrientationData, hIvasRend->hCombinedOrientationData ); } -- GitLab From f214d4658f5c1473723cf710fd4722a8c65a014c Mon Sep 17 00:00:00 2001 From: Lauros Pajunen Date: Thu, 18 Sep 2025 13:04:40 +0300 Subject: [PATCH 2/3] Revert head tracking parameter back to pointer, move head tracking data readings under headRotEnabled --- lib_rend/ivas_prot_rend.h | 2 +- lib_rend/ivas_rotation.c | 13 +++++-------- lib_rend/lib_rend.c | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 0bd66308bc..6cce3e77f8 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -1322,7 +1322,7 @@ ivas_error combine_external_and_head_orientations_dec( ); ivas_error combine_external_and_head_orientations_rend( - IVAS_REND_HeadRotData hHeadTrackData, /* i : head track data */ + IVAS_REND_HeadRotData *hHeadTrackData, /* i : head track handle */ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ); diff --git a/lib_rend/ivas_rotation.c b/lib_rend/ivas_rotation.c index a8e9acdfcb..b9286d3d96 100644 --- a/lib_rend/ivas_rotation.c +++ b/lib_rend/ivas_rotation.c @@ -887,7 +887,7 @@ ivas_error combine_external_and_head_orientations_dec( *------------------------------------------------------------------------*/ ivas_error combine_external_and_head_orientations_rend( - IVAS_REND_HeadRotData hHeadTrackData, /* i : head track data */ + IVAS_REND_HeadRotData *hHeadTrackData, /* i : head track handle */ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) @@ -898,14 +898,11 @@ ivas_error combine_external_and_head_orientations_rend( int16_t i; sr_pose_pred_axis = DEFAULT_AXIS; - if ( hHeadTrackData.hOrientationTracker != NULL ) + if ( hHeadTrackData->headRotEnabled ) { - if ( hHeadTrackData.headRotEnabled ) - { - headRotQuaternions = hHeadTrackData.headPositions; - listenerPos = hHeadTrackData.Pos; - } - sr_pose_pred_axis = hHeadTrackData.sr_pose_pred_axis; + headRotQuaternions = hHeadTrackData->headPositions; + listenerPos = hHeadTrackData->Pos; + sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; } else if ( hExtOrientationData != NULL ) { diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 645772e610..0f56db1ae3 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -5058,7 +5058,7 @@ ivas_error IVAS_REND_CombineHeadAndExternalOrientation( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - return combine_external_and_head_orientations_rend( hIvasRend->headRotData, hIvasRend->hExternalOrientationData, hIvasRend->hCombinedOrientationData ); + return combine_external_and_head_orientations_rend( &hIvasRend->headRotData, hIvasRend->hExternalOrientationData, hIvasRend->hCombinedOrientationData ); } -- GitLab From 4d5a719b35ef33bbd2f375c16fb1a0adaf28aab1 Mon Sep 17 00:00:00 2001 From: Lauros Pajunen Date: Thu, 18 Sep 2025 13:13:57 +0300 Subject: [PATCH 3/3] Add switche for issue 1383 --- lib_com/options.h | 1 + lib_rend/ivas_rotation.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 77f6098c21..27394d6ff3 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -163,6 +163,7 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ #define TMP_FIX_1119_SPLIT_RENDERING_VOIP /* FhG: Add error check for unsupported config: split rendering with VoIP mode */ +#define FIX_1383_HEAD_TRACK_SANITIZER /* Nok: issue 1383: Fix head tracking struc values reading in renderer */ /* #################### End BE switches ################################## */ diff --git a/lib_rend/ivas_rotation.c b/lib_rend/ivas_rotation.c index b9286d3d96..ad42bd515e 100644 --- a/lib_rend/ivas_rotation.c +++ b/lib_rend/ivas_rotation.c @@ -898,10 +898,20 @@ ivas_error combine_external_and_head_orientations_rend( int16_t i; sr_pose_pred_axis = DEFAULT_AXIS; +#ifdef FIX_1383_HEAD_TRACK_SANITIZER if ( hHeadTrackData->headRotEnabled ) { headRotQuaternions = hHeadTrackData->headPositions; listenerPos = hHeadTrackData->Pos; +#else + if ( hHeadTrackData != NULL ) + { + if ( hHeadTrackData->headRotEnabled ) + { + headRotQuaternions = hHeadTrackData->headPositions; + listenerPos = hHeadTrackData->Pos; + } +#endif sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; } else if ( hExtOrientationData != NULL ) -- GitLab