From 23aa3be13f6b4e2926cb3239cb93080ad2228557 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 22 Jan 2025 16:49:26 +0100 Subject: [PATCH 1/3] [fix] apply scaling factor to OSBA stereo output and remove redundant code --- lib_com/options.h | 1 + lib_dec/ivas_osba_dec.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index f6aaeba759..1ed7cc4655 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -172,6 +172,7 @@ #define NONBE_1217_OBJ_EDIT_FOA /* VA/Nokia: isse 1217: fix crash in object editing to FOA output in ParamISM */ #define NONBE_1215_FIX_JBM_MAX_SCALING /* FhG: issue 1215: Fix assert hit in a specific VoIP decoder config. Caused by integer overflow in max scaling calculation. */ #define NONBE_FIX_1255_OBJ_EDIT_JBM /* VA: issue 1255: restore object editing in JBM */ +#define NONBE_FIX_1262_OSBA_STEREO /* FhG: issue 1262: Fix missing scaling factor for OSBA stereo output */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index 18493968bf..354fff47cd 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -320,8 +320,10 @@ void ivas_osba_stereo_add_channels( { int16_t n; +#ifndef NONBE_FIX_1262_OSBA_STEREO if ( ism_mode == ISM_SBA_MODE_DISC ) { +#endif if ( gain != 1.0f && gain >= 0.0f ) { int16_t i; @@ -340,6 +342,7 @@ void ivas_osba_stereo_add_channels( v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); } } +#ifndef NONBE_FIX_1262_OSBA_STEREO } else { @@ -348,6 +351,14 @@ void ivas_osba_stereo_add_channels( v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); } } +#endif +#ifdef NONBE_FIX_1262_OSBA_STEREO + + 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 65f0ba040dbe596ace51a2612c4ead5131e78b09 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 22 Jan 2025 17:01:09 +0100 Subject: [PATCH 2/3] [fix] compilation with -Werror --- lib_com/ivas_prot.h | 2 ++ lib_dec/ivas_jbm_dec.c | 6 +++++- lib_dec/ivas_osba_dec.c | 14 ++++++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 67c6a4b684..987455ea7c 100755 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -5592,7 +5592,9 @@ void ivas_osba_stereo_add_channels( const float gain, /* i : gain bed value */ const int16_t nchan_out, /* i : number of output channels */ const int16_t nchan_ism, /* i : number of ISM channels */ +#ifndef NONBE_FIX_1262_OSBA_STEREO const int16_t ism_mode, /* i : ISM mode */ +#endif const int16_t n_samples_to_render /* i : output frame length per channel */ ); diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 3fd629a685..e35b785bf0 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1096,7 +1096,11 @@ ivas_error ivas_jbm_dec_render( ivas_ism_render_sf( st_ivas, st_ivas->renderer_type, p_output, *nSamplesRendered ); /* add already rendered SBA part */ - ivas_osba_stereo_add_channels( p_tc, p_output, st_ivas->hSbaIsmData->gain_bed, nchan_out, st_ivas->nchan_ism, st_ivas->ism_mode, *nSamplesRendered ); + ivas_osba_stereo_add_channels( p_tc, p_output, st_ivas->hSbaIsmData->gain_bed, nchan_out, st_ivas->nchan_ism, +#ifndef NONBE_FIX_1262_OSBA_STEREO + st_ivas->ism_mode, +#endif + *nSamplesRendered ); } else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index 354fff47cd..473d82dee2 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -309,12 +309,14 @@ ivas_error ivas_osba_render_sf( *-------------------------------------------------------------------------*/ void ivas_osba_stereo_add_channels( - float *tc_f[], /* i : transport channels */ - float *output_f[], /* i/o: output channels */ - const float gain, /* i : gain bed value */ - const int16_t nchan_out, /* i : number of output channels */ - const int16_t nchan_ism, /* i : number of ISM channels */ - const int16_t ism_mode, /* i : ISM mode */ + float *tc_f[], /* i : transport channels */ + float *output_f[], /* i/o: output channels */ + const float gain, /* i : gain bed value */ + const int16_t nchan_out, /* i : number of output channels */ + const int16_t nchan_ism, /* i : number of ISM channels */ +#ifndef NONBE_FIX_1262_OSBA_STEREO + const int16_t ism_mode, /* i : ISM mode */ +#endif const int16_t n_samples_to_render /* i : output frame length per channel */ ) { -- GitLab From 88d433a23a0938f0481f5a3ed8649f3617bce2d9 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 23 Jan 2025 10:14:01 +0100 Subject: [PATCH 3/3] formatting around ifdef --- lib_dec/ivas_jbm_dec.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index e35b785bf0..f986791d97 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1096,11 +1096,11 @@ ivas_error ivas_jbm_dec_render( ivas_ism_render_sf( st_ivas, st_ivas->renderer_type, p_output, *nSamplesRendered ); /* add already rendered SBA part */ - ivas_osba_stereo_add_channels( p_tc, p_output, st_ivas->hSbaIsmData->gain_bed, nchan_out, st_ivas->nchan_ism, -#ifndef NONBE_FIX_1262_OSBA_STEREO - st_ivas->ism_mode, +#ifdef NONBE_FIX_1262_OSBA_STEREO + ivas_osba_stereo_add_channels( p_tc, p_output, st_ivas->hSbaIsmData->gain_bed, nchan_out, st_ivas->nchan_ism, *nSamplesRendered ); +#else + ivas_osba_stereo_add_channels( p_tc, p_output, st_ivas->hSbaIsmData->gain_bed, nchan_out, st_ivas->nchan_ism, st_ivas->ism_mode, *nSamplesRendered ); #endif - *nSamplesRendered ); } else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { -- GitLab