Loading lib_dec/ivas_dec.c +49 −15 Original line number Diff line number Diff line Loading @@ -518,12 +518,15 @@ ivas_error ivas_dec( /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); } else { #endif if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs #ifdef SPLIT_REND_WITH_HEAD_ROT Loading @@ -537,7 +540,9 @@ ivas_error ivas_dec( } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } else if ( st_ivas->renderer_type == RENDERER_MC ) { Loading @@ -549,19 +554,24 @@ ivas_error ivas_dec( } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ); } else { #endif if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) { return error; } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } } else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) Loading Loading @@ -596,6 +606,15 @@ ivas_error ivas_dec( /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); } else { #endif if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs #ifdef SPLIT_REND_WITH_HEAD_ROT Loading @@ -608,6 +627,9 @@ ivas_error ivas_dec( } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } else if ( st_ivas->renderer_type == RENDERER_MC ) { Loading @@ -626,12 +648,24 @@ ivas_error ivas_dec( } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ); // TODO tmu check } else { #endif if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) { return error; } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } } else if ( st_ivas->mc_mode == MC_MODE_PARAMMC ) Loading Loading @@ -791,7 +825,7 @@ ivas_error ivas_dec( hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural, hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural, max_band, output, 1, st_ivas->ivas_format != SBA_FORMAT, st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV, pcm_out ); free( st_ivas->splitBinRend.hMultiBinCldfbData ); Loading lib_dec/ivas_mc_param_dec.c +21 −2 Original line number Diff line number Diff line Loading @@ -1554,8 +1554,8 @@ void ivas_param_mc_dec_render( float Cldfb_RealBuffer[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; #ifdef SPLIT_REND_WITH_HEAD_ROT float Cldfb_RealBuffer_Binaural[1][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[1][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; #else float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Loading Loading @@ -1766,6 +1766,25 @@ void ivas_param_mc_dec_render( NULL, #endif Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { int16_t pos_idx; for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) { for ( slot_idx = 0; slot_idx < hParamMC->subframe_nbslots[subframe_idx]; slot_idx++ ) { for ( ch = 0; ch < nchan_out_cldfb; ch++ ) { mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->splitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->splitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); } } } } #endif } else if ( hParamMC->synthesis_conf == PARAM_MC_SYNTH_LS_CONV_CLDFB ) { Loading lib_rend/ivas_splitRendererPre.c +1 −0 Original line number Diff line number Diff line Loading @@ -2169,6 +2169,7 @@ ivas_error ivas_renderMultiBinToSplitBinaural( set_pose_types( hSplitBin->hBinHrSplitPreRend->pose_type, &hSplitBin->multiBinPoseData ); } /*TODO : why should this be called during run time ?*/ ivas_split_rend_choose_default_codec( &splitCodec, td_input, pcm_out ); if ( Loading Loading
lib_dec/ivas_dec.c +49 −15 Original line number Diff line number Diff line Loading @@ -518,12 +518,15 @@ ivas_error ivas_dec( /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); } else { #endif if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs #ifdef SPLIT_REND_WITH_HEAD_ROT Loading @@ -537,7 +540,9 @@ ivas_error ivas_dec( } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } else if ( st_ivas->renderer_type == RENDERER_MC ) { Loading @@ -549,19 +554,24 @@ ivas_error ivas_dec( } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ); } else { #endif if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) { return error; } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } } else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) Loading Loading @@ -596,6 +606,15 @@ ivas_error ivas_dec( /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame ); } else { #endif if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs #ifdef SPLIT_REND_WITH_HEAD_ROT Loading @@ -608,6 +627,9 @@ ivas_error ivas_dec( } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } else if ( st_ivas->renderer_type == RENDERER_MC ) { Loading @@ -626,12 +648,24 @@ ivas_error ivas_dec( } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ); // TODO tmu check } else { #endif if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) { return error; } ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } } else if ( st_ivas->mc_mode == MC_MODE_PARAMMC ) Loading Loading @@ -791,7 +825,7 @@ ivas_error ivas_dec( hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural, hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural, max_band, output, 1, st_ivas->ivas_format != SBA_FORMAT, st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV, pcm_out ); free( st_ivas->splitBinRend.hMultiBinCldfbData ); Loading
lib_dec/ivas_mc_param_dec.c +21 −2 Original line number Diff line number Diff line Loading @@ -1554,8 +1554,8 @@ void ivas_param_mc_dec_render( float Cldfb_RealBuffer[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; #ifdef SPLIT_REND_WITH_HEAD_ROT float Cldfb_RealBuffer_Binaural[1][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[1][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; #else float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Loading Loading @@ -1766,6 +1766,25 @@ void ivas_param_mc_dec_render( NULL, #endif Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { int16_t pos_idx; for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) { for ( slot_idx = 0; slot_idx < hParamMC->subframe_nbslots[subframe_idx]; slot_idx++ ) { for ( ch = 0; ch < nchan_out_cldfb; ch++ ) { mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->splitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->splitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); } } } } #endif } else if ( hParamMC->synthesis_conf == PARAM_MC_SYNTH_LS_CONV_CLDFB ) { Loading
lib_rend/ivas_splitRendererPre.c +1 −0 Original line number Diff line number Diff line Loading @@ -2169,6 +2169,7 @@ ivas_error ivas_renderMultiBinToSplitBinaural( set_pose_types( hSplitBin->hBinHrSplitPreRend->pose_type, &hSplitBin->multiBinPoseData ); } /*TODO : why should this be called during run time ?*/ ivas_split_rend_choose_default_codec( &splitCodec, td_input, pcm_out ); if ( Loading