Loading lib_com/options.h +4 −1 Original line number Diff line number Diff line Loading @@ -155,10 +155,10 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ /*#define SPLIT_REND_WITH_HEAD_ROT */ /* Dlb,FhG: Split Rendering contributions 21 and 35 */ #define FIX_998_UNUSED_FUNCTION /* FhG: issue 998: delete unused funtion ivas_dirac_dec_get_response_split_order */ #define FIX_1009_ISM_NONDIEGETIC_PANNING /* FhG: issue #1009: use correct object buffer for ISM1 non-diegetic pan */ #define FIX_993_REMOVE_SBA_GET_ORDER /* VA: issue 993: remove unused function ivas_sba_get_order() */ /* #################### End BE switches ################################## */ /* #################### Start NON-BE switches ############################ */ Loading @@ -168,6 +168,9 @@ #define NONBE_FIX_864_JBM_RENDER_FRAMESIZE /* FhG: issue #864: fix different behaviour of JBM TSM with different render frame sizes */ #define NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER /* FhG: issues #1012, 1013: JBM flush function uses wrong output buffer */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ #define NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO /* FhG: issues #1014, #1015, #1016: fix tc buffer info update in the discrete ism renderer */ #define NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING /* FhG: issue 987: solution b: downmix HOA3 to stereo a input for the reverberator */ /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ Loading lib_dec/ivas_binRenderer_internal.c +38 −8 Original line number Diff line number Diff line Loading @@ -952,6 +952,31 @@ static void ivas_binaural_obtain_DMX( set_zero( outRealRightPtr, CLDFB_NO_CHANNELS_MAX ); set_zero( outImagRightPtr, CLDFB_NO_CHANNELS_MAX ); #ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING /*Ambisonics input requires different processing*/ if ( hBinRenderer->nInChannels == 16 ) { float *inRealPtr_W, *inImagPtr_W; float *inRealPtr_Y, *inImagPtr_Y; inRealPtr_W = (float *) &( RealBuffer[0][k][0] ); inImagPtr_W = (float *) &( ImagBuffer[0][k][0] ); inRealPtr_Y = (float *) &( RealBuffer[1][k][0] ); inImagPtr_Y = (float *) &( ImagBuffer[1][k][0] ); for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { outRealLeftPtr[bandIdx] = inRealPtr_W[bandIdx] + inRealPtr_Y[bandIdx]; outImagLeftPtr[bandIdx] = inImagPtr_W[bandIdx] + inImagPtr_Y[bandIdx]; outRealRightPtr[bandIdx] = inRealPtr_W[bandIdx] - inRealPtr_Y[bandIdx]; outImagRightPtr[bandIdx] = inImagPtr_W[bandIdx] - inImagPtr_Y[bandIdx]; } } else #endif { for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { float foa_const = hBinRenderer->hReverb->foa_enc[chIdx][1]; Loading @@ -970,6 +995,7 @@ static void ivas_binaural_obtain_DMX( } } } } return; } Loading Loading @@ -1254,7 +1280,11 @@ ivas_error ivas_binRenderer_open( if ( hBinRenderer->hReverb != NULL ) { #ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && hBinRenderer->nInChannels != 16 ) #else if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) #endif { for ( k = 0; k < 11; k++ ) { Loading lib_dec/ivas_dirac_dec.c +29 −0 Original line number Diff line number Diff line Loading @@ -1840,6 +1840,7 @@ void ivas_dirac_dec_render_sf( set_zero( surCohRatio, hSpatParamRendCom->num_freq_bands ); } } #ifndef FIX_998_UNUSED_FUNCTION if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order == 1 ) { Loading Loading @@ -1871,6 +1872,18 @@ void ivas_dirac_dec_render_sf( NULL, hodirac_flag ); } #else ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom, hDirACRend, st_ivas->hVBAPdata, st_ivas->hMasa == NULL ? NULL : st_ivas->hMasa->data.band_mapping, st_ivas->hMasaIsmData, azimuth, elevation, md_idx, surCohRatio, hodirac_flag ); #endif } if ( st_ivas->ivas_format == MASA_ISM_FORMAT && nchan_transport == 2 ) Loading Loading @@ -2200,6 +2213,7 @@ void ivas_dirac_dec_render_sf( } /*Compute PSDs*/ #ifndef FIX_998_UNUSED_FUNCTION if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order > 0 ) { ivas_dirac_dec_output_synthesis_process_slot( reference_power, Loading Loading @@ -2236,6 +2250,21 @@ void ivas_dirac_dec_render_sf( hodirac_flag, hDirAC->hConfig->dec_param_estim ); } #else ivas_dirac_dec_output_synthesis_process_slot( reference_power, p_onset_filter, azimuth, elevation, hSpatParamRendCom->diffuseness_vector[md_idx], hSpatParamRendCom, hDirACRend, st_ivas->hVBAPdata, hDirACRend->hOutSetup, nchan_transport, md_idx, hodirac_flag, hDirAC->hConfig->dec_param_estim ); #endif if ( hDirAC->hConfig->dec_param_estim ) { Loading lib_dec/ivas_ism_renderer.c +10 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,10 @@ void ivas_ism_render_sf( slots_to_render -= st_ivas->hTcBuffer->subframe_nbslots[last_sf]; last_sf++; } #ifdef DEBUGGING assert( slots_to_render == 0 ); assert( last_sf <= st_ivas->hTcBuffer->nb_subframes ); #endif num_objects = st_ivas->nchan_transport; if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -276,7 +280,13 @@ void ivas_ism_render_sf( ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_in_subframe ); n_samples_rendered_loop += n_samples_in_subframe; #ifdef NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO /* update rendered subframe and slots info for all cases apart from a following crend call, the update will then happen in the crend call*/ if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM ) #else if ( st_ivas->renderer_type == RENDERER_TD_PANNING ) #endif { st_ivas->hTcBuffer->subframes_rendered += 1; st_ivas->hTcBuffer->slots_rendered += st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; Loading lib_rend/ivas_dirac_output_synthesis_dec.c +16 −4 Original line number Diff line number Diff line Loading @@ -542,8 +542,10 @@ void ivas_dirac_dec_output_synthesis_process_slot( const float *diffuseness, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ #ifndef FIX_998_UNUSED_FUNCTION const int16_t sh_rot_max_order, const float *p_Rmat, /* i : rotation matrix */ #endif const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */ const int16_t nchan_transport, /* i : number of transport channels*/ Loading Loading @@ -590,8 +592,10 @@ void ivas_dirac_dec_output_synthesis_process_slot( elevation, md_idx, NULL, #ifndef FIX_998_UNUSED_FUNCTION 2, p_Rmat, #endif hodirac_flag ); } Loading Loading @@ -638,8 +642,10 @@ void ivas_dirac_dec_output_synthesis_process_slot( elevation, md_idx, NULL, #ifndef FIX_998_UNUSED_FUNCTION sh_rot_max_order, p_Rmat, #endif hodirac_flag ); if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) Loading Loading @@ -1570,7 +1576,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( return; } #ifndef FIX_998_UNUSED_FUNCTION /*------------------------------------------------------------------------- * ivas_dirac_dec_get_response_split_order() * Loading Loading @@ -1732,7 +1738,7 @@ static void ivas_dirac_dec_get_response_split_order( return; } #endif /*------------------------------------------------------------------------- * ivas_dirac_dec_compute_directional_responses() Loading @@ -1750,8 +1756,10 @@ void ivas_dirac_dec_compute_directional_responses( const int16_t *elevation, const int16_t md_idx, const float *surCohRatio, #ifndef FIX_998_UNUSED_FUNCTION const int16_t shd_rot_max_order, /* i : split-order rotation method */ const float *p_Rmat, /* i : rotation matrix */ #endif const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ ) { Loading Loading @@ -1822,6 +1830,7 @@ void ivas_dirac_dec_compute_directional_responses( set_f( direct_response_hoa, 1.0f, MAX_OUTPUT_CHANNELS ); set_f( direct_response_dir2, 1.0f, MAX_OUTPUT_CHANNELS ); #ifndef FIX_998_UNUSED_FUNCTION if ( p_Rmat != 0 ) { ivas_dirac_dec_get_response_split_order( azimuth[k], elevation[k], direct_response_hoa, shd_rot_max_order, p_Rmat ); Loading @@ -1833,13 +1842,16 @@ void ivas_dirac_dec_compute_directional_responses( } else { #endif ivas_dirac_dec_get_response( azimuth[k], elevation[k], direct_response_hoa, hDirACRend->hOutSetup.ambisonics_order ); if ( hodirac_flag ) { ivas_dirac_dec_get_response( azimuth2[k], elevation2[k], direct_response_dir2, hDirACRend->hOutSetup.ambisonics_order ); } #ifndef FIX_998_UNUSED_FUNCTION } #endif if ( masa_band_mapping == NULL && hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { Loading Loading
lib_com/options.h +4 −1 Original line number Diff line number Diff line Loading @@ -155,10 +155,10 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ /*#define SPLIT_REND_WITH_HEAD_ROT */ /* Dlb,FhG: Split Rendering contributions 21 and 35 */ #define FIX_998_UNUSED_FUNCTION /* FhG: issue 998: delete unused funtion ivas_dirac_dec_get_response_split_order */ #define FIX_1009_ISM_NONDIEGETIC_PANNING /* FhG: issue #1009: use correct object buffer for ISM1 non-diegetic pan */ #define FIX_993_REMOVE_SBA_GET_ORDER /* VA: issue 993: remove unused function ivas_sba_get_order() */ /* #################### End BE switches ################################## */ /* #################### Start NON-BE switches ############################ */ Loading @@ -168,6 +168,9 @@ #define NONBE_FIX_864_JBM_RENDER_FRAMESIZE /* FhG: issue #864: fix different behaviour of JBM TSM with different render frame sizes */ #define NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER /* FhG: issues #1012, 1013: JBM flush function uses wrong output buffer */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ #define NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO /* FhG: issues #1014, #1015, #1016: fix tc buffer info update in the discrete ism renderer */ #define NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING /* FhG: issue 987: solution b: downmix HOA3 to stereo a input for the reverberator */ /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ Loading
lib_dec/ivas_binRenderer_internal.c +38 −8 Original line number Diff line number Diff line Loading @@ -952,6 +952,31 @@ static void ivas_binaural_obtain_DMX( set_zero( outRealRightPtr, CLDFB_NO_CHANNELS_MAX ); set_zero( outImagRightPtr, CLDFB_NO_CHANNELS_MAX ); #ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING /*Ambisonics input requires different processing*/ if ( hBinRenderer->nInChannels == 16 ) { float *inRealPtr_W, *inImagPtr_W; float *inRealPtr_Y, *inImagPtr_Y; inRealPtr_W = (float *) &( RealBuffer[0][k][0] ); inImagPtr_W = (float *) &( ImagBuffer[0][k][0] ); inRealPtr_Y = (float *) &( RealBuffer[1][k][0] ); inImagPtr_Y = (float *) &( ImagBuffer[1][k][0] ); for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { outRealLeftPtr[bandIdx] = inRealPtr_W[bandIdx] + inRealPtr_Y[bandIdx]; outImagLeftPtr[bandIdx] = inImagPtr_W[bandIdx] + inImagPtr_Y[bandIdx]; outRealRightPtr[bandIdx] = inRealPtr_W[bandIdx] - inRealPtr_Y[bandIdx]; outImagRightPtr[bandIdx] = inImagPtr_W[bandIdx] - inImagPtr_Y[bandIdx]; } } else #endif { for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { float foa_const = hBinRenderer->hReverb->foa_enc[chIdx][1]; Loading @@ -970,6 +995,7 @@ static void ivas_binaural_obtain_DMX( } } } } return; } Loading Loading @@ -1254,7 +1280,11 @@ ivas_error ivas_binRenderer_open( if ( hBinRenderer->hReverb != NULL ) { #ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && hBinRenderer->nInChannels != 16 ) #else if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) #endif { for ( k = 0; k < 11; k++ ) { Loading
lib_dec/ivas_dirac_dec.c +29 −0 Original line number Diff line number Diff line Loading @@ -1840,6 +1840,7 @@ void ivas_dirac_dec_render_sf( set_zero( surCohRatio, hSpatParamRendCom->num_freq_bands ); } } #ifndef FIX_998_UNUSED_FUNCTION if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order == 1 ) { Loading Loading @@ -1871,6 +1872,18 @@ void ivas_dirac_dec_render_sf( NULL, hodirac_flag ); } #else ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom, hDirACRend, st_ivas->hVBAPdata, st_ivas->hMasa == NULL ? NULL : st_ivas->hMasa->data.band_mapping, st_ivas->hMasaIsmData, azimuth, elevation, md_idx, surCohRatio, hodirac_flag ); #endif } if ( st_ivas->ivas_format == MASA_ISM_FORMAT && nchan_transport == 2 ) Loading Loading @@ -2200,6 +2213,7 @@ void ivas_dirac_dec_render_sf( } /*Compute PSDs*/ #ifndef FIX_998_UNUSED_FUNCTION if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order > 0 ) { ivas_dirac_dec_output_synthesis_process_slot( reference_power, Loading Loading @@ -2236,6 +2250,21 @@ void ivas_dirac_dec_render_sf( hodirac_flag, hDirAC->hConfig->dec_param_estim ); } #else ivas_dirac_dec_output_synthesis_process_slot( reference_power, p_onset_filter, azimuth, elevation, hSpatParamRendCom->diffuseness_vector[md_idx], hSpatParamRendCom, hDirACRend, st_ivas->hVBAPdata, hDirACRend->hOutSetup, nchan_transport, md_idx, hodirac_flag, hDirAC->hConfig->dec_param_estim ); #endif if ( hDirAC->hConfig->dec_param_estim ) { Loading
lib_dec/ivas_ism_renderer.c +10 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,10 @@ void ivas_ism_render_sf( slots_to_render -= st_ivas->hTcBuffer->subframe_nbslots[last_sf]; last_sf++; } #ifdef DEBUGGING assert( slots_to_render == 0 ); assert( last_sf <= st_ivas->hTcBuffer->nb_subframes ); #endif num_objects = st_ivas->nchan_transport; if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -276,7 +280,13 @@ void ivas_ism_render_sf( ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_in_subframe ); n_samples_rendered_loop += n_samples_in_subframe; #ifdef NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO /* update rendered subframe and slots info for all cases apart from a following crend call, the update will then happen in the crend call*/ if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM ) #else if ( st_ivas->renderer_type == RENDERER_TD_PANNING ) #endif { st_ivas->hTcBuffer->subframes_rendered += 1; st_ivas->hTcBuffer->slots_rendered += st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; Loading
lib_rend/ivas_dirac_output_synthesis_dec.c +16 −4 Original line number Diff line number Diff line Loading @@ -542,8 +542,10 @@ void ivas_dirac_dec_output_synthesis_process_slot( const float *diffuseness, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ #ifndef FIX_998_UNUSED_FUNCTION const int16_t sh_rot_max_order, const float *p_Rmat, /* i : rotation matrix */ #endif const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */ const int16_t nchan_transport, /* i : number of transport channels*/ Loading Loading @@ -590,8 +592,10 @@ void ivas_dirac_dec_output_synthesis_process_slot( elevation, md_idx, NULL, #ifndef FIX_998_UNUSED_FUNCTION 2, p_Rmat, #endif hodirac_flag ); } Loading Loading @@ -638,8 +642,10 @@ void ivas_dirac_dec_output_synthesis_process_slot( elevation, md_idx, NULL, #ifndef FIX_998_UNUSED_FUNCTION sh_rot_max_order, p_Rmat, #endif hodirac_flag ); if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) Loading Loading @@ -1570,7 +1576,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( return; } #ifndef FIX_998_UNUSED_FUNCTION /*------------------------------------------------------------------------- * ivas_dirac_dec_get_response_split_order() * Loading Loading @@ -1732,7 +1738,7 @@ static void ivas_dirac_dec_get_response_split_order( return; } #endif /*------------------------------------------------------------------------- * ivas_dirac_dec_compute_directional_responses() Loading @@ -1750,8 +1756,10 @@ void ivas_dirac_dec_compute_directional_responses( const int16_t *elevation, const int16_t md_idx, const float *surCohRatio, #ifndef FIX_998_UNUSED_FUNCTION const int16_t shd_rot_max_order, /* i : split-order rotation method */ const float *p_Rmat, /* i : rotation matrix */ #endif const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ ) { Loading Loading @@ -1822,6 +1830,7 @@ void ivas_dirac_dec_compute_directional_responses( set_f( direct_response_hoa, 1.0f, MAX_OUTPUT_CHANNELS ); set_f( direct_response_dir2, 1.0f, MAX_OUTPUT_CHANNELS ); #ifndef FIX_998_UNUSED_FUNCTION if ( p_Rmat != 0 ) { ivas_dirac_dec_get_response_split_order( azimuth[k], elevation[k], direct_response_hoa, shd_rot_max_order, p_Rmat ); Loading @@ -1833,13 +1842,16 @@ void ivas_dirac_dec_compute_directional_responses( } else { #endif ivas_dirac_dec_get_response( azimuth[k], elevation[k], direct_response_hoa, hDirACRend->hOutSetup.ambisonics_order ); if ( hodirac_flag ) { ivas_dirac_dec_get_response( azimuth2[k], elevation2[k], direct_response_dir2, hDirACRend->hOutSetup.ambisonics_order ); } #ifndef FIX_998_UNUSED_FUNCTION } #endif if ( masa_band_mapping == NULL && hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { Loading