Commit f6bdf5e2 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

add dynamic pose offsets via renderer config

parent f8541b64
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -211,6 +211,11 @@ typedef struct _IVAS_JBM_TRACE_DATA
#define ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES ( ( ( (int32_t) ISAR_MAX_SPLIT_REND_BITRATE / IVAS_NUM_FRAMES_PER_SEC ) + 7 ) >> 3 )
#define ISAR_SPLIT_REND_ADDITIONAL_BYTES_TO_READ      1
#define SPLIT_REND_BITS_BUFF_SIZE                     ( ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES + ISAR_SPLIT_REND_ADDITIONAL_BYTES_TO_READ )
#ifdef NONBE_SPLIT_DYN_OFFSET
#define SPLIT_REND_MAX_YAW_ONLY_POSES   2
#define SPLIT_REND_MAX_PITCH_ONLY_POSES 2
#define SPLIT_REND_MAX_ROLL_ONLY_POSES  2
#endif

typedef enum
{
@@ -275,6 +280,11 @@ typedef struct _ISAR_SPLIT_REND_CONFIG
                                 */
    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*/
    int16_t codec_frame_size_ms; /*Codec frame size in milliseconds, only relevant with LC3plus */
#ifdef NONBE_SPLIT_DYN_OFFSET
    float pose_offsets_yaw[SPLIT_REND_MAX_YAW_ONLY_POSES];     /* Prerendering pose offsets for yaw, should be set dynamically via backlink */
    float pose_offsets_pitch[SPLIT_REND_MAX_PITCH_ONLY_POSES]; /* Prerendering pose offsets for pitch, should be set dynamically via backlink */
    float pose_offsets_roll[SPLIT_REND_MAX_ROLL_ONLY_POSES];   /* Prerendering pose offsets for roll, should be set dynamically via backlink */
#endif
    ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode;
    ISAR_SPLIT_REND_CODEC codec;
    ISAR_SPLIT_REND_RENDERER_SELECTION rendererSelection;
+1 −0
Original line number Diff line number Diff line
@@ -174,6 +174,7 @@
#define NONBE_FIX_1028_1DB_TCX_LEVEL_DROP               /* VA: Harmonize the logic setting LP weighting factor between TCX encoder and TCX decoder */

#define NONBE_FIX_SBA_SIGNALING_BITS_B                  /* FhG: issue 1061: option B: signal sba order additionally in OSBA */
#define NONBE_SPLIT_DYN_OFFSET                          /* FhG: Enable dynamic pose offsets for Split pre-rendering, configurable via renderer config */

/* ##################### End NON-BE switches ########################### */

+7 −0
Original line number Diff line number Diff line
@@ -65,9 +65,16 @@ typedef enum

#define CLDFB_PLC_XF 2 /* Length of cross-fade into first good frame after frame loss in CLDFB cols. */

#ifdef NONBE_SPLIT_DYN_OFFSET
#define SPLIT_REND_POSE_OFFSET_DEFAULT -360.f
#define SPLIT_REND_POSE_OFFSET_THRES_ABS_YAW 180.f
#define SPLIT_REND_POSE_OFFSET_THRES_ABS_PITCH 90.f
#define SPLIT_REND_POSE_OFFSET_THRES_ABS_ROLL 180.f
#else
#define SPLIT_REND_MAX_YAW_ONLY_POSES    2
#define SPLIT_REND_MAX_PITCH_ONLY_POSES  2
#define SPLIT_REND_MAX_ROLL_ONLY_POSES   2
#endif
#define SPLIT_REND_MAX_ONE_AXIS_MD_POSES 2
#define MAX_EXTRAPOLATION_ANGLE          15.0f /* this means additional 15 degrees can be extrapolated on top of MD probing poses*/

+10 −0
Original line number Diff line number Diff line
@@ -264,6 +264,16 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
void isar_init_multi_bin_pose_data(
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData );

#ifdef NONBE_SPLIT_DYN_OFFSET
void isar_renderSplitGetNumPoses(
    const ISAR_SPLIT_REND_ROT_AXIS rot_axis,
    const int16_t dof,
    const int16_t hq_mode,
    int16_t *num_yaw_poses,
    int16_t *num_pitch_poses,
    int16_t *num_roll_poses );

#endif
void isar_renderSplitGetMultiBinPoseData(
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
+7 −0
Original line number Diff line number Diff line
@@ -35,6 +35,9 @@
#ifdef DEBUGGING
#include "debug.h"
#endif
#ifdef NONBE_SPLIT_DYN_OFFSET
#include "common_api_types.h"
#endif
#include "isar_cnst.h"
#include "wmc_auto.h"

@@ -50,12 +53,16 @@
const float isar_split_rend_relative_yaw_pos_angles[SPLIT_REND_MAX_YAW_ONLY_POSES] = {-15.0f, 15.0f};
const float isar_split_rend_relative_pitch_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {10.0f, 10.0f};
const float isar_split_rend_relative_roll_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {10.0f, 10.0f};
#ifndef NONBE_SPLIT_DYN_OFFSET
const float isar_split_rend_relative_one_axis_pos_angles[SPLIT_REND_MAX_ONE_AXIS_MD_POSES] = {-15.0f, 15.0f};
#endif

const float isar_split_rend_relative_yaw_pos_angles_hq[SPLIT_REND_MAX_YAW_ONLY_POSES] = {-15.0f, 15.0f};
const float isar_split_rend_relative_pitch_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {-15.0f, 15.0f};
const float isar_split_rend_relative_roll_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {-15.0f, 15.0f};
#ifndef NONBE_SPLIT_DYN_OFFSET
const float isar_split_rend_relative_one_axis_pos_angles_hq[SPLIT_REND_MAX_ONE_AXIS_MD_POSES] = {-15.0f, 15.0f};
#endif

const int16_t isar_split_rend_band_grouping[MAX_SPLIT_REND_MD_BANDS + 1] =
{
Loading