Commit e4e76488 authored by vaclav's avatar vaclav
Browse files

Merge branch '903-osba-to-stereo-rendering-issue' into 'main'

Resolve "OSBA to stereo rendering issue"

See merge request !1225
parents 332bc972 c7943caa
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 ########################### */

+14 −0
Original line number Diff line number Diff line
@@ -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 )