diff --git a/lib_com/options.h b/lib_com/options.h index 67aafdc6e4e7355554213a24725719086dfba9c1..dacfa6096041dce379ab23462aaa4d730d2b77ed 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -112,6 +112,7 @@ #define NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG /* VoiceAge: issue 1063: division by zero for angle_rot feature in the UNCLR classifier */ #define FIX_1060_USAN_ARRAY_BOUNDS /* FhG: issue 1060: USAN array-bounds errors */ #define NONBE_FIX_SBA_SIGNALING_BITS_B /* FhG: issue 1061: option B: signal sba order additionally in OSBA */ +#define NONBE_FIX_1045_ISM_BITRATE_SWITCHING /* Eri: Difference between ROM/File HRTF in ISM bitrate switching */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index ec5a19a5db5a11e7aa94b69da1cfc055b757741b..febc6af54fd452401629ebdd1b61bb330a426da9 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -278,6 +278,14 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( } /* Close the TD Binaural renderer */ +#ifdef NONBE_FIX_1045_ISM_BITRATE_SWITCHING + ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); + + IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + ivas_reverb_close( &st_ivas->hReverb ); + } +#else IF( st_ivas->hBinRendererTd->HrFiltSet_p->ModelParams.modelROM == TRUE ) { ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); @@ -288,6 +296,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( ivas_reverb_close( &st_ivas->hReverb ); } } +#endif } ELSE { diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index a18e9c0f93dfdf7df0e15269ecf50bc41403b1e2..67978cd0ce8bc437d193a4d92b14ea0f1506e013 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1436,11 +1436,15 @@ static ivas_error ivas_mc_dec_reconfig_fx( test(); IF( st_ivas->hBinRendererTd != NULL && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) ) { +#ifdef NONBE_FIX_1045_ISM_BITRATE_SWITCHING + ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); +#else IF( EQ_16( st_ivas->hBinRendererTd->HrFiltSet_p->ModelParams.modelROM, TRUE ) ) { ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); st_ivas->hHrtfTD = NULL; } +#endif } IF( st_ivas->hDiracDecBin[0] != NULL ) diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index 08da97c579c9c82258ee831cf3e36d1df0956187..c01fda7d76ef06d8d4595578bf9de82a893135e5 100644 --- a/lib_dec/ivas_omasa_dec_fx.c +++ b/lib_dec/ivas_omasa_dec_fx.c @@ -715,6 +715,13 @@ ivas_error ivas_omasa_dec_config_fx( } ELSE { +#ifdef NONBE_FIX_1045_ISM_BITRATE_SWITCHING + if ( st_ivas->hBinRendererTd != NULL ) + { + /* TD renderer handle */ + ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); + } +#else /* TD renderer handle */ test(); IF( st_ivas->hBinRendererTd != NULL && EQ_16( st_ivas->hBinRendererTd->HrFiltSet_p->ModelParams.modelROM, TRUE ) ) @@ -723,7 +730,7 @@ ivas_error ivas_omasa_dec_config_fx( st_ivas->hHrtfTD = NULL; } - +#endif /* ISM renderer handle + ISM data handle */ ivas_omasa_separate_object_renderer_close( st_ivas ); } diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index 744c9c14e3b721f1544eec74d3117d91d2f60cef..b817893f22954ab4f363ad03c0b4d0d3af3e3f92 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -595,11 +595,15 @@ ivas_error ivas_sba_dec_reconfigure_fx( /* Time Domain binaural renderer handle */ IF( st_ivas->hBinRendererTd != NULL ) { +#ifdef NONBE_FIX_1045_ISM_BITRATE_SWITCHING + ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); +#else IF( st_ivas->hBinRendererTd->HrFiltSet_p->ModelParams.modelROM == TRUE ) { ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); st_ivas->hHrtfTD = NULL; } +#endif } nchan_transport_old = add( nchan_transport_old, st_ivas->nchan_ism ); /*Q0*/ st_ivas->ism_mode = ISM_MODE_NONE;