Loading lib_dec/ivas_init_dec.c +20 −5 Original line number Diff line number Diff line Loading @@ -757,24 +757,39 @@ ivas_error ivas_init_decoder( { if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_NONE ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_NONE ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_NONE ) ) != IVAS_ERR_OK ) { return error; } } else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_AVG ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_AVG_ORIENT ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_AVG_ORIENT ) ) != IVAS_ERR_OK ) { return error; } } else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_ORIENT ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_ORIENT ) ) != IVAS_ERR_OK ) { return error; } } #ifdef OTR_REFERENCE_VECTOR_TRACKING else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF_VEC ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC ) ) != IVAS_ERR_OK ) { return error; } } else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF_VEC_LEV ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC_LEV ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC_LEV ) ) != IVAS_ERR_OK ) { return error; } } else { Loading lib_rend/ivas_orient_trk.c +19 −15 Original line number Diff line number Diff line Loading @@ -496,7 +496,8 @@ void ivas_orient_trk_Init( #ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_SetTrackingType( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ const OTR_TRACKING_T trackingType ) /* i/o : orientation tracking type */ const OTR_TRACKING_T trackingType /* i/o: orientation tracking type */ ) { if ( pOTR == NULL ) { Loading Loading @@ -524,7 +525,8 @@ void ivas_orient_trk_SetTrackingType( ivas_error ivas_orient_trk_SetReferenceRotation( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ IVAS_QUATERNION refRot ) /* i : reference rotation */ const IVAS_QUATERNION refRot /* i : reference rotation */ ) { if ( pOTR == NULL ) { Loading Loading @@ -696,7 +698,8 @@ ivas_error ivas_orient_trk_Process( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ IVAS_QUATERNION absRot, /* i : absolute head rotation */ float updateRate, /* i : rotation update rate [Hz] */ IVAS_QUATERNION *pTrkRot ) /* o : tracked rotation */ IVAS_QUATERNION *pTrkRot /* o : tracked rotation */ ) { float normalizedOrientation; float relativeOrientationRate; Loading Loading @@ -779,6 +782,7 @@ ivas_error ivas_orient_trk_Process( { *pTrkRot = pOTR->trkRot; } return result; } #else Loading lib_rend/ivas_prot_rend.h +16 −16 Original line number Diff line number Diff line Loading @@ -892,7 +892,7 @@ void ivas_orient_trk_SetTrackingType( #ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_SetReferenceRotation( ivas_orient_trk_state_t *pOTR, /* i/o: orientatoin trakcer handle */ IVAS_QUATERNION refRot /* i : reference rotation */ const IVAS_QUATERNION refRot /* i : reference rotation */ ); #ifdef OTR_REFERENCE_VECTOR_TRACKING Loading lib_rend/ivas_rotation.c +6 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ ivas_error ivas_headTrack_open( ) { int16_t i; ivas_error error; /* Allocate Head-Tracking handle */ if ( ( *hHeadTrackData = (HEAD_TRACK_DATA_HANDLE) malloc( sizeof( HEAD_TRACK_DATA ) ) ) == NULL ) Loading @@ -72,7 +73,11 @@ ivas_error ivas_headTrack_open( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Orientation tracking" ); } ivas_orient_trk_Init( ( *hHeadTrackData )->OrientationTracker ); if ( ( error = ivas_orient_trk_Init( ( *hHeadTrackData )->OrientationTracker ) ) != IVAS_ERR_OK ) { return error; } #endif /* Initialise Rmat_prev to I, Rmat will be computed later */ Loading lib_rend/lib_rend.c +66 −15 Original line number Diff line number Diff line Loading @@ -910,6 +910,7 @@ static void initHeadRotation( { int16_t i, crossfade_len; float tmp; ivas_error error; /* Head rotation is enabled by default */ hIvasRend->headRotData.headRotEnabled = 1; Loading @@ -933,7 +934,11 @@ static void initHeadRotation( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Orientation tracking" ); } ivas_orient_trk_Init( hIvasRend->headRotData.hOrientationTracker ); if ( ( error = ivas_orient_trk_Init( hIvasRend->headRotData.hOrientationTracker ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; #else Loading Loading @@ -3953,13 +3958,21 @@ ivas_error IVAS_REND_SetHeadRotation( return IVAS_ERR_OK; } #ifdef FIX_I109_ORIENTATION_TRACKING /*-------------------------------------------------------------------* * IVAS_REND_SetOrientationTrackingMode() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_SetOrientationTrackingMode( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const uint8_t otrMode /* i : Orientation tracking mode */ ) { OTR_TRACKING_T mode; ivas_error error; if ( hIvasRend == NULL ) { Loading Loading @@ -3988,59 +4001,97 @@ ivas_error IVAS_REND_SetOrientationTrackingMode( break; } ivas_orient_trk_SetTrackingType( hIvasRend->headRotData.hOrientationTracker, mode ); if ( ( error = ivas_orient_trk_SetTrackingType( hIvasRend->headRotData.hOrientationTracker, mode ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } /*-------------------------------------------------------------------* * IVAS_REND_SetReferenceRotation() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_SetReferenceRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION refRot /* i : Reference rotation */ ) { /*-----------------------------------------------------------------* * Validate function arguments *-----------------------------------------------------------------*/ ivas_error error; /* Validate function arguments */ if ( hIvasRend == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } ivas_orient_trk_SetReferenceRotation( hIvasRend->headRotData.hOrientationTracker, refRot ); if ( ( error = ivas_orient_trk_SetReferenceRotation( hIvasRend->headRotData.hOrientationTracker, refRot ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } /*-------------------------------------------------------------------* * IVAS_REND_GetMainOrientation() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_GetMainOrientation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ IVAS_QUATERNION *pOrientation /* i/o: Quaternion pointer for main orientation */ ) { ivas_error error; if ( hIvasRend == NULL || pOrientation == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } ivas_orient_trk_GetMainOrientation( hIvasRend->headRotData.hOrientationTracker, pOrientation ); if ( ( error = ivas_orient_trk_GetMainOrientation( hIvasRend->headRotData.hOrientationTracker, pOrientation ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } /*-------------------------------------------------------------------* * IVAS_REND_GetTrackedRotation() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_GetTrackedRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ IVAS_QUATERNION *pRotation /* i/o: Quaternion pointer processed rotation */ ) { ivas_error error; if ( hIvasRend == NULL || pRotation == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } ivas_orient_trk_GetTrackedRotation( hIvasRend->headRotData.hOrientationTracker, pRotation ); if ( ( error = ivas_orient_trk_GetTrackedRotation( hIvasRend->headRotData.hOrientationTracker, pRotation ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } #ifdef OTR_REFERENCE_VECTOR_TRACKING /*---------------------------------------------------------------------* * IVAS_REND_SetReferenceVector( ) Loading Loading
lib_dec/ivas_init_dec.c +20 −5 Original line number Diff line number Diff line Loading @@ -757,24 +757,39 @@ ivas_error ivas_init_decoder( { if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_NONE ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_NONE ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_NONE ) ) != IVAS_ERR_OK ) { return error; } } else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_AVG ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_AVG_ORIENT ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_AVG_ORIENT ) ) != IVAS_ERR_OK ) { return error; } } else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_ORIENT ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_ORIENT ) ) != IVAS_ERR_OK ) { return error; } } #ifdef OTR_REFERENCE_VECTOR_TRACKING else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF_VEC ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC ) ) != IVAS_ERR_OK ) { return error; } } else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF_VEC_LEV ) { ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC_LEV ); if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC_LEV ) ) != IVAS_ERR_OK ) { return error; } } else { Loading
lib_rend/ivas_orient_trk.c +19 −15 Original line number Diff line number Diff line Loading @@ -496,7 +496,8 @@ void ivas_orient_trk_Init( #ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_SetTrackingType( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ const OTR_TRACKING_T trackingType ) /* i/o : orientation tracking type */ const OTR_TRACKING_T trackingType /* i/o: orientation tracking type */ ) { if ( pOTR == NULL ) { Loading Loading @@ -524,7 +525,8 @@ void ivas_orient_trk_SetTrackingType( ivas_error ivas_orient_trk_SetReferenceRotation( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ IVAS_QUATERNION refRot ) /* i : reference rotation */ const IVAS_QUATERNION refRot /* i : reference rotation */ ) { if ( pOTR == NULL ) { Loading Loading @@ -696,7 +698,8 @@ ivas_error ivas_orient_trk_Process( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ IVAS_QUATERNION absRot, /* i : absolute head rotation */ float updateRate, /* i : rotation update rate [Hz] */ IVAS_QUATERNION *pTrkRot ) /* o : tracked rotation */ IVAS_QUATERNION *pTrkRot /* o : tracked rotation */ ) { float normalizedOrientation; float relativeOrientationRate; Loading Loading @@ -779,6 +782,7 @@ ivas_error ivas_orient_trk_Process( { *pTrkRot = pOTR->trkRot; } return result; } #else Loading
lib_rend/ivas_prot_rend.h +16 −16 Original line number Diff line number Diff line Loading @@ -892,7 +892,7 @@ void ivas_orient_trk_SetTrackingType( #ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_SetReferenceRotation( ivas_orient_trk_state_t *pOTR, /* i/o: orientatoin trakcer handle */ IVAS_QUATERNION refRot /* i : reference rotation */ const IVAS_QUATERNION refRot /* i : reference rotation */ ); #ifdef OTR_REFERENCE_VECTOR_TRACKING Loading
lib_rend/ivas_rotation.c +6 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ ivas_error ivas_headTrack_open( ) { int16_t i; ivas_error error; /* Allocate Head-Tracking handle */ if ( ( *hHeadTrackData = (HEAD_TRACK_DATA_HANDLE) malloc( sizeof( HEAD_TRACK_DATA ) ) ) == NULL ) Loading @@ -72,7 +73,11 @@ ivas_error ivas_headTrack_open( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Orientation tracking" ); } ivas_orient_trk_Init( ( *hHeadTrackData )->OrientationTracker ); if ( ( error = ivas_orient_trk_Init( ( *hHeadTrackData )->OrientationTracker ) ) != IVAS_ERR_OK ) { return error; } #endif /* Initialise Rmat_prev to I, Rmat will be computed later */ Loading
lib_rend/lib_rend.c +66 −15 Original line number Diff line number Diff line Loading @@ -910,6 +910,7 @@ static void initHeadRotation( { int16_t i, crossfade_len; float tmp; ivas_error error; /* Head rotation is enabled by default */ hIvasRend->headRotData.headRotEnabled = 1; Loading @@ -933,7 +934,11 @@ static void initHeadRotation( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Orientation tracking" ); } ivas_orient_trk_Init( hIvasRend->headRotData.hOrientationTracker ); if ( ( error = ivas_orient_trk_Init( hIvasRend->headRotData.hOrientationTracker ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; #else Loading Loading @@ -3953,13 +3958,21 @@ ivas_error IVAS_REND_SetHeadRotation( return IVAS_ERR_OK; } #ifdef FIX_I109_ORIENTATION_TRACKING /*-------------------------------------------------------------------* * IVAS_REND_SetOrientationTrackingMode() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_SetOrientationTrackingMode( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const uint8_t otrMode /* i : Orientation tracking mode */ ) { OTR_TRACKING_T mode; ivas_error error; if ( hIvasRend == NULL ) { Loading Loading @@ -3988,59 +4001,97 @@ ivas_error IVAS_REND_SetOrientationTrackingMode( break; } ivas_orient_trk_SetTrackingType( hIvasRend->headRotData.hOrientationTracker, mode ); if ( ( error = ivas_orient_trk_SetTrackingType( hIvasRend->headRotData.hOrientationTracker, mode ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } /*-------------------------------------------------------------------* * IVAS_REND_SetReferenceRotation() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_SetReferenceRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION refRot /* i : Reference rotation */ ) { /*-----------------------------------------------------------------* * Validate function arguments *-----------------------------------------------------------------*/ ivas_error error; /* Validate function arguments */ if ( hIvasRend == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } ivas_orient_trk_SetReferenceRotation( hIvasRend->headRotData.hOrientationTracker, refRot ); if ( ( error = ivas_orient_trk_SetReferenceRotation( hIvasRend->headRotData.hOrientationTracker, refRot ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } /*-------------------------------------------------------------------* * IVAS_REND_GetMainOrientation() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_GetMainOrientation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ IVAS_QUATERNION *pOrientation /* i/o: Quaternion pointer for main orientation */ ) { ivas_error error; if ( hIvasRend == NULL || pOrientation == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } ivas_orient_trk_GetMainOrientation( hIvasRend->headRotData.hOrientationTracker, pOrientation ); if ( ( error = ivas_orient_trk_GetMainOrientation( hIvasRend->headRotData.hOrientationTracker, pOrientation ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } /*-------------------------------------------------------------------* * IVAS_REND_GetTrackedRotation() * * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_GetTrackedRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ IVAS_QUATERNION *pRotation /* i/o: Quaternion pointer processed rotation */ ) { ivas_error error; if ( hIvasRend == NULL || pRotation == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } ivas_orient_trk_GetTrackedRotation( hIvasRend->headRotData.hOrientationTracker, pRotation ); if ( ( error = ivas_orient_trk_GetTrackedRotation( hIvasRend->headRotData.hOrientationTracker, pRotation ) ) != IVAS_ERR_OK ) { return error; } return IVAS_ERR_OK; } #ifdef OTR_REFERENCE_VECTOR_TRACKING /*---------------------------------------------------------------------* * IVAS_REND_SetReferenceVector( ) Loading