From 763c659f585820ad833db41abadcf467dd9f60fd Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 11 Nov 2024 13:48:58 +0100 Subject: [PATCH 1/4] issue 1220: fix bug in renderer flush in OMASA 1ISM JBM bitrate switching; under NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH --- lib_com/options.h | 2 +- lib_dec/ivas_objectRenderer_internal.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index b82706a7eb..61d26eef58 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -198,7 +198,7 @@ #define FIX_1206_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE /* FhG: zero out all relevant imdct buffers in MCT decoding of channels with mct_chan_mode == MCT_CHAN_MODE_IGNORE */ #define NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH /* VA: issue 1199: fix bug in renderer flush in OMASA JBM bitrate switching */ #define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */ - +#define NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH /* VA: issue 1220: fix bug in renderer flush in OMASA 1ISM JBM bitrate switching */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_objectRenderer_internal.c b/lib_dec/ivas_objectRenderer_internal.c index 0e6c1025df..e5b78bb389 100644 --- a/lib_dec/ivas_objectRenderer_internal.c +++ b/lib_dec/ivas_objectRenderer_internal.c @@ -101,11 +101,15 @@ ivas_error ivas_td_binaural_renderer_sf( int16_t nchan_ism_internal, nchan_ism, ch_offset; /* Set the number of ISMs */ +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + if ( st_ivas->ivas_format == MASA_ISM_FORMAT || ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_ism > 0 ) ) +#else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) +#endif { nchan_ism_internal = st_ivas->nchan_ism; nchan_ism = st_ivas->nchan_ism; - ch_offset = 2; + ch_offset = CPE_CHANNELS; } else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) { -- GitLab From 7e5ecc04b134c1dc65d22fd5bcedf3474dd0f506 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 11 Nov 2024 16:10:48 +0100 Subject: [PATCH 2/4] add ISM channels samples to MASA ones + reduce memory in ivas_omasa_dirac_td_binaural_jbm() --- lib_dec/ivas_jbm_dec.c | 24 ++++++++++++++++++++++++ lib_dec/ivas_omasa_dec.c | 13 +++++++++++++ 2 files changed, 37 insertions(+) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index f096ff4116..f2dd67481f 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1679,7 +1679,14 @@ ivas_error ivas_jbm_dec_flush_renderer( { if ( ism_mode_old == ISM_MASA_MODE_DISC ) { +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + float *tc_local[MAX_NUM_OBJECTS]; + float data_separated_objects[BINAURAL_CHANNELS][L_FRAME48k]; + float *p_sepobj[BINAURAL_CHANNELS]; + int16_t n; +#else float *tc_local[MAX_TRANSPORT_CHANNELS]; +#endif for ( ch_idx = 0; ch_idx < st_ivas->nchan_ism; ch_idx++ ) { @@ -1687,6 +1694,22 @@ ivas_error ivas_jbm_dec_flush_renderer( mvr2r( st_ivas->hMasaIsmData->delayBuffer[ch_idx], tc_local[ch_idx], st_ivas->hMasaIsmData->delayBuffer_size ); } +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + p_sepobj[n] = &data_separated_objects[n][0]; + } + + if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, p_sepobj, hTcBuffer->n_samples_granularity ) ) != IVAS_ERR_OK ) + { + return error; + } + + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + v_add( p_output[n], p_sepobj[n], p_output[n], *nSamplesRendered ); + } +#else if ( st_ivas->nchan_ism > 0 ) { if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, p_output, hTcBuffer->n_samples_granularity ) ) != IVAS_ERR_OK ) @@ -1703,6 +1726,7 @@ ivas_error ivas_jbm_dec_flush_renderer( st_ivas->hTcBuffer->slots_rendered += 1; st_ivas->hTcBuffer->subframes_rendered += 1; } +#endif } } else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) diff --git a/lib_dec/ivas_omasa_dec.c b/lib_dec/ivas_omasa_dec.c index 439a6baba1..b2c1b4685e 100644 --- a/lib_dec/ivas_omasa_dec.c +++ b/lib_dec/ivas_omasa_dec.c @@ -850,14 +850,26 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm( ) { int16_t n; +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + float data_separated_objects[BINAURAL_CHANNELS][L_FRAME48k]; +#else float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; +#endif ivas_error error; +#ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH + float *p_sepobj[BINAURAL_CHANNELS]; +#else float *p_sepobj[MAX_NUM_OBJECTS]; +#endif int16_t slot_idx_start; slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered; +#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[n] = &data_separated_objects[n][0]; } @@ -908,6 +920,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm( { return error; } + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) { v_add( output_f[n], p_sepobj[n], output_f[n], *nSamplesRendered ); -- GitLab From ccb72e9eb07ecf5f5b849c2ca07326be51f9186f Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 11 Nov 2024 16:23:06 +0100 Subject: [PATCH 3/4] revert addition of flush ISM samples to the MASA ones --- lib_dec/ivas_jbm_dec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index f2dd67481f..fd44b6ba9e 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1705,10 +1705,12 @@ ivas_error ivas_jbm_dec_flush_renderer( return error; } +#if 0 for ( n = 0; n < BINAURAL_CHANNELS; n++ ) { v_add( p_output[n], p_sepobj[n], p_output[n], *nSamplesRendered ); } +#endif #else if ( st_ivas->nchan_ism > 0 ) { -- GitLab From 825552a19e87b5c4259a3ede3ce823e9e707cac9 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 11 Nov 2024 17:10:43 +0100 Subject: [PATCH 4/4] revert addition of flush ISM samples to the MASA ones --- lib_dec/ivas_jbm_dec.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index fd44b6ba9e..d1b602a9d0 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -1681,9 +1681,6 @@ ivas_error ivas_jbm_dec_flush_renderer( { #ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH float *tc_local[MAX_NUM_OBJECTS]; - float data_separated_objects[BINAURAL_CHANNELS][L_FRAME48k]; - float *p_sepobj[BINAURAL_CHANNELS]; - int16_t n; #else float *tc_local[MAX_TRANSPORT_CHANNELS]; #endif @@ -1695,22 +1692,10 @@ ivas_error ivas_jbm_dec_flush_renderer( } #ifdef NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH - for ( n = 0; n < BINAURAL_CHANNELS; n++ ) - { - p_sepobj[n] = &data_separated_objects[n][0]; - } - - if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, p_sepobj, hTcBuffer->n_samples_granularity ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, p_output, hTcBuffer->n_samples_granularity ) ) != IVAS_ERR_OK ) { return error; } - -#if 0 - for ( n = 0; n < BINAURAL_CHANNELS; n++ ) - { - v_add( p_output[n], p_sepobj[n], p_output[n], *nSamplesRendered ); - } -#endif #else if ( st_ivas->nchan_ism > 0 ) { -- GitLab