From ea81af1c30ca0555b4ee8b8861e4ee715861d4e1 Mon Sep 17 00:00:00 2001 From: hsd Date: Wed, 8 Mar 2023 22:58:40 +0100 Subject: [PATCH] [mod] unified processing of the reference vector modes with OTR_TRACKING_REF_ORIENT --- lib_rend/ivas_orient_trk.c | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/lib_rend/ivas_orient_trk.c b/lib_rend/ivas_orient_trk.c index cf5a4b3028..918b47f232 100644 --- a/lib_rend/ivas_orient_trk.c +++ b/lib_rend/ivas_orient_trk.c @@ -537,20 +537,16 @@ ivas_error ivas_orient_trk_GetMainOrientation( case OTR_TRACKING_NONE: *pOrientation = IdentityQuaternion(); break; +#ifdef OTR_REFERENCE_VECTOR_TRACKING + case OTR_TRACKING_REF_VEC: + case OTR_TRACKING_REF_VEC_LEV: +#endif /* OTR_REFERENCE_VECTOR_TRACKING */ case OTR_TRACKING_REF_ORIENT: *pOrientation = pOTR->refRot; break; case OTR_TRACKING_AVG_ORIENT: *pOrientation = pOTR->absAvgRot; break; -#ifdef OTR_REFERENCE_VECTOR_TRACKING - case OTR_TRACKING_REF_VEC: - *pOrientation = pOTR->refRot; - break; - case OTR_TRACKING_REF_VEC_LEV: - *pOrientation = pOTR->refRot; - break; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ } return IVAS_ERR_OK; } @@ -587,10 +583,9 @@ ivas_error ivas_orient_trk_SetReferenceVector( switch ( pOTR->trackingType ) { + case OTR_TRACKING_NONE: case OTR_TRACKING_REF_ORIENT: case OTR_TRACKING_AVG_ORIENT: - return IVAS_ERR_WRONG_MODE; - case OTR_TRACKING_NONE: case OTR_TRACKING_REF_VEC: acousticFrontVector = VectorSubtract( listenerPos, refPos ); break; @@ -617,8 +612,7 @@ ivas_error ivas_orient_trk_SetReferenceVector( ivasForwardVector.x = -1.0f; ivasForwardVector.y = 0.0f; ivasForwardVector.z = 0.0f; - VectorRotationToQuaternion( acousticFrontVector, ivasForwardVector, &pOTR->refRot ); - + VectorRotationToQuaternion( ivasForwardVector, acousticFrontVector, &pOTR->refRot ); return IVAS_ERR_OK; } #endif /* OTR_REFERENCE_VECTOR_TRACKING */ @@ -690,7 +684,10 @@ ivas_error ivas_orient_trk_Process( case OTR_TRACKING_NONE: trkQuat = absQuat; break; - +#ifdef OTR_REFERENCE_VECTOR_TRACKING + case OTR_TRACKING_REF_VEC: + case OTR_TRACKING_REF_VEC_LEV: +#endif /* OTR_REFERENCE_VECTOR_TRACKING */ case OTR_TRACKING_REF_ORIENT: /* Reset average orientation */ pOTR->absAvgRot = absQuat; @@ -739,15 +736,6 @@ ivas_error ivas_orient_trk_Process( /* Compute filter coefficient corresponding to desired cutoff frequency */ pOTR->alpha = sinf( 2.0f * EVS_PI * cutoffFrequency / updateRate ); break; -#ifdef OTR_REFERENCE_VECTOR_TRACKING - case OTR_TRACKING_REF_VEC: - case OTR_TRACKING_REF_VEC_LEV: - { - /* This processing step of the OTR_TRACKING_REF_VEC/OTR_TRACKING_REF_VEC_LEVEL is identical */ - QuaternionProduct( pOTR->refRot, absQuat, &trkQuat ); - break; - } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ default: result = IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Non-supported orientation tracking adaptation type" ); break; -- GitLab