From 9dc5c8e2ad568d1deea3fd5e5f6a3b2ac4b6c40e Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 21 May 2024 11:53:02 +0200 Subject: [PATCH 1/4] issue 1101: remove obsolete call of ivas_jbm_dec_tc_buffer_open(); under FIX_1101_CLEANING_JBM_CALL --- lib_com/ivas_cnst.h | 2 ++ lib_com/options.h | 1 + lib_dec/ivas_init_dec.c | 2 ++ lib_dec/ivas_jbm_dec.c | 2 ++ 4 files changed, 7 insertions(+) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 9d842f9b37..e543e612e3 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -179,7 +179,9 @@ typedef enum typedef enum { +#ifndef FIX_1101_CLEANING_JBM_CALL TC_BUFFER_MODE_NONE = 0, +#endif TC_BUFFER_MODE_RENDERER, TC_BUFFER_MODE_BUFFER } TC_BUFFER_MODE; diff --git a/lib_com/options.h b/lib_com/options.h index 6c4363df17..e35c26ec46 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -175,6 +175,7 @@ #define FIX_989_TD_REND_ROM /* Eri: Clean-up for TD renderer and completion of ROM generation tool */ #define FIX_1068_ASAN_IN_MC_2_BINAURAL_ROOM_IR /* issue 1068 : Memory leak in MC to BINAURAL_ROOM decoding with bitrate switching*/ +#define FIX_1101_CLEANING_JBM_CALL /* VA: issue 1101: remove obsolete call of ivas_jbm_dec_tc_buffer_open() */ /* #################### End BE switches ################################## */ diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 9b29070053..aca8e430e1 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -2413,6 +2413,7 @@ ivas_error ivas_init_decoder( } } +#ifndef FIX_1101_CLEANING_JBM_CALL if ( st_ivas->hTcBuffer == NULL ) { /* we need the handle anyway, but without the buffer*/ @@ -2422,6 +2423,7 @@ ivas_error ivas_init_decoder( } } +#endif if ( st_ivas->hJbmMetadata == NULL && st_ivas->hDecoderConfig->Opt_tsm ) { if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_EXTERNAL ) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 883f170d60..5bd3799efe 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -2378,6 +2378,7 @@ ivas_error ivas_jbm_dec_tc_buffer_open( set_s( hTcBuffer->subframe_nbslots, 0, MAX_JBM_SUBFRAMES_5MS ); set_s( hTcBuffer->subframe_nbslots, nMaxSlotsPerSubframe, MAX_PARAM_SPATIAL_SUBFRAMES ); +#ifndef FIX_1101_CLEANING_JBM_CALL if ( hTcBuffer->tc_buffer_mode == TC_BUFFER_MODE_NONE ) { hTcBuffer->tc_buffer = NULL; @@ -2388,6 +2389,7 @@ ivas_error ivas_jbm_dec_tc_buffer_open( } } else +#endif { int16_t n_samp_full, n_samp_residual; int32_t offset; -- GitLab From 37e2b51865162c9b73dcfe26327c7c9ad72cd56c Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 22 May 2024 12:27:18 +0200 Subject: [PATCH 2/4] remove more JBM obsolete code; under FIX_1101_CLEANING_JBM_CALL --- lib_dec/ivas_jbm_dec.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 5bd3799efe..1ef61714e0 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -103,6 +103,7 @@ ivas_error ivas_jbm_dec_tc( } } +#ifndef FIX_1101_CLEANING_JBM_CALL if ( !st_ivas->hDecoderConfig->Opt_tsm ) { for ( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ ) @@ -110,7 +111,7 @@ ivas_error ivas_jbm_dec_tc( st_ivas->hTcBuffer->tc[n] = st_ivas->p_output_f[n]; } } - +#endif /*----------------------------------------------------------------* * Decoding + pre-rendering *----------------------------------------------------------------*/ @@ -2828,7 +2829,9 @@ void ivas_jbm_dec_copy_tc_no_tsm( const int16_t output_frame /* i : output frame size */ ) { +#ifndef FIX_1101_CLEANING_JBM_CALL int16_t n_ch_full_copy; +#endif int16_t n_ch_cldfb; int16_t ch_idx; DECODER_TC_BUFFER_HANDLE hTcBuffer; @@ -2836,9 +2839,12 @@ void ivas_jbm_dec_copy_tc_no_tsm( hTcBuffer = st_ivas->hTcBuffer; hTcBuffer->n_samples_buffered = output_frame; hTcBuffer->n_samples_available = hTcBuffer->n_samples_buffered; +#ifndef FIX_1101_CLEANING_JBM_CALL n_ch_full_copy = min( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); +#endif n_ch_cldfb = hTcBuffer->nchan_transport_jbm - hTcBuffer->nchan_buffer_full; +#ifndef FIX_1101_CLEANING_JBM_CALL /* copy full tcs*/ if ( st_ivas->hDecoderConfig->Opt_tsm ) { @@ -2847,6 +2853,7 @@ void ivas_jbm_dec_copy_tc_no_tsm( mvr2r( tc[ch_idx], st_ivas->hTcBuffer->tc[ch_idx], hTcBuffer->n_samples_buffered ); } } +#endif ch_idx = 0; /* CLDFB ana for ParamMC/ParamISM */ -- GitLab From 29208e80589683130515b977d7e614bbb58a122b Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 22 May 2024 13:29:19 +0200 Subject: [PATCH 3/4] fix --- lib_dec/ivas_jbm_dec.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 1ef61714e0..48b67f1d5b 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -805,7 +805,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( p_data_f[n] = &data_f[n][0]; } +#ifdef FIX_1101_CLEANING_JBM_CALL + if ( !st_ivas->hDecoderConfig->Opt_tsm ) + { + for ( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ ) + { + st_ivas->hTcBuffer->tc[n] = st_ivas->p_output_f[n]; /* note: buffers needed in the TD decorellator */ + } + } +#endif if ( st_ivas->hDecoderConfig->Opt_tsm ) { ivas_jbm_dec_copy_tc( st_ivas, nSamplesForRendering, nSamplesResidual, data, p_data_f ); -- GitLab From fea97d6fff32130ab90a4e674e8e490f42ff1f38 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Jun 2024 11:29:22 +0200 Subject: [PATCH 4/4] add sanity assert --- lib_dec/ivas_jbm_dec.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index d9c0a543c6..60fbb9bcdc 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -2751,7 +2751,11 @@ void ivas_jbm_dec_copy_tc_no_tsm( #endif n_ch_cldfb = hTcBuffer->nchan_transport_jbm - hTcBuffer->nchan_buffer_full; -#ifndef FIX_1101_CLEANING_JBM_CALL +#ifdef FIX_1101_CLEANING_JBM_CALL +#ifdef DEBUGGING + assert( st_ivas->hDecoderConfig->Opt_tsm == 0 ); +#endif +#else /* copy full tcs*/ if ( st_ivas->hDecoderConfig->Opt_tsm ) { @@ -2760,9 +2764,9 @@ void ivas_jbm_dec_copy_tc_no_tsm( mvr2r( tc[ch_idx], st_ivas->hTcBuffer->tc[ch_idx], hTcBuffer->n_samples_buffered ); } } -#endif ch_idx = 0; +#endif /* CLDFB ana for ParamMC/ParamISM */ if ( n_ch_cldfb > 0 ) { @@ -2793,9 +2797,13 @@ void ivas_jbm_dec_copy_tc_no_tsm( assert( 0 && "Residual (direct CLDFB transport channels) only possible for ParamMC/ParamISM!" ); } #endif - /* CLDFB Analysis*/ + /* CLDFB Analysis*/ +#ifdef FIX_1101_CLEANING_JBM_CALL + for ( ch_idx = 0, cldfb_ch = 0; cldfb_ch < n_ch_cldfb; cldfb_ch++, ch_idx++ ) +#else for ( cldfb_ch = 0; cldfb_ch < n_ch_cldfb; cldfb_ch++, ch_idx++ ) +#endif { for ( slot_idx = 0; slot_idx < DEFAULT_JBM_CLDFB_TIMESLOTS; slot_idx++ ) { -- GitLab