From 5ff4dd386d43635cabb6e1bbc05cada6589cde3b Mon Sep 17 00:00:00 2001 From: Stefan Bayer Date: Wed, 15 Nov 2023 15:31:43 +0100 Subject: [PATCH 1/3] fix #904. make sure subframe information is handled correctly in (O)SBA rate switching in JBM --- lib_com/options.h | 2 +- lib_dec/ivas_jbm_dec.c | 3 +++ lib_dec/ivas_sba_dec.c | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 524aef7aa8..05cd9e3426 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -167,7 +167,7 @@ #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 */ #define NONBE_FIX_811_DFT_DOUBLE_TO_FLOAT /* FhG: issue 811: change double precision functions to float in DFT Stereo */ - +#define NONBE_FIX_904_JBM_SBA_RS_FOA /* FhG: issue #904: fix JBM SBA RS to FOA decoding */ /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 4234698629..12a74e363f 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -876,6 +876,9 @@ void ivas_jbm_dec_feed_tc_to_renderer( } else { +#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA + ivas_jbm_dec_td_renderers_adapt_subframes( st_ivas ); +#endif ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); } } diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 88c545ad6a..975ecdc928 100755 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -253,6 +253,14 @@ ivas_error ivas_sba_dec_reconfigure( { return error; } +#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA + /* make sure the changed number of slots in the last subframe is not lost in the following steps */ + if ( st_ivas->hSpatParamRendCom != NULL ) + { + st_ivas->hSpatParamRendCom->subframe_nbslots[st_ivas->hSpatParamRendCom->nb_subframes - 1] = st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->nb_subframes - 1]; + } + st_ivas->hSpar->subframe_nbslots[st_ivas->hSpar->nb_subframes - 1] = st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->nb_subframes - 1]; +#endif } } @@ -651,6 +659,18 @@ ivas_error ivas_sba_dec_reconfigure( } /* resync SPAR and DirAC JBM info from TC Buffer */ +#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA + if ( st_ivas->hSpatParamRendCom != NULL && st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity ) + { + mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hSpatParamRendCom->nb_subframes = st_ivas->hTcBuffer->nb_subframes; + st_ivas->hSpatParamRendCom->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; + } + mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpar->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hSpar->nb_subframes = st_ivas->hTcBuffer->nb_subframes; + st_ivas->hSpar->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; + +#else if ( st_ivas->hSpatParamRendCom != NULL ) { if ( st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity ) @@ -664,6 +684,7 @@ ivas_error ivas_sba_dec_reconfigure( st_ivas->hSpar->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; } } +#endif if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { @@ -672,6 +693,9 @@ ivas_error ivas_sba_dec_reconfigure( for ( n = 0; n < MAX_JBM_SUBFRAMES_5MS; n++ ) { st_ivas->hSpatParamRendCom->subframe_nbslots[n] = st_ivas->hTcBuffer->subframe_nbslots[n] * granularityMultiplier; +#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA + st_ivas->hSpar->subframe_nbslots[n] = st_ivas->hTcBuffer->subframe_nbslots[n] * granularityMultiplier; +#endif } } -- GitLab From 4370a5357d71a0036f55701ef4f080e7925d3005 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 21 Nov 2023 11:50:14 +0100 Subject: [PATCH 2/3] formatting --- lib_dec/ivas_jbm_dec.c | 1 + lib_dec/ivas_sba_dec.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index e95e9c5812..f5b1acf6d5 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -878,6 +878,7 @@ void ivas_jbm_dec_feed_tc_to_renderer( { #ifdef NONBE_FIX_904_JBM_SBA_RS_FOA ivas_jbm_dec_td_renderers_adapt_subframes( st_ivas ); + #endif ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); } diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 975ecdc928..493506245f 100755 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -254,6 +254,7 @@ ivas_error ivas_sba_dec_reconfigure( return error; } #ifdef NONBE_FIX_904_JBM_SBA_RS_FOA + /* make sure the changed number of slots in the last subframe is not lost in the following steps */ if ( st_ivas->hSpatParamRendCom != NULL ) { @@ -669,7 +670,6 @@ ivas_error ivas_sba_dec_reconfigure( mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpar->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); st_ivas->hSpar->nb_subframes = st_ivas->hTcBuffer->nb_subframes; st_ivas->hSpar->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; - #else if ( st_ivas->hSpatParamRendCom != NULL ) { -- GitLab From bf77d310c1e19601fa3e5e636beac1991e52a9f8 Mon Sep 17 00:00:00 2001 From: Stefan Bayer Date: Thu, 23 Nov 2023 07:48:22 +0100 Subject: [PATCH 3/3] small change in the update of the SPAR subframe info at a rate switch --- lib_dec/ivas_sba_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 975ecdc928..2feda1113c 100755 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -694,7 +694,7 @@ ivas_error ivas_sba_dec_reconfigure( { st_ivas->hSpatParamRendCom->subframe_nbslots[n] = st_ivas->hTcBuffer->subframe_nbslots[n] * granularityMultiplier; #ifdef NONBE_FIX_904_JBM_SBA_RS_FOA - st_ivas->hSpar->subframe_nbslots[n] = st_ivas->hTcBuffer->subframe_nbslots[n] * granularityMultiplier; + st_ivas->hSpar->subframe_nbslots[n] = st_ivas->hSpatParamRendCom->subframe_nbslots[n]; #endif } } -- GitLab