From 7dc2f5acada0bc55b8bb5745b050037a8f3e4cc7 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 20 Aug 2025 16:11:03 +0200 Subject: [PATCH] port MR --- lib_com/options.h | 1 + lib_dec/ivas_jbm_dec_fx.c | 13 ++++++++++++- lib_dec/ivas_objectRenderer_internal_fx.c | 6 ++++++ lib_dec/ivas_omasa_dec_fx.c | 13 +++++++++++-- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 031644459..8e7102a0e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -138,6 +138,7 @@ #define NONBE_1240_FIX_CORE_SELECTION_ISM_SW /* VA: issue 1240: Remove the forcing of the TCX core in ISM when switching from a high bitarte to a low one */ #define FIX_1101_CLEANING_JBM_CALL /* VA: issue 1101: remove obsolete call of ivas_jbm_dec_tc_buffer_open() */ #define NONBE_FIX_1337_MISSING_DIRECTIVITY_DISTATT_EXTREND /* Eri: issue 1337: Missing directivity setting and distance attenuation in external renderer IVAS_rend */ +#define NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH /* VA: issue 1220: fix bug in renderer flush in OMASA 1ISM JBM bitrate switching */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 49cedb561..6fe8fd9b0 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2688,7 +2688,7 @@ ivas_error ivas_jbm_dec_render_fx( } /*--------------------------------------------------------------------------* - * ivas_jbm_dec_dec_flush_renderer() + * ivas_jbm_dec_flush_renderer() * * Flush samples if renderer granularity changes on a bitrate change *--------------------------------------------------------------------------*/ @@ -2887,7 +2887,11 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( { IF( EQ_16( ism_mode_old, ISM_MASA_MODE_DISC ) ) { +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + Word32 *tc_local_fx[MAX_NUM_OBJECTS]; +#else Word32 *tc_local_fx[MAX_TRANSPORT_CHANNELS]; +#endif move16(); FOR( ch_idx = 0; ch_idx < st_ivas->nchan_ism; ch_idx++ ) @@ -2896,6 +2900,12 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( Copy32( st_ivas->hMasaIsmData->delayBuffer_fx[ch_idx], tc_local_fx[ch_idx], st_ivas->hMasaIsmData->delayBuffer_size ); /*Q11*/ } +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity ) ), IVAS_ERR_OK ) ) + { + return error; + } +#else IF( st_ivas->nchan_ism > 0 ) { IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity ) ), IVAS_ERR_OK ) ) @@ -2914,6 +2924,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( move16(); move16(); } +#endif } } ELSE IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c index f4cfa0dc1..dca263e9e 100644 --- a/lib_dec/ivas_objectRenderer_internal_fx.c +++ b/lib_dec/ivas_objectRenderer_internal_fx.c @@ -97,7 +97,13 @@ ivas_error ivas_td_binaural_renderer_sf_fx( Word16 enableCombinedOrientation; /* Set the number of ISMs */ +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + test(); + test(); + IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) || ( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && GT_16( st_ivas->nchan_ism, 0 ) ) ) +#else IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) +#endif { nchan_ism_internal = st_ivas->nchan_ism; move16(); diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index a85a2a259..198218899 100644 --- a/lib_dec/ivas_omasa_dec_fx.c +++ b/lib_dec/ivas_omasa_dec_fx.c @@ -1233,17 +1233,24 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( ) { Word16 n; - move16(); ivas_error error; +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + Word32 *p_sepobj_fx[BINAURAL_CHANNELS]; // Q11 + Word32 data_separated_objects_fx[BINAURAL_CHANNELS][L_FRAME48k]; +#else Word32 *p_sepobj_fx[MAX_NUM_OBJECTS]; // Q11 Word32 data_separated_objects_fx[MAX_NUM_OBJECTS][L_FRAME48k]; - move16(); +#endif Word16 slot_idx_start; slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered; move16(); +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + FOR( n = 0; n < BINAURAL_CHANNELS; n++ ) +#else FOR( n = 0; n < MAX_NUM_OBJECTS; n++ ) +#endif { p_sepobj_fx[n] = &data_separated_objects_fx[n][0]; } @@ -1281,6 +1288,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( { return error; } + st_ivas->nchan_transport = nchan_transport_orig; move16(); cldfb_slots = *nSamplesRendered / num_cldfb_bands; @@ -1321,6 +1329,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( return IVAS_ERR_OK; } + /*--------------------------------------------------------------------------* * ivas_omasa_rearrange_channels() * -- GitLab