Commit 771f9e10 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

Contribution 44 - Multi Stream Pose Correction for Split Rendering

Based on commit a2f5686f of Contribution
35.
parent a2f5686f
Loading
Loading
Loading
Loading

.gitlab-ci-custom.yml

deleted100644 → 0
+0 −4
Original line number Diff line number Diff line
include:
  - project: $CUSTOM_CI_PROJECT
    ref: $CUSTOM_CI_REF
    file: $CUSTOM_CI_FILE
+11 −0
Original line number Diff line number Diff line
[SPLITREND]
BITRATE = 768000;
DOF = 1;
HQMODE = 0;
POSECORRECTIONMODE = 1;

[GENERAL]
RENDERER = CREND;

[ROOMACOUSTICS]
REVERB = FALSE;
+11 −0
Original line number Diff line number Diff line
[SPLITREND]
BITRATE = 768000;
DOF = 2;
HQMODE = 0;
POSECORRECTIONMODE = 1;

[GENERAL]
RENDERER = CREND;

[ROOMACOUSTICS]
REVERB = FALSE;
+12 −1
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ typedef struct ivas_split_rend_bits_t
    int32_t bits_written;
    int32_t bits_read;
#ifdef SPLIT_REND_LC3PLUS
    uint8_t codec; /* 0 for Dolby CLDFB, 1 for LC3plus */
    uint8_t codec; /* 0 for Dolby CLDFB, 1 for LC3plus, 2 for LC3plus with TD pose correction */
#endif
} ivas_split_rend_bits_t, IVAS_SPLIT_REND_BITS, *IVAS_SPLIT_REND_BITS_HANDLE;
#endif
@@ -137,6 +137,14 @@ typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
} IVAS_ROOM_ACOUSTICS_CONFIG_DATA;

#ifdef SPLIT_REND_WITH_HEAD_ROT

#ifdef SPLIT_REND_TD_POSE_CORRECTION
typedef enum {
    IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB,
    IVAS_SPLIT_REND_POSE_CORRECTION_MODE_TD,
} IVAS_SPLIT_REND_POSE_CORRECTION_MODE;
#endif

typedef struct _IVAS_SPLIT_REND_CONFIG
{
    int32_t splitRendBitRate; /*Bit rate for split rendering mode, if "pcm_out" is set then "splitRendBitRate" is used as a limit for MD bitrate */
@@ -149,6 +157,9 @@ typedef struct _IVAS_SPLIT_REND_CONFIG
                              3 - (3dof correction. By default YAW, PITCH and ROLL correction)
                              */
    int16_t codec_delay_ms;   /*PLACEHOLDER (currently being ignored) : look ahead delay of the codec that is used to code BIN signal output of pre-renderer*/
#ifdef SPLIT_REND_TD_POSE_CORRECTION
    IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode;
#endif
} IVAS_SPLIT_REND_CONFIG_DATA;
#endif

+21 −0
Original line number Diff line number Diff line
@@ -4750,6 +4750,12 @@ void ivas_renderSplitGetMultiBinPoseData(
    const IVAS_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
	const IVAS_SPLIT_REND_ROT_AXIS rot_axis);
#ifdef SPLIT_REND_TD_POSE_CORRECTION
void ivas_renderSplitUpdateTdCorrectionPoseData(
    const IVAS_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
	const IVAS_SPLIT_REND_ROT_AXIS rot_axis);
#endif

ivas_error ivas_renderMultiBinToSplitBinaural(
    SPLIT_REND_WRAPPER *hSplitBin,
@@ -4774,6 +4780,14 @@ void ivas_rend_CldfbSplitPreRendProcess(
	const int32_t target_md_bits,
	const int16_t low_res_pre_rend_rot);

#ifdef SPLIT_REND_TD_POSE_CORRECTION
void ivas_rend_TdSplitPreRendProcess(
    const IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES],
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    ivas_split_rend_bits_t *pBits
);
#endif

void ivas_rend_CldfbSplitPostRendProcess(
    BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
@@ -4798,6 +4812,13 @@ void ivas_splitBinPostRendMdDec(
#endif
    const int16_t num_md_bands);

#ifdef SPLIT_REND_TD_POSE_CORRECTION
void ivas_rend_TdSplitPostRendProcess(
    ivas_split_rend_bits_t *pBits,
    IVAS_QUATERNION headPosition[MAX_PARAM_SPATIAL_SUBFRAMES],
    MULTI_BIN_REND_POSE_DATA *multiBinPoseData );
#endif

#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
void ivas_log_cldfb2wav_data(
    float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
Loading