From 0170d7bae57c89a81a3cf59056bd9d29d755f105 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 17:44:32 +0200 Subject: [PATCH] port NONBE_FIX_1056_ISM_RATE_SWITCH --- lib_com/options.h | 1 + lib_dec/ivas_ism_dec_fx.c | 9 ++++++++- lib_dec/ivas_jbm_dec_fx.c | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 94d22ec45..a2f69c17c 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_1056_ISM_RATE_SWITCH /* FhG: Fix #1056: fix TC buffer udpate on a ISM rate switch */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index a4294558e..b64e321ed 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -142,9 +142,16 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( { test(); test(); +#ifndef NONBE_FIX_1056_ISM_RATE_SWITCH test(); - /* transfer subframe info from DirAC or ParamMC to central tc buffer */ +#endif +/* transfer subframe info from DirAC or ParamMC to central tc buffer */ +#ifdef NONBE_FIX_1056_ISM_RATE_SWITCH + /* only do this if we are not having done everything already in the TC decoding part and having only played out from the TC buffer */ + IF( EQ_32( last_ism_mode, ISM_MODE_PARAM ) && st_ivas->hSpatParamRendCom != NULL && NE_32( st_ivas->hTcBuffer->tc_buffer_mode, TC_BUFFER_MODE_BUFFER ) ) +#else IF( EQ_32( last_ism_mode, ISM_MODE_PARAM ) && st_ivas->hSpatParamRendCom != NULL && ( NE_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) && NE_32( st_ivas->renderer_type, RENDERER_DISABLE ) ) ) +#endif { st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; move16(); diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 5afbc3acb..2a2911e67 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -3843,6 +3843,9 @@ static void ivas_jbm_dec_tc_buffer_playout_fx( slots_to_render = sub( slots_to_render, st_ivas->hTcBuffer->subframe_nbslots[last_sf] ); last_sf = add( last_sf, 1 ); } +#ifdef DEBUGGING + assert( slots_to_render == 0 ); +#endif FOR( ch_idx = 0; ch_idx < st_ivas->hTcBuffer->nchan_transport_jbm; ch_idx++ ) { -- GitLab