Loading apps/renderer.c +6 −0 Original line number Diff line number Diff line Loading @@ -3491,14 +3491,20 @@ static void parseCombinedFormatInput( inConfig->numAmbisonicsBuses = 1; inConfig->ambisonicsBuses[0].audioConfig = audioConfig; inConfig->ambisonicsBuses[0].inputChannelIndex = inConfig->numAudioObjects; #ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS inConfig->ambisonicsBuses[0].gain_dB = 0.f; #else inConfig->ambisonicsBuses[0].gain_dB = -6.f; #endif *configString += 4; #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS /* Modify input gain for objects too */ for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i ) { inConfig->audioObjects[i].gain_dB = -6.f; } #endif } else if ( audioConfig == IVAS_AUDIO_CONFIG_MASA1 || audioConfig == IVAS_AUDIO_CONFIG_MASA2 ) { Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ #define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ #define NONBE_FIX_TCX5_INTERLEAVING_FOR_FS_IN_UNEQUAL_FS_OUT /* FhG: apply correct TCX5 grouping/interleaving when input_fs != output_fs */ #define NONBE_1339_FIXOSBA_EXT_LOUDNESS /* FhG: issue 1339: apply scaling with EXT output in OSBA high-BR mode */ #define NONBE_1352_HARMONIZE_OSBA_LOUDNESS /* FhG: do not scale OSBA inputs by 0.5 any more */ /* ##################### End NON-BE switches ########################### */ Loading lib_dec/ivas_jbm_dec.c +13 −1 Original line number Diff line number Diff line Loading @@ -1110,7 +1110,7 @@ ivas_error ivas_jbm_dec_render( { mvr2r( p_tc[n], p_output[n], *nSamplesRendered ); } #ifdef NONBE_1339_FIXOSBA_EXT_LOUDNESS #if defined( NONBE_1339_FIXOSBA_EXT_LOUDNESS ) && !defined( NONBE_1352_HARMONIZE_OSBA_LOUDNESS ) for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); Loading @@ -1128,6 +1128,12 @@ ivas_error ivas_jbm_dec_render( else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) { ivas_dirac_dec_binaural_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output ); #ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 2.0f, p_output[n], *nSamplesRendered ); } #endif } else { Loading @@ -1150,6 +1156,12 @@ ivas_error ivas_jbm_dec_render( set_zero( p_output[n], *nSamplesRendered ); } } #ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 2.0f, p_output[n], *nSamplesRendered ); } #endif } } else if ( st_ivas->ivas_format == MC_FORMAT ) Loading lib_dec/ivas_osba_dec.c +18 −1 Original line number Diff line number Diff line Loading @@ -183,12 +183,21 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( for ( b = 0; b < num_cldfb_bands; b++ ) { st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] = #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + ( 0.5f * Cldfb_RealBuffer[b] ); #else st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] + Cldfb_RealBuffer[b]; #endif st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] = #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + ( 0.5f * Cldfb_ImagBuffer[b] ); #else st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] + Cldfb_ImagBuffer[b]; #endif } } } Loading @@ -205,7 +214,11 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( int16_t i; for ( i = 0; i < nSamplesAsked; i++ ) { #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS output_f[n][i] = 0.5f * output_f[channel_offset + n][i] + 0.5f * p_sepobj[n][i]; #else output_f[n][i] = output_f[channel_offset + n][i] + p_sepobj[n][i]; #endif } } } Loading Loading @@ -295,7 +308,9 @@ ivas_error ivas_osba_render_sf( v_add( p_output[n], p_output_ism[n], p_output[n], *nSamplesRendered ); } #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); #endif } return IVAS_ERR_OK; Loading Loading @@ -338,10 +353,12 @@ void ivas_osba_stereo_add_channels( } } #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS for ( n = 0; n < nchan_out; n++ ) { v_multc( output_f[n], 0.5f, output_f[n], n_samples_to_render ); } #endif return; } Loading
apps/renderer.c +6 −0 Original line number Diff line number Diff line Loading @@ -3491,14 +3491,20 @@ static void parseCombinedFormatInput( inConfig->numAmbisonicsBuses = 1; inConfig->ambisonicsBuses[0].audioConfig = audioConfig; inConfig->ambisonicsBuses[0].inputChannelIndex = inConfig->numAudioObjects; #ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS inConfig->ambisonicsBuses[0].gain_dB = 0.f; #else inConfig->ambisonicsBuses[0].gain_dB = -6.f; #endif *configString += 4; #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS /* Modify input gain for objects too */ for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i ) { inConfig->audioObjects[i].gain_dB = -6.f; } #endif } else if ( audioConfig == IVAS_AUDIO_CONFIG_MASA1 || audioConfig == IVAS_AUDIO_CONFIG_MASA2 ) { Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ #define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ #define NONBE_FIX_TCX5_INTERLEAVING_FOR_FS_IN_UNEQUAL_FS_OUT /* FhG: apply correct TCX5 grouping/interleaving when input_fs != output_fs */ #define NONBE_1339_FIXOSBA_EXT_LOUDNESS /* FhG: issue 1339: apply scaling with EXT output in OSBA high-BR mode */ #define NONBE_1352_HARMONIZE_OSBA_LOUDNESS /* FhG: do not scale OSBA inputs by 0.5 any more */ /* ##################### End NON-BE switches ########################### */ Loading
lib_dec/ivas_jbm_dec.c +13 −1 Original line number Diff line number Diff line Loading @@ -1110,7 +1110,7 @@ ivas_error ivas_jbm_dec_render( { mvr2r( p_tc[n], p_output[n], *nSamplesRendered ); } #ifdef NONBE_1339_FIXOSBA_EXT_LOUDNESS #if defined( NONBE_1339_FIXOSBA_EXT_LOUDNESS ) && !defined( NONBE_1352_HARMONIZE_OSBA_LOUDNESS ) for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); Loading @@ -1128,6 +1128,12 @@ ivas_error ivas_jbm_dec_render( else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) { ivas_dirac_dec_binaural_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output ); #ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 2.0f, p_output[n], *nSamplesRendered ); } #endif } else { Loading @@ -1150,6 +1156,12 @@ ivas_error ivas_jbm_dec_render( set_zero( p_output[n], *nSamplesRendered ); } } #ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 2.0f, p_output[n], *nSamplesRendered ); } #endif } } else if ( st_ivas->ivas_format == MC_FORMAT ) Loading
lib_dec/ivas_osba_dec.c +18 −1 Original line number Diff line number Diff line Loading @@ -183,12 +183,21 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( for ( b = 0; b < num_cldfb_bands; b++ ) { st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] = #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + ( 0.5f * Cldfb_RealBuffer[b] ); #else st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] + Cldfb_RealBuffer[b]; #endif st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] = #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + ( 0.5f * Cldfb_ImagBuffer[b] ); #else st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] + Cldfb_ImagBuffer[b]; #endif } } } Loading @@ -205,7 +214,11 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( int16_t i; for ( i = 0; i < nSamplesAsked; i++ ) { #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS output_f[n][i] = 0.5f * output_f[channel_offset + n][i] + 0.5f * p_sepobj[n][i]; #else output_f[n][i] = output_f[channel_offset + n][i] + p_sepobj[n][i]; #endif } } } Loading Loading @@ -295,7 +308,9 @@ ivas_error ivas_osba_render_sf( v_add( p_output[n], p_output_ism[n], p_output[n], *nSamplesRendered ); } #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); #endif } return IVAS_ERR_OK; Loading Loading @@ -338,10 +353,12 @@ void ivas_osba_stereo_add_channels( } } #ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS for ( n = 0; n < nchan_out; n++ ) { v_multc( output_f[n], 0.5f, output_f[n], n_samples_to_render ); } #endif return; }