From 2c09078cd6c1ba7c6f83bc500792edea0c9a81de Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 15:49:35 +0200 Subject: [PATCH 01/18] remove factor of 0.5 in the OSBA encoder and decoder --- lib_dec/ivas_jbm_dec.c | 10 +++++----- lib_dec/ivas_osba_dec.c | 25 +++++++++++++++---------- lib_enc/ivas_osba_enc.c | 4 ++++ 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 173d031628..4133283729 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1110,11 +1110,11 @@ ivas_error ivas_jbm_dec_render( { mvr2r( p_tc[n], p_output[n], *nSamplesRendered ); } -#ifdef NONBE_1339_FIXOSBA_EXT_LOUDNESS - for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) - { - v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); - } +#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS + for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) + { + v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); + } #endif } else diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index afa273fdbb..deda07dc04 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -183,12 +183,16 @@ 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] = - ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + - ( 0.5f * Cldfb_RealBuffer[b] ); + // ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + + // ( 0.5f * Cldfb_RealBuffer[b] ); + st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] + + Cldfb_RealBuffer[b]; st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] = - ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + - ( 0.5f * Cldfb_ImagBuffer[b] ); + // ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + + // ( 0.5f * Cldfb_ImagBuffer[b] ); + st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] + + Cldfb_ImagBuffer[b]; } } } @@ -205,7 +209,8 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( int16_t i; for ( i = 0; i < nSamplesAsked; i++ ) { - output_f[n][i] = 0.5f * output_f[channel_offset + n][i] + 0.5f * p_sepobj[n][i]; + // output_f[n][i] = 0.5f * output_f[channel_offset + n][i] + 0.5f * p_sepobj[n][i]; + output_f[n][i] = output_f[channel_offset + n][i] + p_sepobj[n][i]; } } } @@ -295,7 +300,7 @@ ivas_error ivas_osba_render_sf( v_add( p_output[n], p_output_ism[n], p_output[n], *nSamplesRendered ); } - v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); + // v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); } return IVAS_ERR_OK; @@ -338,10 +343,10 @@ void ivas_osba_stereo_add_channels( } } - for ( n = 0; n < nchan_out; n++ ) - { - v_multc( output_f[n], 0.5f, output_f[n], n_samples_to_render ); - } + // for ( n = 0; n < nchan_out; n++ ) + // { + // v_multc( output_f[n], 0.5f, output_f[n], n_samples_to_render ); + // } return; } diff --git a/lib_enc/ivas_osba_enc.c b/lib_enc/ivas_osba_enc.c index 9939545607..5eaee1331c 100644 --- a/lib_enc/ivas_osba_enc.c +++ b/lib_enc/ivas_osba_enc.c @@ -72,7 +72,11 @@ static void ivas_merge_sba_transports( { for ( j = 0; j < input_frame; j++ ) { +#ifdef NONBE_1339_FIXOSBA_EXT_LOUDNESS + data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; +#else data_out_f[i][j] = 0.5f * ( data_in_f1[i][j] + data_in_f2[i][j] ); +#endif } } -- GitLab From e57cc89fa918745c16b0ab1bcd0facf976b13357 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 16:56:43 +0200 Subject: [PATCH 02/18] fix formatting --- lib_dec/ivas_jbm_dec.c | 8 ++++---- lib_enc/ivas_osba_enc.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 4133283729..55c95b452d 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1111,10 +1111,10 @@ ivas_error ivas_jbm_dec_render( mvr2r( p_tc[n], p_output[n], *nSamplesRendered ); } #ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS - for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) - { - v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); - } + for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) + { + v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); + } #endif } else diff --git a/lib_enc/ivas_osba_enc.c b/lib_enc/ivas_osba_enc.c index 5eaee1331c..809177a3f8 100644 --- a/lib_enc/ivas_osba_enc.c +++ b/lib_enc/ivas_osba_enc.c @@ -73,7 +73,7 @@ static void ivas_merge_sba_transports( for ( j = 0; j < input_frame; j++ ) { #ifdef NONBE_1339_FIXOSBA_EXT_LOUDNESS - data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; + data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; #else data_out_f[i][j] = 0.5f * ( data_in_f1[i][j] + data_in_f2[i][j] ); #endif -- GitLab From d204583b6afa920afbfeff83144f71645265563a Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 17:00:18 +0200 Subject: [PATCH 03/18] enable NONBE_13552_HARMONIZE_OSBA_LOUDNESS --- lib_com/options.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib_com/options.h b/lib_com/options.h index 88467e1090..4d7e724045 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -174,6 +174,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_13552_HARMONIZE_OSBA_LOUDNESS /* FhG: do not scale OSBA inputs by 0.5 any more */ /* ##################### End NON-BE switches ########################### */ -- GitLab From bd8ffd96c74f1092cdc2825c7ec0a1067f220906 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 17:03:34 +0200 Subject: [PATCH 04/18] fix ifdefs in lib_dec/ivas_jbm_dec.c --- lib_dec/ivas_jbm_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 55c95b452d..f8bf5f73b3 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1110,7 +1110,7 @@ ivas_error ivas_jbm_dec_render( { mvr2r( p_tc[n], p_output[n], *nSamplesRendered ); } -#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#if defined(NONBE_1339_FIXOSBA_EXT_LOUDNESS) && !defined(NONBE_13552_HARMONIZE_OSBA_LOUDNESS) for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); -- GitLab From 10372a21f7759b0cd52cc83e097e0b760cdf6325 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 17:09:39 +0200 Subject: [PATCH 05/18] fix formatting --- lib_dec/ivas_jbm_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index f8bf5f73b3..7d8fff6387 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1110,7 +1110,7 @@ ivas_error ivas_jbm_dec_render( { mvr2r( p_tc[n], p_output[n], *nSamplesRendered ); } -#if defined(NONBE_1339_FIXOSBA_EXT_LOUDNESS) && !defined(NONBE_13552_HARMONIZE_OSBA_LOUDNESS) +#if defined( NONBE_1339_FIXOSBA_EXT_LOUDNESS ) && !defined( NONBE_13552_HARMONIZE_OSBA_LOUDNESS ) for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) { v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); -- GitLab From 85168bcabff14359717043a294d73adfa33bc8dc Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 18:02:37 +0200 Subject: [PATCH 06/18] fix encapdulation of the changes in lib_dec/ivas_osba_dec.c and lib_enc/ivas_osba_enc.c --- lib_dec/ivas_osba_dec.c | 19 +++++++++++++------ lib_enc/ivas_osba_enc.c | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index deda07dc04..85ca8d5356 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -183,16 +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] = - // ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + - // ( 0.5f * Cldfb_RealBuffer[b] ); +#ifndef NONBE_13552_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] = - // ( 0.5f * st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) + - // ( 0.5f * Cldfb_ImagBuffer[b] ); +#ifndef NONBE_13552_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 } } } @@ -300,7 +305,9 @@ ivas_error ivas_osba_render_sf( v_add( p_output[n], p_output_ism[n], p_output[n], *nSamplesRendered ); } - // v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); +#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS + v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); +#endif } return IVAS_ERR_OK; diff --git a/lib_enc/ivas_osba_enc.c b/lib_enc/ivas_osba_enc.c index 809177a3f8..6215f884eb 100644 --- a/lib_enc/ivas_osba_enc.c +++ b/lib_enc/ivas_osba_enc.c @@ -72,7 +72,7 @@ static void ivas_merge_sba_transports( { for ( j = 0; j < input_frame; j++ ) { -#ifdef NONBE_1339_FIXOSBA_EXT_LOUDNESS +#ifdef NONBE_13552_HARMONIZE_OSBA_LOUDNESS data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; #else data_out_f[i][j] = 0.5f * ( data_in_f1[i][j] + data_in_f2[i][j] ); -- GitLab From dac05343aa0c1228fc792d7c256599f9bcca77c4 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 18:05:06 +0200 Subject: [PATCH 07/18] fix formatting --- lib_dec/ivas_osba_dec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index 85ca8d5356..20d1ef425b 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -191,7 +191,7 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( Cldfb_RealBuffer[b]; #endif st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] = -#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#ifndef NONBE_13552_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 @@ -306,7 +306,7 @@ ivas_error ivas_osba_render_sf( } #ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS - v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); + v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); #endif } -- GitLab From 4488b5a76fbba9fe3c0ac44642570aab7d313dc0 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 18:10:30 +0200 Subject: [PATCH 08/18] fix encapdulation of more changes in lib_dec/ivas_osba_dec.c --- lib_dec/ivas_osba_dec.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index 20d1ef425b..918f4c45fe 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -214,8 +214,11 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( int16_t i; for ( i = 0; i < nSamplesAsked; i++ ) { - // output_f[n][i] = 0.5f * output_f[channel_offset + n][i] + 0.5f * p_sepobj[n][i]; +#ifndef NONBE_13552_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 } } } @@ -350,10 +353,12 @@ void ivas_osba_stereo_add_channels( } } - // for ( n = 0; n < nchan_out; n++ ) - // { - // v_multc( output_f[n], 0.5f, output_f[n], n_samples_to_render ); - // } + #ifndef NONBE_13552_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; } -- GitLab From 469622e461f4c22f906f2ae7fa306e3b0d28d60b Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 18:29:02 +0200 Subject: [PATCH 09/18] amplify pre-rendered OSBA by in the decoder --- lib_dec/ivas_sba_dec.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 8ddc7f0406..ebd65a7b4f 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -747,20 +747,37 @@ ivas_error ivas_sba_dec_render( ivas_spar_dec_upmixer_sf( st_ivas, output_f_local, nchan_internal ); - if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + if ( st_ivas->ivas_format == SBA_ISM_FORMAT) { - float gain = st_ivas->hSbaIsmData->gain_bed; - if ( gain != 1.0f && gain >= 0.0f ) + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - for ( ch = 0; ch < nchan_out; ch++ ) + float gain = st_ivas->hSbaIsmData->gain_bed; + if ( gain != 1.0f && gain >= 0.0f ) { - int16_t i; - for ( i = 0; i < n_samples_sf; i++ ) + for ( ch = 0; ch < nchan_out; ch++ ) { - output_f_local[ch][i] *= gain; + int16_t i; + for ( i = 0; i < n_samples_sf; i++ ) + { + output_f_local[ch][i] *= gain; + } } } } +#ifdef NONBE_13552_HARMONIZE_OSBA_LOUDNESS + else + { + for ( ch = 0; ch < nchan_out; ch++ ) + { + int16_t i; + for ( i = 0; i < n_samples_sf; i++ ) + { + output_f_local[ch][i] *= 2.0f; + } + } + + } +#endif } for ( ch = 0; ch < nchan_out; ch++ ) -- GitLab From 6ad1847317c0f4ed02f6f5b1918898632d4cd0a9 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 18:39:54 +0200 Subject: [PATCH 10/18] fix formatting --- lib_dec/ivas_sba_dec.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index ebd65a7b4f..2a41280554 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -747,7 +747,7 @@ ivas_error ivas_sba_dec_render( ivas_spar_dec_upmixer_sf( st_ivas, output_f_local, nchan_internal ); - if ( st_ivas->ivas_format == SBA_ISM_FORMAT) + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) { if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { @@ -767,15 +767,14 @@ ivas_error ivas_sba_dec_render( #ifdef NONBE_13552_HARMONIZE_OSBA_LOUDNESS else { - for ( ch = 0; ch < nchan_out; ch++ ) + for ( ch = 0; ch < nchan_out; ch++ ) + { + int16_t i; + for ( i = 0; i < n_samples_sf; i++ ) { - int16_t i; - for ( i = 0; i < n_samples_sf; i++ ) - { - output_f_local[ch][i] *= 2.0f; - } + output_f_local[ch][i] *= 2.0f; } - + } } #endif } -- GitLab From 209f67715f83504225a8b93c4ccfe0858a866b75 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 21 Jul 2025 19:03:51 +0200 Subject: [PATCH 11/18] fix formatting --- lib_dec/ivas_osba_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index 918f4c45fe..e1173b94fa 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -353,7 +353,7 @@ void ivas_osba_stereo_add_channels( } } - #ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS for ( n = 0; n < nchan_out; n++ ) { v_multc( output_f[n], 0.5f, output_f[n], n_samples_to_render ); -- GitLab From a05d2d90d69a6b3f437900ed83ba25647ddb580c Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Tue, 22 Jul 2025 09:34:39 +0200 Subject: [PATCH 12/18] fix a typo in a define --- lib_com/options.h | 2 +- lib_dec/ivas_sba_dec.c | 2 +- lib_enc/ivas_osba_enc.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 4d7e724045..9b2e62b011 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -174,7 +174,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_13552_HARMONIZE_OSBA_LOUDNESS /* FhG: do not scale OSBA inputs by 0.5 any more */ +#define NONBE_1352_HARMONIZE_OSBA_LOUDNESS /* FhG: do not scale OSBA inputs by 0.5 any more */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 2a41280554..4f0ef256e2 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -764,7 +764,7 @@ ivas_error ivas_sba_dec_render( } } } -#ifdef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS else { for ( ch = 0; ch < nchan_out; ch++ ) diff --git a/lib_enc/ivas_osba_enc.c b/lib_enc/ivas_osba_enc.c index 6215f884eb..4b73873b7d 100644 --- a/lib_enc/ivas_osba_enc.c +++ b/lib_enc/ivas_osba_enc.c @@ -72,7 +72,7 @@ static void ivas_merge_sba_transports( { for ( j = 0; j < input_frame; j++ ) { -#ifdef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; #else data_out_f[i][j] = 0.5f * ( data_in_f1[i][j] + data_in_f2[i][j] ); -- GitLab From 400db3f9f01d629a047e4792fd435516a3c1d702 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Tue, 22 Jul 2025 10:18:57 +0200 Subject: [PATCH 13/18] move the scaling factor behind the rendering --- lib_dec/ivas_jbm_dec.c | 12 ++++++++++++ lib_dec/ivas_sba_dec.c | 24 ++++-------------------- lib_enc/ivas_osba_enc.c | 4 ---- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 7d8fff6387..eb3fec751d 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -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 { @@ -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 ) diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 4f0ef256e2..8ddc7f0406 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -747,36 +747,20 @@ ivas_error ivas_sba_dec_render( ivas_spar_dec_upmixer_sf( st_ivas, output_f_local, nchan_internal ); - if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) - { - float gain = st_ivas->hSbaIsmData->gain_bed; - if ( gain != 1.0f && gain >= 0.0f ) - { - for ( ch = 0; ch < nchan_out; ch++ ) - { - int16_t i; - for ( i = 0; i < n_samples_sf; i++ ) - { - output_f_local[ch][i] *= gain; - } - } - } - } -#ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS - else + float gain = st_ivas->hSbaIsmData->gain_bed; + if ( gain != 1.0f && gain >= 0.0f ) { for ( ch = 0; ch < nchan_out; ch++ ) { int16_t i; for ( i = 0; i < n_samples_sf; i++ ) { - output_f_local[ch][i] *= 2.0f; + output_f_local[ch][i] *= gain; } } } -#endif } for ( ch = 0; ch < nchan_out; ch++ ) diff --git a/lib_enc/ivas_osba_enc.c b/lib_enc/ivas_osba_enc.c index 4b73873b7d..9939545607 100644 --- a/lib_enc/ivas_osba_enc.c +++ b/lib_enc/ivas_osba_enc.c @@ -72,11 +72,7 @@ static void ivas_merge_sba_transports( { for ( j = 0; j < input_frame; j++ ) { -#ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS - data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; -#else data_out_f[i][j] = 0.5f * ( data_in_f1[i][j] + data_in_f2[i][j] ); -#endif } } -- GitLab From 0b5486f028f999f50e8e3392d86cb54c69b4941d Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Tue, 22 Jul 2025 10:34:10 +0200 Subject: [PATCH 14/18] fix more instances of the typo in the define --- lib_dec/ivas_jbm_dec.c | 2 +- lib_dec/ivas_osba_dec.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index eb3fec751d..317bb0057d 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1110,7 +1110,7 @@ ivas_error ivas_jbm_dec_render( { mvr2r( p_tc[n], p_output[n], *nSamplesRendered ); } -#if defined( NONBE_1339_FIXOSBA_EXT_LOUDNESS ) && !defined( NONBE_13552_HARMONIZE_OSBA_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 ); diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index e1173b94fa..25e9eecd6d 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -183,7 +183,7 @@ 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_13552_HARMONIZE_OSBA_LOUDNESS +#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 @@ -191,7 +191,7 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( Cldfb_RealBuffer[b]; #endif st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] = -#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#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 @@ -214,7 +214,7 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( int16_t i; for ( i = 0; i < nSamplesAsked; i++ ) { -#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#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]; @@ -353,7 +353,7 @@ void ivas_osba_stereo_add_channels( } } -#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#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 ); -- GitLab From 67970d3d7f6bca7608865424671617989b0e055d Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Tue, 22 Jul 2025 11:33:44 +0200 Subject: [PATCH 15/18] do not scale OSBA inputs down in the external renderer --- apps/renderer.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/apps/renderer.c b/apps/renderer.c index f43fde32d2..bd15b471c0 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -3491,14 +3491,8 @@ static void parseCombinedFormatInput( inConfig->numAmbisonicsBuses = 1; inConfig->ambisonicsBuses[0].audioConfig = audioConfig; inConfig->ambisonicsBuses[0].inputChannelIndex = inConfig->numAudioObjects; - inConfig->ambisonicsBuses[0].gain_dB = -6.f; + inConfig->ambisonicsBuses[0].gain_dB = 0.f; *configString += 4; - - /* Modify input gain for objects too */ - for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i ) - { - inConfig->audioObjects[i].gain_dB = -6.f; - } } else if ( audioConfig == IVAS_AUDIO_CONFIG_MASA1 || audioConfig == IVAS_AUDIO_CONFIG_MASA2 ) { -- GitLab From 289e28aab6bc4b4ffa9a289bf81b43a8e789514a Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Tue, 29 Jul 2025 14:33:32 +0200 Subject: [PATCH 16/18] wrap changes in renderer.c into ifdefs --- apps/renderer.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/renderer.c b/apps/renderer.c index bd15b471c0..da7bea9c42 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -3491,8 +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; + +#ifdef 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 ) { -- GitLab From 6008c67efbeb053f3ca13c305bc86272446acb0f Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Tue, 29 Jul 2025 14:41:43 +0200 Subject: [PATCH 17/18] replace an ifdef by an ifndef in renderer.c --- apps/renderer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/renderer.c b/apps/renderer.c index da7bea9c42..8e44fd6cc1 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -3498,7 +3498,7 @@ static void parseCombinedFormatInput( #endif *configString += 4; -#ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS +#ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS /* Modify input gain for objects too */ for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i ) { -- GitLab From 1b9816b06aacd8a1adc0a97a3a7abf93d30bb1b3 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 30 Jul 2025 12:36:39 +0200 Subject: [PATCH 18/18] fix typo in ivas_osba_dec.c that caused a loudness decrease at higher bitrates --- lib_dec/ivas_osba_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index 25e9eecd6d..ab1b378ab6 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -308,7 +308,7 @@ ivas_error ivas_osba_render_sf( v_add( p_output[n], p_output_ism[n], p_output[n], *nSamplesRendered ); } -#ifndef NONBE_13552_HARMONIZE_OSBA_LOUDNESS +#ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS v_multc( p_output[n], 0.5f, p_output[n], *nSamplesRendered ); #endif } -- GitLab