From c7943caa7f9f941c7fe26462258f13ff880d7df1 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 13 Nov 2023 15:41:29 +0100 Subject: [PATCH] issue 903: fix OSBA to stereo rendering issue; under NONBE_FIX_903_OSBA_TO_STEREO --- lib_com/options.h | 1 + lib_dec/ivas_jbm_dec.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index f44ad78c49..f9f53108b5 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -165,6 +165,7 @@ #define NONBE_FIX_871_ACELP_CRASH_IN_OSBA /* FhG: isse 871: crash in ACELP core encoder with OSBA */ #define NONBE_FIX_225_MASA_EXT_REND /* Nokia: Resolve #225: Complete MASA external renderer implementation */ #define NONBE_FIX_897_USAN_WITH_MASA_RENDERING /* Nokia: issue #897: USAN null pointer in MASA external renderer to Ambisonics */ +#define NONBE_FIX_903_OSBA_TO_STEREO /* VA: issue 903: fix OSBA to stereo rendering issue */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 9229336f78..4234698629 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1186,13 +1186,27 @@ ivas_error ivas_jbm_dec_render( { *nSamplesRendered = min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); +#ifdef NONBE_FIX_903_OSBA_TO_STEREO + /* shift SBA channels to avoid overwrite by ISM upmix in 1 object case */ + if ( st_ivas->nchan_ism == 1 ) + { + mvr2r( p_output[2], p_output[3], *nSamplesRendered ); + mvr2r( p_output[1], p_output[2], *nSamplesRendered ); + p_tc[3] = p_output[3]; + } +#endif + /* render objects */ ivas_ism_render_sf( st_ivas, p_output, *nSamplesRendered ); /* add already rendererd SBA part */ for ( n = 0; n < nchan_out; n++ ) { +#ifdef NONBE_FIX_903_OSBA_TO_STEREO + v_add( p_output[n], p_tc[n + max( nchan_out, st_ivas->nchan_ism )], p_output[n], *nSamplesRendered ); +#else v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); +#endif } } 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