From 0825873d6c981cd46cfb3435d4785340932400cc Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 26 May 2025 16:47:06 +0200 Subject: [PATCH 01/10] port float MR 1433 --- lib_com/options.h | 1 + lib_dec/ivas_ism_renderer_fx.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 7b19fc92a..efff11d1b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -135,6 +135,7 @@ #define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ #define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ +#define NONBE_FIX_1021_ISM_BRIR_RS_FLUSH /* FhG: issue #1021: fix ISM with JBM and RS renderer flushing*/ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index c3904d136..25e40ea63 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -189,6 +189,9 @@ void ivas_ism_render_sf_fx( last_sf = add( last_sf, 1 ); } +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + num_objects = st_ivas->nchan_ism; +#else num_objects = st_ivas->nchan_transport; move16(); if ( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) @@ -196,6 +199,7 @@ void ivas_ism_render_sf_fx( num_objects = st_ivas->nchan_ism; move16(); } +#endif nchan_out_woLFE = st_ivas->hIntSetup.nchan_out_woLFE; move16(); -- GitLab From 68a13f7959af3a58f05a9a847845ad00aa656aea Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 26 May 2025 17:23:38 +0200 Subject: [PATCH 02/10] fix formatting --- lib_dec/ivas_ism_renderer_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 25e40ea63..877ef8ed7 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -190,7 +190,7 @@ void ivas_ism_render_sf_fx( } #ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH - num_objects = st_ivas->nchan_ism; + num_objects = st_ivas->nchan_ism; #else num_objects = st_ivas->nchan_transport; move16(); -- GitLab From 012b2473da508b008cb17b963567e860c24604c8 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 4 Jul 2025 11:46:03 +0200 Subject: [PATCH 03/10] port missing changes from float MR 1433 --- lib_com/ivas_prot_fx.h | 9 ++++++--- lib_dec/ivas_ism_renderer_fx.c | 13 ++++++++++--- lib_dec/ivas_osba_dec_fx.c | 4 ++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 501c91a35..a34c2297d 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1055,9 +1055,12 @@ ivas_error ivas_ism_renderer_open_fx( ); void ivas_ism_render_sf_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word32 *output_fx[], /* i/o: core-coder transport channels/object output */ - const Word16 n_samples_to_render /* i : output frame length per channel */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + const RENDERER_TYPE renderer_type, /* i : active renderer type */ +#endif + Word32 *output_fx[], /* i/o: core-coder transport channels/object output */ + const Word16 n_samples_to_render /* i : output frame length per channel */ ); void ivas_jbm_dec_get_adapted_linear_interpolator_fx( diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 0564868c8..6c80c39b7 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -156,9 +156,12 @@ void ivas_ism_renderer_close( * Object rendering process *-------------------------------------------------------------------------*/ void ivas_ism_render_sf_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word32 *output_fx[], /* i/o: core-coder transport channels/object output Q11*/ - const Word16 n_samples_to_render /* i : output frame length per channel */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + const RENDERER_TYPE renderer_type, /* i : active renderer type */ +#endif + Word32 *output_fx[], /* i/o: core-coder transport channels/object output Q11*/ + const Word16 n_samples_to_render /* i : output frame length per channel */ ) { Word16 i, j, k, j2; @@ -333,7 +336,11 @@ void ivas_ism_render_sf_fx( n_samples_rendered_loop = add( n_samples_rendered_loop, n_samples_in_subframe ); /* update rendered subframe and slots info for all cases apart from a following crend call, the update will then happen in the crend call*/ +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + if ( renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM ) +#else if ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) +#endif { st_ivas->hTcBuffer->subframes_rendered = add( st_ivas->hTcBuffer->subframes_rendered, 1 ); st_ivas->hTcBuffer->slots_rendered = add( st_ivas->hTcBuffer->slots_rendered, st_ivas->hTcBuffer->subframe_nbslots[subframe_idx] ); diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c index a8754d84f..3491b0491 100644 --- a/lib_dec/ivas_osba_dec_fx.c +++ b/lib_dec/ivas_osba_dec_fx.c @@ -308,7 +308,11 @@ ivas_error ivas_osba_render_sf_fx( IF( NE_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_ism, *nSamplesRendered ); +#else ivas_ism_render_sf_fx( st_ivas, p_output_ism, *nSamplesRendered ); +#endif } FOR( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) -- GitLab From 26b9d67f5af5e70643c512f4dedf23863583bcbe Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 4 Jul 2025 12:40:55 +0200 Subject: [PATCH 04/10] fix formatting --- lib_dec/ivas_ism_renderer_fx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 6c80c39b7..b5ad713ba 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -156,12 +156,12 @@ void ivas_ism_renderer_close( * Object rendering process *-------------------------------------------------------------------------*/ void ivas_ism_render_sf_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ #ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH - const RENDERER_TYPE renderer_type, /* i : active renderer type */ + const RENDERER_TYPE renderer_type, /* i : active renderer type */ #endif - Word32 *output_fx[], /* i/o: core-coder transport channels/object output Q11*/ - const Word16 n_samples_to_render /* i : output frame length per channel */ + Word32 *output_fx[], /* i/o: core-coder transport channels/object output Q11*/ + const Word16 n_samples_to_render /* i : output frame length per channel */ ) { Word16 i, j, k, j2; -- GitLab From 5cadf600bbfc87d8e4f5c8fee78a8f354b49be28 Mon Sep 17 00:00:00 2001 From: weckbecker Date: Fri, 4 Jul 2025 12:42:28 +0200 Subject: [PATCH 05/10] add missing move16 --- lib_dec/ivas_ism_renderer_fx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index b5ad713ba..550128d7c 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -199,6 +199,7 @@ void ivas_ism_render_sf_fx( #ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH num_objects = st_ivas->nchan_ism; + move16(); #else num_objects = st_ivas->nchan_transport; move16(); -- GitLab From ea5fa66de7c81f1cb02d6a75dcc4a8135353f84d Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 4 Jul 2025 12:53:15 +0200 Subject: [PATCH 06/10] port missing changes from float MR 1433 in lib_dec/ivas_jbm_dec_fx.c --- lib_dec/ivas_jbm_dec_fx.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index bc4a732e0..30431f3be 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1958,7 +1958,11 @@ ivas_error ivas_jbm_dec_render_fx( IF( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) { /* Convert to CICPxx; used also for ISM->CICP19->binaural_room rendering */ - ivas_ism_render_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ); +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_fx, *nSamplesRendered ); +#else + ivas_ism_render_sf_fx( st_ivas, p_output, *nSamplesRendered ); +#endif } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) { @@ -2139,8 +2143,12 @@ ivas_error ivas_jbm_dec_render_fx( p_tc_fx[2] = p_output_fx[3]; } - /* render objects */ + /* render objects */ +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_fx, *nSamplesRendered ); +#else ivas_ism_render_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ); +#endif /* add already rendered SBA part */ FOR( n = 0; n < nchan_out; n++ ) -- GitLab From c2f722e6fb748b060d84394c7ac17e08b74b2a61 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 4 Jul 2025 12:54:20 +0200 Subject: [PATCH 07/10] fix formatting --- lib_dec/ivas_jbm_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 30431f3be..7aea1055d 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2143,7 +2143,7 @@ ivas_error ivas_jbm_dec_render_fx( p_tc_fx[2] = p_output_fx[3]; } - /* render objects */ + /* render objects */ #ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_fx, *nSamplesRendered ); #else -- GitLab From 168dc5f86bbca9160d959ac970bfd704d2ecc0ad Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 4 Jul 2025 13:02:36 +0200 Subject: [PATCH 08/10] fix arguments in one call to ivas_ism_render_sf_fx --- lib_dec/ivas_jbm_dec_fx.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 7aea1055d..a4547a483 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1961,7 +1961,7 @@ ivas_error ivas_jbm_dec_render_fx( #ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_fx, *nSamplesRendered ); #else - ivas_ism_render_sf_fx( st_ivas, p_output, *nSamplesRendered ); + ivas_ism_render_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ); #endif } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) @@ -2686,7 +2686,11 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( /* Convert to CICPxx; used also for ISM->CICP19->binaural_room rendering */ set16_fx( st_ivas->hIsmRendererData->interpolator_fx, 32767, hTcBuffer->n_samples_granularity ); // 32767=1.0f in Q15 +#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH + ivas_ism_render_sf_fx( st_ivas, renderer_type_old, p_output_fx, hTcBuffer->n_samples_granularity ); +#else ivas_ism_render_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity ); +#endif st_ivas->hCrendWrapper->p_io_qfactor = &st_ivas->hCrendWrapper->io_qfactor; *st_ivas->hCrendWrapper->p_io_qfactor = 11; -- GitLab From 16873902114de389d33c0125545ab2ce647020fb Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 4 Jul 2025 13:23:59 +0200 Subject: [PATCH 09/10] fix comparison with BASOP --- lib_dec/ivas_ism_renderer_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 550128d7c..e5fe873a0 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -338,7 +338,7 @@ void ivas_ism_render_sf_fx( /* update rendered subframe and slots info for all cases apart from a following crend call, the update will then happen in the crend call*/ #ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH - if ( renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM ) + if ( NE_16( renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) #else if ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) #endif -- GitLab From 227d8a4ded61fc81e21a4f5364dee7431a807b06 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 4 Jul 2025 13:24:30 +0200 Subject: [PATCH 10/10] remove extra move16 --- lib_dec/ivas_ism_renderer_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index e5fe873a0..686329eea 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -199,7 +199,6 @@ void ivas_ism_render_sf_fx( #ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH num_objects = st_ivas->nchan_ism; - move16(); #else num_objects = st_ivas->nchan_transport; move16(); -- GitLab