Loading lib_dec/ivas_dec.c +22 −2 Original line number Diff line number Diff line Loading @@ -511,7 +511,17 @@ ivas_error ivas_dec( if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); ivas_rend_crendProcessSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, &st_ivas->splitBinRend.splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs ); } else { Loading Loading @@ -599,7 +609,17 @@ ivas_error ivas_dec( if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); ivas_rend_crendProcessSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, &st_ivas->splitBinRend.splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs ); } else { Loading lib_rend/ivas_crend.c +29 −22 Original line number Diff line number Diff line Loading @@ -1751,27 +1751,32 @@ ivas_error ivas_rend_crendProcessSubframe( *-----------------------------------------------------------------------------------------*/ ivas_error ivas_rend_crendProcessSplitBin( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ const int16_t output_frame /* i : output frame length */ ) const CREND_WRAPPER *pCrend, const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, DECODER_CONFIG_HANDLE hDecoderConfig, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, EFAP_HANDLE hEFAPdata, float *output[], const int32_t output_Fs ) { int16_t i, j, sf; int16_t pos_idx; int16_t pos_idx, output_frame; ivas_error error; float gain_lfe; float tmpLfeBuffer[L_FRAME48k]; float tmpInputBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; float *p_tmpInputBuffer[MAX_OUTPUT_CHANNELS]; float tmpSplitBinBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; pMultiBinPoseData = &st_ivas->splitBinRend.splitrend.multiBinPoseData; output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC ); /* copy input */ for ( i = 0; i < st_ivas->hIntSetup.nchan_out_woLFE; ++i ) for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) { mvr2r( output[i], tmpInputBuffer[i], output_frame ); } Loading @@ -1782,7 +1787,7 @@ ivas_error ivas_rend_crendProcessSplitBin( } /* save current head positions */ pCombinedOrientationDataLocal = st_ivas->hCombinedOrientationData; pCombinedOrientationDataLocal = hCombinedOrientationData; combinedOrientationDataLocal = *pCombinedOrientationDataLocal; if ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) { Loading @@ -1800,10 +1805,12 @@ ivas_error ivas_rend_crendProcessSplitBin( } /* copy LFE to tmpLfeBuffer and apply gain only once */ if ( st_ivas->hIntSetup.num_lfe > 0 && st_ivas->hIntSetup.index_lfe[0] != -1 ) if ( hIntSetup->num_lfe > 0 && hIntSetup->index_lfe[0] != -1 ) { mvr2r( output[st_ivas->hIntSetup.index_lfe[0]], tmpLfeBuffer, output_frame ); gain_lfe = ( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hHrtfCrend != NULL ) ) ? st_ivas->hCrendWrapper->hHrtfCrend->gain_lfe : GAIN_LFE; mvr2r( output[hIntSetup->index_lfe[0]], tmpLfeBuffer, output_frame ); gain_lfe = ( ( pCrend != NULL ) && ( pCrend->hHrtfCrend != NULL ) ) ? pCrend->hHrtfCrend->gain_lfe : GAIN_LFE; v_multc( tmpLfeBuffer, gain_lfe, tmpLfeBuffer, output_frame ); } else Loading Loading @@ -1833,24 +1840,24 @@ ivas_error ivas_rend_crendProcessSplitBin( for ( i = 0; i < 3; i++ ) { mvr2r( st_ivas->hCombinedOrientationData->Rmat_prev[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev[0][i], 3 ); mvr2r( hCombinedOrientationData->Rmat_prev[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev[0][i], 3 ); } if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, if ( ( error = ivas_rend_crendProcess( pCrend, inConfig, outConfig, hDecoderConfig, pCombinedOrientationDataLocal, &st_ivas->hIntSetup, st_ivas->hEFAPdata, hIntSetup, hEFAPdata, p_tmpInputBuffer, st_ivas->hDecoderConfig->output_Fs, output_Fs, pos_idx ) ) != IVAS_ERR_OK ) { return error; } for ( i = 0; i < 3; i++ ) { mvr2r( pCombinedOrientationDataLocal->Rmat_prev[0][i], st_ivas->hCombinedOrientationData->Rmat_prev[pos_idx][i], 3 ); mvr2r( pCombinedOrientationDataLocal->Rmat_prev[0][i], hCombinedOrientationData->Rmat_prev[pos_idx][i], 3 ); } for ( i = 0; i < BINAURAL_CHANNELS; ++i ) Loading @@ -1863,7 +1870,7 @@ ivas_error ivas_rend_crendProcessSplitBin( } /* overwrite rendered channels with input again for next iteration */ for ( i = 0; i < st_ivas->hIntSetup.nchan_out_woLFE; ++i ) for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) { mvr2r( output[i], tmpInputBuffer[i], output_frame ); } Loading lib_rend/ivas_prot_rend.h +10 −4 Original line number Diff line number Diff line Loading @@ -633,11 +633,17 @@ ivas_error ivas_rend_crendProcessSubframe( ); #ifdef SPLIT_REND_WITH_HEAD_ROT /* TODO tmu : interface cleanup */ ivas_error ivas_rend_crendProcessSplitBin( Decoder_Struct *st_ivas, float output[][L_FRAME48k], const int16_t output_frame const CREND_WRAPPER *pCrend, const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, DECODER_CONFIG_HANDLE hDecoderConfig, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, EFAP_HANDLE hEFAPdata, float *output[], const int32_t output_Fs ); #endif Loading lib_rend/lib_rend.c +1 −1 Original line number Diff line number Diff line Loading @@ -8403,7 +8403,7 @@ ivas_error IVAS_REND_GetSamples( float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float tmpBinaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; if ( ( outAudio.config.is_cldfb == 1 ) ) if ( outAudio.config.is_cldfb == 1 ) { td_input = 0; copyBufferToCLDFBarray( outAudio, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural ); Loading Loading
lib_dec/ivas_dec.c +22 −2 Original line number Diff line number Diff line Loading @@ -511,7 +511,17 @@ ivas_error ivas_dec( if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); ivas_rend_crendProcessSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, &st_ivas->splitBinRend.splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs ); } else { Loading Loading @@ -599,7 +609,17 @@ ivas_error ivas_dec( if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); ivas_rend_crendProcessSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, &st_ivas->splitBinRend.splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs ); } else { Loading
lib_rend/ivas_crend.c +29 −22 Original line number Diff line number Diff line Loading @@ -1751,27 +1751,32 @@ ivas_error ivas_rend_crendProcessSubframe( *-----------------------------------------------------------------------------------------*/ ivas_error ivas_rend_crendProcessSplitBin( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ const int16_t output_frame /* i : output frame length */ ) const CREND_WRAPPER *pCrend, const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, DECODER_CONFIG_HANDLE hDecoderConfig, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, EFAP_HANDLE hEFAPdata, float *output[], const int32_t output_Fs ) { int16_t i, j, sf; int16_t pos_idx; int16_t pos_idx, output_frame; ivas_error error; float gain_lfe; float tmpLfeBuffer[L_FRAME48k]; float tmpInputBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; float *p_tmpInputBuffer[MAX_OUTPUT_CHANNELS]; float tmpSplitBinBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; pMultiBinPoseData = &st_ivas->splitBinRend.splitrend.multiBinPoseData; output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC ); /* copy input */ for ( i = 0; i < st_ivas->hIntSetup.nchan_out_woLFE; ++i ) for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) { mvr2r( output[i], tmpInputBuffer[i], output_frame ); } Loading @@ -1782,7 +1787,7 @@ ivas_error ivas_rend_crendProcessSplitBin( } /* save current head positions */ pCombinedOrientationDataLocal = st_ivas->hCombinedOrientationData; pCombinedOrientationDataLocal = hCombinedOrientationData; combinedOrientationDataLocal = *pCombinedOrientationDataLocal; if ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) { Loading @@ -1800,10 +1805,12 @@ ivas_error ivas_rend_crendProcessSplitBin( } /* copy LFE to tmpLfeBuffer and apply gain only once */ if ( st_ivas->hIntSetup.num_lfe > 0 && st_ivas->hIntSetup.index_lfe[0] != -1 ) if ( hIntSetup->num_lfe > 0 && hIntSetup->index_lfe[0] != -1 ) { mvr2r( output[st_ivas->hIntSetup.index_lfe[0]], tmpLfeBuffer, output_frame ); gain_lfe = ( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hHrtfCrend != NULL ) ) ? st_ivas->hCrendWrapper->hHrtfCrend->gain_lfe : GAIN_LFE; mvr2r( output[hIntSetup->index_lfe[0]], tmpLfeBuffer, output_frame ); gain_lfe = ( ( pCrend != NULL ) && ( pCrend->hHrtfCrend != NULL ) ) ? pCrend->hHrtfCrend->gain_lfe : GAIN_LFE; v_multc( tmpLfeBuffer, gain_lfe, tmpLfeBuffer, output_frame ); } else Loading Loading @@ -1833,24 +1840,24 @@ ivas_error ivas_rend_crendProcessSplitBin( for ( i = 0; i < 3; i++ ) { mvr2r( st_ivas->hCombinedOrientationData->Rmat_prev[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev[0][i], 3 ); mvr2r( hCombinedOrientationData->Rmat_prev[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev[0][i], 3 ); } if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, if ( ( error = ivas_rend_crendProcess( pCrend, inConfig, outConfig, hDecoderConfig, pCombinedOrientationDataLocal, &st_ivas->hIntSetup, st_ivas->hEFAPdata, hIntSetup, hEFAPdata, p_tmpInputBuffer, st_ivas->hDecoderConfig->output_Fs, output_Fs, pos_idx ) ) != IVAS_ERR_OK ) { return error; } for ( i = 0; i < 3; i++ ) { mvr2r( pCombinedOrientationDataLocal->Rmat_prev[0][i], st_ivas->hCombinedOrientationData->Rmat_prev[pos_idx][i], 3 ); mvr2r( pCombinedOrientationDataLocal->Rmat_prev[0][i], hCombinedOrientationData->Rmat_prev[pos_idx][i], 3 ); } for ( i = 0; i < BINAURAL_CHANNELS; ++i ) Loading @@ -1863,7 +1870,7 @@ ivas_error ivas_rend_crendProcessSplitBin( } /* overwrite rendered channels with input again for next iteration */ for ( i = 0; i < st_ivas->hIntSetup.nchan_out_woLFE; ++i ) for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) { mvr2r( output[i], tmpInputBuffer[i], output_frame ); } Loading
lib_rend/ivas_prot_rend.h +10 −4 Original line number Diff line number Diff line Loading @@ -633,11 +633,17 @@ ivas_error ivas_rend_crendProcessSubframe( ); #ifdef SPLIT_REND_WITH_HEAD_ROT /* TODO tmu : interface cleanup */ ivas_error ivas_rend_crendProcessSplitBin( Decoder_Struct *st_ivas, float output[][L_FRAME48k], const int16_t output_frame const CREND_WRAPPER *pCrend, const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, DECODER_CONFIG_HANDLE hDecoderConfig, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, EFAP_HANDLE hEFAPdata, float *output[], const int32_t output_Fs ); #endif Loading
lib_rend/lib_rend.c +1 −1 Original line number Diff line number Diff line Loading @@ -8403,7 +8403,7 @@ ivas_error IVAS_REND_GetSamples( float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float tmpBinaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; if ( ( outAudio.config.is_cldfb == 1 ) ) if ( outAudio.config.is_cldfb == 1 ) { td_input = 0; copyBufferToCLDFBarray( outAudio, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural ); Loading