Loading lib_com/common_api_types.h +15 −0 Original line number Diff line number Diff line Loading @@ -328,4 +328,19 @@ typedef struct _IVAS_RENDER_CONFIG } IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE; typedef struct { int16_t numSamplesPerChannel; int16_t numChannels; #ifdef SPLIT_REND_WITH_HEAD_ROT int16_t is_cldfb; #endif } IVAS_REND_AudioBufferConfig; typedef struct { IVAS_REND_AudioBufferConfig config; float *data; } IVAS_REND_AudioBuffer; #endif /* COMMON_API_TYPES_H */ lib_dec/lib_dec.c +6 −3 Original line number Diff line number Diff line Loading @@ -279,7 +279,10 @@ static ivas_error isar_set_split_rend_setup( ISAR_PRE_REND_GetMultiBinPoseData( hSplitBinConfig, &hSplitBinRend->splitrend.multiBinPoseData, ( hCombinedOrientationData != NULL ) ? hCombinedOrientationData->sr_pose_pred_axis : DEFAULT_AXIS ); isar_set_split_rend_ht_setup( &hSplitBinRend->splitrend, hCombinedOrientationData ); if ( hCombinedOrientationData != NULL ) { isar_set_split_rend_ht_setup( &hSplitBinRend->splitrend, hCombinedOrientationData->Quaternions, hCombinedOrientationData->Rmat ); } return IVAS_ERR_OK; } Loading Loading @@ -928,9 +931,9 @@ ivas_error IVAS_DEC_GetSamples( * Binaural split rendering setup *----------------------------------------------------------------*/ if ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) if ( hIvasDec->st_ivas->hCombinedOrientationData != NULL && ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { isar_set_split_rend_ht_setup( &hIvasDec->st_ivas->hSplitBinRend.splitrend, hIvasDec->st_ivas->hCombinedOrientationData ); isar_set_split_rend_ht_setup( &hIvasDec->st_ivas->hSplitBinRend.splitrend, hIvasDec->st_ivas->hCombinedOrientationData->Quaternions, hIvasDec->st_ivas->hCombinedOrientationData->Rmat ); } #endif Loading lib_isar/isar_cnst.h +0 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,6 @@ typedef enum #define SPLIT_REND_384k 384000 #define SPLIT_REND_512k 512000 #define SPLIT_REND_768k 768000 #define SPLIT_REND_MAX_BRATE SPLIT_REND_768k #endif /*SPLIT_REND_WITH_HEAD_ROT */ Loading lib_isar/isar_prot.h +2 −1 Original line number Diff line number Diff line Loading @@ -274,7 +274,8 @@ void isar_init_split_post_rend_handles( void isar_set_split_rend_ht_setup( SPLIT_REND_WRAPPER *hSplitrend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ); IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES], float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ); int32_t isar_get_lc3plus_bitrate( const int32_t SplitRendBitRate, Loading lib_isar/isar_splitRendererPre.c +5 −4 Original line number Diff line number Diff line Loading @@ -1617,20 +1617,21 @@ void ivas_splitBinPreRendClose( void isar_set_split_rend_ht_setup( SPLIT_REND_WRAPPER *hSplitrend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ) IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES], float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ) { int16_t sf, i, j; if ( hCombinedOrientationData != NULL && hSplitrend->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) if ( hSplitrend->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) { for ( sf = 1; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { hCombinedOrientationData->Quaternions[sf] = hCombinedOrientationData->Quaternions[0]; Quaternions[sf] = Quaternions[0]; for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 3; j++ ) { hCombinedOrientationData->Rmat[sf][i][j] = hCombinedOrientationData->Rmat[0][i][j]; Rmat[sf][i][j] = Rmat[0][i][j]; } } } Loading Loading
lib_com/common_api_types.h +15 −0 Original line number Diff line number Diff line Loading @@ -328,4 +328,19 @@ typedef struct _IVAS_RENDER_CONFIG } IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE; typedef struct { int16_t numSamplesPerChannel; int16_t numChannels; #ifdef SPLIT_REND_WITH_HEAD_ROT int16_t is_cldfb; #endif } IVAS_REND_AudioBufferConfig; typedef struct { IVAS_REND_AudioBufferConfig config; float *data; } IVAS_REND_AudioBuffer; #endif /* COMMON_API_TYPES_H */
lib_dec/lib_dec.c +6 −3 Original line number Diff line number Diff line Loading @@ -279,7 +279,10 @@ static ivas_error isar_set_split_rend_setup( ISAR_PRE_REND_GetMultiBinPoseData( hSplitBinConfig, &hSplitBinRend->splitrend.multiBinPoseData, ( hCombinedOrientationData != NULL ) ? hCombinedOrientationData->sr_pose_pred_axis : DEFAULT_AXIS ); isar_set_split_rend_ht_setup( &hSplitBinRend->splitrend, hCombinedOrientationData ); if ( hCombinedOrientationData != NULL ) { isar_set_split_rend_ht_setup( &hSplitBinRend->splitrend, hCombinedOrientationData->Quaternions, hCombinedOrientationData->Rmat ); } return IVAS_ERR_OK; } Loading Loading @@ -928,9 +931,9 @@ ivas_error IVAS_DEC_GetSamples( * Binaural split rendering setup *----------------------------------------------------------------*/ if ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) if ( hIvasDec->st_ivas->hCombinedOrientationData != NULL && ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { isar_set_split_rend_ht_setup( &hIvasDec->st_ivas->hSplitBinRend.splitrend, hIvasDec->st_ivas->hCombinedOrientationData ); isar_set_split_rend_ht_setup( &hIvasDec->st_ivas->hSplitBinRend.splitrend, hIvasDec->st_ivas->hCombinedOrientationData->Quaternions, hIvasDec->st_ivas->hCombinedOrientationData->Rmat ); } #endif Loading
lib_isar/isar_cnst.h +0 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,6 @@ typedef enum #define SPLIT_REND_384k 384000 #define SPLIT_REND_512k 512000 #define SPLIT_REND_768k 768000 #define SPLIT_REND_MAX_BRATE SPLIT_REND_768k #endif /*SPLIT_REND_WITH_HEAD_ROT */ Loading
lib_isar/isar_prot.h +2 −1 Original line number Diff line number Diff line Loading @@ -274,7 +274,8 @@ void isar_init_split_post_rend_handles( void isar_set_split_rend_ht_setup( SPLIT_REND_WRAPPER *hSplitrend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ); IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES], float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ); int32_t isar_get_lc3plus_bitrate( const int32_t SplitRendBitRate, Loading
lib_isar/isar_splitRendererPre.c +5 −4 Original line number Diff line number Diff line Loading @@ -1617,20 +1617,21 @@ void ivas_splitBinPreRendClose( void isar_set_split_rend_ht_setup( SPLIT_REND_WRAPPER *hSplitrend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ) IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES], float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ) { int16_t sf, i, j; if ( hCombinedOrientationData != NULL && hSplitrend->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) if ( hSplitrend->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) { for ( sf = 1; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { hCombinedOrientationData->Quaternions[sf] = hCombinedOrientationData->Quaternions[0]; Quaternions[sf] = Quaternions[0]; for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 3; j++ ) { hCombinedOrientationData->Rmat[sf][i][j] = hCombinedOrientationData->Rmat[0][i][j]; Rmat[sf][i][j] = Rmat[0][i][j]; } } } Loading