Commit ac74c86e authored by Marek Szczerba's avatar Marek Szczerba
Browse files

Update towards support all orientation tracking modes, external renderer.

parent 162a9712
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -83,9 +83,14 @@ static
#define MAX_NUM_OUTPUT_CHANNELS    16
#define MAX_OUTPUT_PCM_BUFFER_SIZE ( MAX_NUM_OUTPUT_CHANNELS * MAX_FRAME_SIZE )

#ifdef FIX_I109_ORIENTATION_TRACKING
#define IVAS_PUBLIC_ORIENT_TRK_NONE ( 0 )
#define IVAS_PUBLIC_ORIENT_TRK_REF  ( 1 )
#define IVAS_PUBLIC_ORIENT_TRK_AVG  ( 2 )
#else
#define IVAS_PUBLIC_ORIENT_TRK_REF 0
#define IVAS_PUBLIC_ORIENT_TRK_AVG 1

#endif

typedef struct
{
@@ -709,7 +714,11 @@ static bool parseCmdlIVAS_dec(

    arg->enableHeadRotation = false;
    arg->headrotTrajFileName = NULL;
#ifdef FIX_I109_ORIENTATION_TRACKING
    arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_NONE;
#else
    arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_REF;
#endif

#ifdef SUPPORT_JBM_TRACEFILE
    arg->jbmTraceFilename = NULL;
@@ -892,7 +901,15 @@ static bool parseCmdlIVAS_dec(
            }
            char tmp[4];
            strcpy( tmp, argv[i + 1] );
#ifdef FIX_I109_ORIENTATION_TRACKING
            if ( strcmp( to_upper( tmp ), "NONE" ) == 0 )
            {
                arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_NONE;
            }
            else if ( strcmp( to_upper( tmp ), "REF" ) == 0 )
#else
            if ( strcmp( to_upper( tmp ), "REF" ) == 0 )
#endif
            {
                arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_REF;
            }
+21 −2
Original line number Diff line number Diff line
@@ -722,6 +722,13 @@ int main(
        }
    }

#ifdef FIX_I109_ORIENTATION_TRACKING
    if ( IVAS_REND_SetOrientationTrackingMode( hIvasRend, args.orientationTracking ) )
    {
        return error;
    }
#endif

    /* Set up output custom layout configuration */
    if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM )
    {
@@ -1314,7 +1321,15 @@ static int8_t parseOrientationTracking(

    to_upper( value );

#ifdef FIX_I109_ORIENTATION_TRACKING
    if ( strcmp( value, "NONE" ) == 0)
    {
        *tracking_type = IVAS_ORIENT_TRK_NONE;
    }
    else if ( strcmp( value, "REF" ) == 0 )
#else
    if ( strcmp( value, "REF" ) == 0 )
#endif
    {
        *tracking_type = IVAS_ORIENT_TRK_REF;
    }
@@ -1499,7 +1514,11 @@ static CmdlnArgs defaultArgs(
    clearString( args.customHrtfFilePath );
    clearString( args.renderConfigFilePath );

#ifdef FIX_I109_ORIENTATION_TRACKING
    args.orientationTracking = IVAS_ORIENT_TRK_NONE;
#else
    args.orientationTracking = IVAS_ORIENT_TRK_REF;
#endif
    args.noDiegeticPan = 0.0f;

    args.delayCompensationEnabled = true;
+10 −0
Original line number Diff line number Diff line
@@ -1461,12 +1461,22 @@ typedef enum
 *----------------------------------------------------------------------------------*/

/* Orientation tracking types */
#ifdef FIX_I109_ORIENTATION_TRACKING
#define IVAS_ORIENT_TRK_NONE                    0
#define IVAS_ORIENT_TRK_REF                     1
#define IVAS_ORIENT_TRK_AVG                     2
#else
#define IVAS_ORIENT_TRK_REF                     0
#define IVAS_ORIENT_TRK_AVG                     1
#endif

typedef enum
{
#ifdef FIX_I109_ORIENTATION_TRACKING
    OTR_TRACKING_NONE = IVAS_ORIENT_TRK_NONE,
#else
    OTR_TRACKING_NONE = IVAS_ORIENT_TRK_REF-1,
#endif
    OTR_TRACKING_REF_ORIENT = IVAS_ORIENT_TRK_REF, /* track orientation relative to external reference orientation (default: no rotation) */
    OTR_TRACKING_AVG_ORIENT = IVAS_ORIENT_TRK_AVG  /* track orientation relative to average orientation */

+7 −0
Original line number Diff line number Diff line
@@ -5595,6 +5595,13 @@ ivas_error ivas_orient_trk_SetTrackingType(
    OTR_TRACKING_T trackingType         /* i    : orientation tracking type     */
);

#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            */
);
#endif

#ifdef FIX_I109_ORIENTATION_TRACKING
ivas_error ivas_orient_trk_Process(
    ivas_orient_trk_state_t *pOTR,      /* i/o  : orientation tracker handle    */
+6 −2
Original line number Diff line number Diff line
@@ -688,11 +688,15 @@ ivas_error ivas_init_decoder(
#ifdef FIX_I109_ORIENTATION_TRACKING
    if ( st_ivas->hDecoderConfig->Opt_Headrotation )
    {
        if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_AVG )
        if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_NONE )
        {
            ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_NONE );
        }
        else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_AVG )
        {
            ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_AVG_ORIENT );
        }
        else
        else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF )
        {
            ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_ORIENT );
        }
Loading