Loading lib_com/ivas_cnst.h +26 −28 Original line number Diff line number Diff line Loading @@ -1542,9 +1542,7 @@ typedef enum * Split Binaural Rendering Constants *----------------------------------------------------------------------------------*/ #ifdef SPLIT_REND_WITH_HEAD_ROT #define CLDFB_PLC_XF 2 /* Length of cross-fade into first good frame after frame loss in CLDFB cols. */ #endif #define SPLIT_REND_DECOR_ALPHA 0.25f Loading @@ -1563,36 +1561,36 @@ typedef enum #define COMPLEX_MD_BAND_THRESH_LOW 5 #define SPLIT_REND_RO_MD_BAND_THRESH 4 #define IVAS_SPLIT_REND_NUM_QUANT_STRATS 4 #define ISAR_SPLIT_REND_NUM_QUANT_STRATS 4 #define ISAR_SPLIT_REND_PRED_63QUANT_PNTS 63 #define IVAS_SPLIT_REND_PRED_31QUANT_PNTS 31 #define ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS 31 #define ISAR_SPLIT_REND_D_QUANT_PNTS 15 #define IVAS_SPLIT_REND_PRED_MIN_VAL -1.4f #define IVAS_SPLIT_REND_PRED_MAX_VAL 1.4f #define IVAS_SPLIT_REND_PITCH_G_MIN_VAL 0.5f #define IVAS_SPLIT_REND_PITCH_G_MAX_VAL 1.5f #define IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS ISAR_SPLIT_REND_D_QUANT_PNTS #define IVAS_SPLIT_REND_D_MIN_VAL 0.0f #define IVAS_SPLIT_REND_D_MAX_VAL 1.0f #define IVAS_SPLIT_REND_PRED_ROLL_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PRED_ROLL_1BYQ_STEP (( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) #define IVAS_SPLIT_REND_PRED31_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PRED31_1BYQ_STEP (( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) #define IVAS_SPLIT_REND_PRED63_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PRED63_1BYQ_STEP (( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) #define IVAS_SPLIT_REND_D_Q_STEP (( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL ) / ( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_D_1BYQ_STEP (( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL )) #define IVAS_SPLIT_REND_PITCH_G_Q_STEP (( IVAS_SPLIT_REND_PITCH_G_MAX_VAL - IVAS_SPLIT_REND_PITCH_G_MIN_VAL ) / ( IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP (( IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PITCH_G_MAX_VAL - IVAS_SPLIT_REND_PITCH_G_MIN_VAL )) #define IVAS_SPLIT_REND_MAX_NUM_BYTES 4000 #define IVAS_SPLIT_REND_HEAD_POSE_BITS 9 #define IVAS_SPLIT_REND_DOF_BITS 2 #define IVAS_SPLIT_REND_HQ_MODE_BITS 1 #define ISAR_SPLIT_REND_PRED_MIN_VAL -1.4f #define ISAR_SPLIT_REND_PRED_MAX_VAL 1.4f #define ISAR_SPLIT_REND_PITCH_G_MIN_VAL 0.5f #define ISAR_SPLIT_REND_PITCH_G_MAX_VAL 1.5f #define ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS ISAR_SPLIT_REND_D_QUANT_PNTS #define ISAR_SPLIT_REND_D_MIN_VAL 0.0f #define ISAR_SPLIT_REND_D_MAX_VAL 1.0f #define ISAR_SPLIT_REND_PRED_ROLL_Q_STEP (( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP (( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL )) #define ISAR_SPLIT_REND_PRED31_Q_STEP (( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PRED31_1BYQ_STEP (( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL )) #define ISAR_SPLIT_REND_PRED63_Q_STEP (( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PRED63_1BYQ_STEP (( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL )) #define ISAR_SPLIT_REND_D_Q_STEP (( ISAR_SPLIT_REND_D_MAX_VAL - ISAR_SPLIT_REND_D_MIN_VAL ) / ( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_D_1BYQ_STEP (( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_D_MAX_VAL - ISAR_SPLIT_REND_D_MIN_VAL )) #define ISAR_SPLIT_REND_PITCH_G_Q_STEP (( ISAR_SPLIT_REND_PITCH_G_MAX_VAL - ISAR_SPLIT_REND_PITCH_G_MIN_VAL ) / ( ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP (( ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PITCH_G_MAX_VAL - ISAR_SPLIT_REND_PITCH_G_MIN_VAL )) #define ISAR_SPLIT_REND_MAX_NUM_BYTES 4000 #define ISAR_SPLIT_REND_HEAD_POSE_BITS 9 #define ISAR_SPLIT_REND_DOF_BITS 2 #define ISAR_SPLIT_REND_HQ_MODE_BITS 1 #define ISAR_SPLIT_REND_ROT_AXIS_BITS 3 #endif Loading lib_isar/isar_prot.h +9 −35 Original line number Diff line number Diff line Loading @@ -117,21 +117,6 @@ void isar_log_cldfb2wav_data( const char *filename ); #endif void isar_SplitRenderer_GetRotMd( ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ float Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ const int16_t low_res, const int16_t ro_md_flag ); void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ float Cldfb_ImagBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ const IVAS_QUATERNION Quaternion_act ); void isar_splitBinLCLDDecProcess( ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec, ISAR_SPLIT_REND_BITS_HANDLE pBits, Loading Loading @@ -177,15 +162,15 @@ void isar_SplitRenderer_getdiagdiff( void isar_split_rend_get_quant_params( const int16_t num_md_bands, int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t *num_quant_strats, int16_t *num_complex_bands ); Loading Loading @@ -232,17 +217,6 @@ void isar_renderSplitGetMultiBinPoseData( MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, const ISAR_SPLIT_REND_ROT_AXIS rot_axis ); void isar_rend_CldfbSplitPreRendProcess( const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, const IVAS_QUATERNION headPosition, MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], ISAR_SPLIT_REND_BITS_HANDLE pBits, const int32_t target_md_bits, const int16_t low_res_pre_rend_rot, const int16_t ro_md_flag ); void isar_init_split_post_rend_handles( ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ); Loading lib_isar/isar_splitRendererPost.c +30 −19 Original line number Diff line number Diff line Loading @@ -46,6 +46,17 @@ #endif #include "wmc_auto.h" /*---------------------------------------------------------------------* * Local function declarations *---------------------------------------------------------------------*/ static void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ float Cldfb_ImagBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ const IVAS_QUATERNION Quaternion_act ); /*------------------------------------------------------------------------- * isar_splitBinPostRendOpen() Loading Loading @@ -263,18 +274,18 @@ static void ivas_split_rend_unquant_md( } else if ( pose_type == COM_GAIN_ONLY ) { gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_D_1BYQ_STEP * IVAS_SPLIT_REND_D_MIN_VAL ); gd_idx_min = (int16_t) roundf( ISAR_SPLIT_REND_D_1BYQ_STEP * ISAR_SPLIT_REND_D_MIN_VAL ); hMd->gd_idx += gd_idx_min; hMd->gd = hMd->gd_idx * IVAS_SPLIT_REND_D_Q_STEP; hMd->gd = hMd->gd_idx * ISAR_SPLIT_REND_D_Q_STEP; } else if ( pose_type == LR_GAIN_ONLY ) { gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP * IVAS_SPLIT_REND_PITCH_G_MIN_VAL ); gd_idx_min = (int16_t) roundf( ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP * ISAR_SPLIT_REND_PITCH_G_MIN_VAL ); hMd->gd_idx += gd_idx_min; hMd->gd = hMd->gd_idx * IVAS_SPLIT_REND_PITCH_G_Q_STEP; hMd->gd = hMd->gd_idx * ISAR_SPLIT_REND_PITCH_G_Q_STEP; hMd->gd2_idx += gd_idx_min; hMd->gd2 = hMd->gd2_idx * IVAS_SPLIT_REND_PITCH_G_Q_STEP; hMd->gd2 = hMd->gd2_idx * ISAR_SPLIT_REND_PITCH_G_Q_STEP; } else { Loading Loading @@ -560,14 +571,14 @@ void isar_splitBinPostRendMdDec( ) { int16_t pos_idx, b, sf_idx, num_subframes, ch1; int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; int16_t d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; int16_t num_complex_bands, num_quant_strats; int32_t quant_strat_bits, is_huff_coding, quant_strat; int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG int16_t ch1, ch2; #endif Loading @@ -577,8 +588,8 @@ void isar_splitBinPostRendMdDec( hBinHrSplitPostRend->low_Res = 1; split_rend_config.dof = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_DOF_BITS ); split_rend_config.hq_mode = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HQ_MODE_BITS ); split_rend_config.dof = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_DOF_BITS ); split_rend_config.hq_mode = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HQ_MODE_BITS ); rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS ); isar_renderSplitGetMultiBinPoseData( &split_rend_config, pMultiBinPoseData, rot_axis ); Loading @@ -593,15 +604,15 @@ void isar_splitBinPostRendMdDec( hBinHrSplitPostRend->QuaternionsPre[sf_idx].w = -3.0f; angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ); angle -= 180; hBinHrSplitPostRend->QuaternionsPre[sf_idx].x = (float) angle; angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ); angle -= 180; hBinHrSplitPostRend->QuaternionsPre[sf_idx].y = (float) angle; angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ); angle -= 180; hBinHrSplitPostRend->QuaternionsPre[sf_idx].z = (float) angle; } Loading Loading @@ -812,12 +823,12 @@ void isar_splitBinPostRendMdDec( for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 0, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], IVAS_SPLIT_REND_PRED_ROLL_Q_STEP ); ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 0, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_Q_STEP ); } for ( ; b < pred_real_bands_roll[quant_strat]; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], IVAS_SPLIT_REND_PRED_ROLL_Q_STEP ); ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_Q_STEP ); } for ( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) { Loading Loading @@ -1339,7 +1350,7 @@ static void interpolate_rend_md( * *-----------------------------------------------------------------------------------------*/ void isar_SplitRenderer_PostRenderer( static void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ Loading lib_isar/isar_splitRendererPre.c +59 −36 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_isar/isar_splitRenderer_utils.c +14 −14 Original line number Diff line number Diff line Loading @@ -804,32 +804,32 @@ ivas_error isar_split_rend_validate_config( void isar_split_rend_get_quant_params( const int16_t num_md_bands, int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t *num_quant_strats, int16_t *num_complex_bands ) { int16_t q; *num_quant_strats = IVAS_SPLIT_REND_NUM_QUANT_STRATS; *num_quant_strats = ISAR_SPLIT_REND_NUM_QUANT_STRATS; *num_complex_bands = COMPLEX_MD_BAND_THRESH_LOW; assert( *num_complex_bands <= num_md_bands ); pred_quant_pnts_yaw[0] = ISAR_SPLIT_REND_PRED_63QUANT_PNTS; pred_quantstep_yaw[0] = IVAS_SPLIT_REND_PRED63_Q_STEP; pred_1byquantstep_yaw[0] = IVAS_SPLIT_REND_PRED63_1BYQ_STEP; pred_quantstep_yaw[0] = ISAR_SPLIT_REND_PRED63_Q_STEP; pred_1byquantstep_yaw[0] = ISAR_SPLIT_REND_PRED63_1BYQ_STEP; for ( q = 1; q < *num_quant_strats; q++ ) { pred_quant_pnts_yaw[q] = IVAS_SPLIT_REND_PRED_31QUANT_PNTS; pred_quantstep_yaw[q] = IVAS_SPLIT_REND_PRED31_Q_STEP; pred_1byquantstep_yaw[q] = IVAS_SPLIT_REND_PRED31_1BYQ_STEP; pred_quantstep_yaw[q] = ISAR_SPLIT_REND_PRED31_Q_STEP; pred_1byquantstep_yaw[q] = ISAR_SPLIT_REND_PRED31_1BYQ_STEP; } for ( q = 0; q < *num_quant_strats; q++ ) Loading Loading
lib_com/ivas_cnst.h +26 −28 Original line number Diff line number Diff line Loading @@ -1542,9 +1542,7 @@ typedef enum * Split Binaural Rendering Constants *----------------------------------------------------------------------------------*/ #ifdef SPLIT_REND_WITH_HEAD_ROT #define CLDFB_PLC_XF 2 /* Length of cross-fade into first good frame after frame loss in CLDFB cols. */ #endif #define SPLIT_REND_DECOR_ALPHA 0.25f Loading @@ -1563,36 +1561,36 @@ typedef enum #define COMPLEX_MD_BAND_THRESH_LOW 5 #define SPLIT_REND_RO_MD_BAND_THRESH 4 #define IVAS_SPLIT_REND_NUM_QUANT_STRATS 4 #define ISAR_SPLIT_REND_NUM_QUANT_STRATS 4 #define ISAR_SPLIT_REND_PRED_63QUANT_PNTS 63 #define IVAS_SPLIT_REND_PRED_31QUANT_PNTS 31 #define ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS 31 #define ISAR_SPLIT_REND_D_QUANT_PNTS 15 #define IVAS_SPLIT_REND_PRED_MIN_VAL -1.4f #define IVAS_SPLIT_REND_PRED_MAX_VAL 1.4f #define IVAS_SPLIT_REND_PITCH_G_MIN_VAL 0.5f #define IVAS_SPLIT_REND_PITCH_G_MAX_VAL 1.5f #define IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS ISAR_SPLIT_REND_D_QUANT_PNTS #define IVAS_SPLIT_REND_D_MIN_VAL 0.0f #define IVAS_SPLIT_REND_D_MAX_VAL 1.0f #define IVAS_SPLIT_REND_PRED_ROLL_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PRED_ROLL_1BYQ_STEP (( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) #define IVAS_SPLIT_REND_PRED31_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PRED31_1BYQ_STEP (( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) #define IVAS_SPLIT_REND_PRED63_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PRED63_1BYQ_STEP (( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) #define IVAS_SPLIT_REND_D_Q_STEP (( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL ) / ( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_D_1BYQ_STEP (( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL )) #define IVAS_SPLIT_REND_PITCH_G_Q_STEP (( IVAS_SPLIT_REND_PITCH_G_MAX_VAL - IVAS_SPLIT_REND_PITCH_G_MIN_VAL ) / ( IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )) #define IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP (( IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PITCH_G_MAX_VAL - IVAS_SPLIT_REND_PITCH_G_MIN_VAL )) #define IVAS_SPLIT_REND_MAX_NUM_BYTES 4000 #define IVAS_SPLIT_REND_HEAD_POSE_BITS 9 #define IVAS_SPLIT_REND_DOF_BITS 2 #define IVAS_SPLIT_REND_HQ_MODE_BITS 1 #define ISAR_SPLIT_REND_PRED_MIN_VAL -1.4f #define ISAR_SPLIT_REND_PRED_MAX_VAL 1.4f #define ISAR_SPLIT_REND_PITCH_G_MIN_VAL 0.5f #define ISAR_SPLIT_REND_PITCH_G_MAX_VAL 1.5f #define ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS ISAR_SPLIT_REND_D_QUANT_PNTS #define ISAR_SPLIT_REND_D_MIN_VAL 0.0f #define ISAR_SPLIT_REND_D_MAX_VAL 1.0f #define ISAR_SPLIT_REND_PRED_ROLL_Q_STEP (( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP (( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL )) #define ISAR_SPLIT_REND_PRED31_Q_STEP (( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PRED31_1BYQ_STEP (( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL )) #define ISAR_SPLIT_REND_PRED63_Q_STEP (( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PRED63_1BYQ_STEP (( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL )) #define ISAR_SPLIT_REND_D_Q_STEP (( ISAR_SPLIT_REND_D_MAX_VAL - ISAR_SPLIT_REND_D_MIN_VAL ) / ( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_D_1BYQ_STEP (( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_D_MAX_VAL - ISAR_SPLIT_REND_D_MIN_VAL )) #define ISAR_SPLIT_REND_PITCH_G_Q_STEP (( ISAR_SPLIT_REND_PITCH_G_MAX_VAL - ISAR_SPLIT_REND_PITCH_G_MIN_VAL ) / ( ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )) #define ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP (( ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )/( ISAR_SPLIT_REND_PITCH_G_MAX_VAL - ISAR_SPLIT_REND_PITCH_G_MIN_VAL )) #define ISAR_SPLIT_REND_MAX_NUM_BYTES 4000 #define ISAR_SPLIT_REND_HEAD_POSE_BITS 9 #define ISAR_SPLIT_REND_DOF_BITS 2 #define ISAR_SPLIT_REND_HQ_MODE_BITS 1 #define ISAR_SPLIT_REND_ROT_AXIS_BITS 3 #endif Loading
lib_isar/isar_prot.h +9 −35 Original line number Diff line number Diff line Loading @@ -117,21 +117,6 @@ void isar_log_cldfb2wav_data( const char *filename ); #endif void isar_SplitRenderer_GetRotMd( ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ float Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ const int16_t low_res, const int16_t ro_md_flag ); void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ float Cldfb_ImagBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ const IVAS_QUATERNION Quaternion_act ); void isar_splitBinLCLDDecProcess( ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec, ISAR_SPLIT_REND_BITS_HANDLE pBits, Loading Loading @@ -177,15 +162,15 @@ void isar_SplitRenderer_getdiagdiff( void isar_split_rend_get_quant_params( const int16_t num_md_bands, int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t *num_quant_strats, int16_t *num_complex_bands ); Loading Loading @@ -232,17 +217,6 @@ void isar_renderSplitGetMultiBinPoseData( MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, const ISAR_SPLIT_REND_ROT_AXIS rot_axis ); void isar_rend_CldfbSplitPreRendProcess( const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, const IVAS_QUATERNION headPosition, MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], ISAR_SPLIT_REND_BITS_HANDLE pBits, const int32_t target_md_bits, const int16_t low_res_pre_rend_rot, const int16_t ro_md_flag ); void isar_init_split_post_rend_handles( ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ); Loading
lib_isar/isar_splitRendererPost.c +30 −19 Original line number Diff line number Diff line Loading @@ -46,6 +46,17 @@ #endif #include "wmc_auto.h" /*---------------------------------------------------------------------* * Local function declarations *---------------------------------------------------------------------*/ static void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ float Cldfb_ImagBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ const IVAS_QUATERNION Quaternion_act ); /*------------------------------------------------------------------------- * isar_splitBinPostRendOpen() Loading Loading @@ -263,18 +274,18 @@ static void ivas_split_rend_unquant_md( } else if ( pose_type == COM_GAIN_ONLY ) { gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_D_1BYQ_STEP * IVAS_SPLIT_REND_D_MIN_VAL ); gd_idx_min = (int16_t) roundf( ISAR_SPLIT_REND_D_1BYQ_STEP * ISAR_SPLIT_REND_D_MIN_VAL ); hMd->gd_idx += gd_idx_min; hMd->gd = hMd->gd_idx * IVAS_SPLIT_REND_D_Q_STEP; hMd->gd = hMd->gd_idx * ISAR_SPLIT_REND_D_Q_STEP; } else if ( pose_type == LR_GAIN_ONLY ) { gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP * IVAS_SPLIT_REND_PITCH_G_MIN_VAL ); gd_idx_min = (int16_t) roundf( ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP * ISAR_SPLIT_REND_PITCH_G_MIN_VAL ); hMd->gd_idx += gd_idx_min; hMd->gd = hMd->gd_idx * IVAS_SPLIT_REND_PITCH_G_Q_STEP; hMd->gd = hMd->gd_idx * ISAR_SPLIT_REND_PITCH_G_Q_STEP; hMd->gd2_idx += gd_idx_min; hMd->gd2 = hMd->gd2_idx * IVAS_SPLIT_REND_PITCH_G_Q_STEP; hMd->gd2 = hMd->gd2_idx * ISAR_SPLIT_REND_PITCH_G_Q_STEP; } else { Loading Loading @@ -560,14 +571,14 @@ void isar_splitBinPostRendMdDec( ) { int16_t pos_idx, b, sf_idx, num_subframes, ch1; int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; int16_t d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; int16_t num_complex_bands, num_quant_strats; int32_t quant_strat_bits, is_huff_coding, quant_strat; int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; int16_t pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG int16_t ch1, ch2; #endif Loading @@ -577,8 +588,8 @@ void isar_splitBinPostRendMdDec( hBinHrSplitPostRend->low_Res = 1; split_rend_config.dof = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_DOF_BITS ); split_rend_config.hq_mode = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HQ_MODE_BITS ); split_rend_config.dof = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_DOF_BITS ); split_rend_config.hq_mode = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HQ_MODE_BITS ); rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS ); isar_renderSplitGetMultiBinPoseData( &split_rend_config, pMultiBinPoseData, rot_axis ); Loading @@ -593,15 +604,15 @@ void isar_splitBinPostRendMdDec( hBinHrSplitPostRend->QuaternionsPre[sf_idx].w = -3.0f; angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ); angle -= 180; hBinHrSplitPostRend->QuaternionsPre[sf_idx].x = (float) angle; angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ); angle -= 180; hBinHrSplitPostRend->QuaternionsPre[sf_idx].y = (float) angle; angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); angle = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ); angle -= 180; hBinHrSplitPostRend->QuaternionsPre[sf_idx].z = (float) angle; } Loading Loading @@ -812,12 +823,12 @@ void isar_splitBinPostRendMdDec( for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 0, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], IVAS_SPLIT_REND_PRED_ROLL_Q_STEP ); ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 0, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_Q_STEP ); } for ( ; b < pred_real_bands_roll[quant_strat]; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], IVAS_SPLIT_REND_PRED_ROLL_Q_STEP ); ivas_split_rend_unquant_md( hMd, PRED_ROLL_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_Q_STEP ); } for ( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) { Loading Loading @@ -1339,7 +1350,7 @@ static void interpolate_rend_md( * *-----------------------------------------------------------------------------------------*/ void isar_SplitRenderer_PostRenderer( static void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ Loading
lib_isar/isar_splitRendererPre.c +59 −36 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_isar/isar_splitRenderer_utils.c +14 −14 Original line number Diff line number Diff line Loading @@ -804,32 +804,32 @@ ivas_error isar_split_rend_validate_config( void isar_split_rend_get_quant_params( const int16_t num_md_bands, int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], int16_t *num_quant_strats, int16_t *num_complex_bands ) { int16_t q; *num_quant_strats = IVAS_SPLIT_REND_NUM_QUANT_STRATS; *num_quant_strats = ISAR_SPLIT_REND_NUM_QUANT_STRATS; *num_complex_bands = COMPLEX_MD_BAND_THRESH_LOW; assert( *num_complex_bands <= num_md_bands ); pred_quant_pnts_yaw[0] = ISAR_SPLIT_REND_PRED_63QUANT_PNTS; pred_quantstep_yaw[0] = IVAS_SPLIT_REND_PRED63_Q_STEP; pred_1byquantstep_yaw[0] = IVAS_SPLIT_REND_PRED63_1BYQ_STEP; pred_quantstep_yaw[0] = ISAR_SPLIT_REND_PRED63_Q_STEP; pred_1byquantstep_yaw[0] = ISAR_SPLIT_REND_PRED63_1BYQ_STEP; for ( q = 1; q < *num_quant_strats; q++ ) { pred_quant_pnts_yaw[q] = IVAS_SPLIT_REND_PRED_31QUANT_PNTS; pred_quantstep_yaw[q] = IVAS_SPLIT_REND_PRED31_Q_STEP; pred_1byquantstep_yaw[q] = IVAS_SPLIT_REND_PRED31_1BYQ_STEP; pred_quantstep_yaw[q] = ISAR_SPLIT_REND_PRED31_Q_STEP; pred_1byquantstep_yaw[q] = ISAR_SPLIT_REND_PRED31_1BYQ_STEP; } for ( q = 0; q < *num_quant_strats; q++ ) Loading