From 3abe314f9a5b1c219998ffcc593eab12ae4c544b Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 12 Aug 2025 15:06:00 +0200 Subject: [PATCH] port MR; under FIX_1101_CLEANING_JBM_CALL --- lib_com/ivas_cnst.h | 2 ++ lib_com/options.h | 1 + lib_dec/ivas_init_dec.c | 3 ++- lib_dec/ivas_jbm_dec.c | 30 +++++++++++++++++++++++++++--- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 66ba43c93..d5f9e8a5b 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -183,7 +183,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 218c6a4ab..11278e21d 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -205,6 +205,7 @@ #define NONBE_FIX_981_PARAMBIN_DEFAULT_EARLY_PART /* Nokia: Set default early part energy correction to unity for BINAURAL_ROOM_REVERB */ #define NONBE_FIX_1174_MCMASA_LBR_LOOP_ERROR /* Nokia: Fix issue 1174 by removing the unnecessary inner loop causing problems. */ #define NONBE_FIX_1052_SBA_EXT_FIX /* VA: SBA external output support fix - do not overwrite "output_config" parameter */ +#define FIX_1101_CLEANING_JBM_CALL /* VA: issue 1101: remove obsolete call of ivas_jbm_dec_tc_buffer_open() */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 7011a09f9..b6a81d42d 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -2425,6 +2425,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*/ @@ -2434,7 +2435,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 1a916d7fd..9db51417f 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 *----------------------------------------------------------------*/ @@ -814,7 +815,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 ); @@ -2308,6 +2318,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; @@ -2318,6 +2329,7 @@ ivas_error ivas_jbm_dec_tc_buffer_open( } } else +#endif { int16_t n_samp_full, n_samp_residual; int32_t offset; @@ -2746,7 +2758,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; @@ -2754,9 +2768,16 @@ 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; +#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 ) { @@ -2766,7 +2787,7 @@ void ivas_jbm_dec_copy_tc_no_tsm( } } ch_idx = 0; - +#endif /* CLDFB ana for ParamMC/ParamISM */ if ( n_ch_cldfb > 0 ) { @@ -2798,8 +2819,11 @@ void ivas_jbm_dec_copy_tc_no_tsm( } #endif /* 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