From b0f985c5e8b58ad526667833a67c0e60dec633c9 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 24 Oct 2025 14:18:31 +0200 Subject: [PATCH 1/3] add missing gain_bed application in sba decoding --- lib_dec/ivas_sba_dec_fx.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index ea7e100a1..84e437656 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -30,6 +30,7 @@ *******************************************************************************************************/ +#include "enh32.h" #include #include #include "options.h" @@ -936,6 +937,23 @@ ivas_error ivas_sba_dec_render_fx( ivas_spar_dec_upmixer_sf_fx( st_ivas, output_fx_local, nchan_internal ); + test(); + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) + { + Word32 gain = st_ivas->hSbaIsmData->gain_bed_fx; // Q29 + test(); + IF( NE_32( gain, ONE_IN_Q29 ) && NE_32( gain, 0 ) ) + { + FOR( ch = 0; ch < nchan_out; ch++ ) + { + FOR( Word16 i = 0; i < n_samples_sf; i++ ) + { + output_fx_local[ch][i] = L_shl( Mpy_32_32( output_fx_local[ch][i], gain ), 2 ); // Q11 + } + } + } + } + FOR( ch = 0; ch < nchan_out; ch++ ) { output_fx_local[ch] = output_fx_local[ch] + n_samples_sf; /*Q11*/ -- GitLab From 22518193f76695c7932babfae39f082239795c57 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 24 Oct 2025 14:29:45 +0200 Subject: [PATCH 2/3] align between different occurences of (O)SBA bed gain application --- lib_dec/ivas_osba_dec_fx.c | 10 +++++----- lib_dec/ivas_sba_dec_fx.c | 6 +++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c index 67908e996..67d60c65b 100644 --- a/lib_dec/ivas_osba_dec_fx.c +++ b/lib_dec/ivas_osba_dec_fx.c @@ -344,9 +344,8 @@ void ivas_osba_stereo_add_channels_fx( IF( EQ_16( ism_mode, ISM_SBA_MODE_DISC ) ) { Word32 gain = gain_bed_fx; - test(); + move32(); - // TODO: Enable gain editing feature (NE_32 ( gain, ONE_IN_Q_gain ) ) test(); IF( NE_32( gain, ONE_IN_Q29 ) && GT_32( gain, 0 ) ) { @@ -354,9 +353,10 @@ void ivas_osba_stereo_add_channels_fx( { FOR( i = 0; i < n_samples_to_render; i++ ) { - Word32 tmp1 = Mpy_32_32( tc_fx[n + nchan_ism][i], gain ); // Q11 + Q29 - 31 = Q9 - tmp1 = L_shl( tmp1, 2 ); // Q9 --> Q11 - output_fx[n][i] = L_add_sat( output_fx[n][i], tmp1 ); // Q11 + Word32 tmp1; + tmp1 = Mpy_32_32( tc_fx[n + nchan_ism][i], gain ); // Q11 + Q29 - 31 = Q9 + tmp1 = L_shl( tmp1, 2 ); // Q9 --> Q11 + output_fx[n][i] = L_add_sat( output_fx[n][i], tmp1 ); // Q11 } } } diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index 84e437656..a4e19c6cb 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -941,6 +941,8 @@ ivas_error ivas_sba_dec_render_fx( IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) { Word32 gain = st_ivas->hSbaIsmData->gain_bed_fx; // Q29 + move32(); + test(); IF( NE_32( gain, ONE_IN_Q29 ) && NE_32( gain, 0 ) ) { @@ -948,7 +950,9 @@ ivas_error ivas_sba_dec_render_fx( { FOR( Word16 i = 0; i < n_samples_sf; i++ ) { - output_fx_local[ch][i] = L_shl( Mpy_32_32( output_fx_local[ch][i], gain ), 2 ); // Q11 + Word32 tmp1; + tmp1 = Mpy_32_32( output_fx_local[ch][i], gain ); // Q11 + Q29 - 31 = Q9 + output_fx_local = L_shl( tmp1, 2 ); // Q9 --> Q11 } } } -- GitLab From 223030562a7dffdbbb11c01d126b98944f18627e Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 24 Oct 2025 16:35:31 +0200 Subject: [PATCH 3/3] align comment --- lib_dec/ivas_sba_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index a4e19c6cb..ebf516db3 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -952,7 +952,7 @@ ivas_error ivas_sba_dec_render_fx( { Word32 tmp1; tmp1 = Mpy_32_32( output_fx_local[ch][i], gain ); // Q11 + Q29 - 31 = Q9 - output_fx_local = L_shl( tmp1, 2 ); // Q9 --> Q11 + output_fx_local[ch][i] = L_shl( tmp1, 2 ); // Q9 --> Q11 } } } -- GitLab