From 0890acd91a6a9079e5acb1089c73b1eaaa5d2a20 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 22 Oct 2025 15:33:38 +0300 Subject: [PATCH 1/6] Change to fixed-point multiplication to fix USAN issue. --- apps/decoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/decoder.c b/apps/decoder.c index a8803b586..719838498 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -3487,7 +3487,7 @@ static void do_object_editing_fx( if ( readInfo->obj_gain_relative[obj_idx] ) { /* gain: apply relative edit + saturation */ - editableParameters->ism_metadata[obj_idx].gain_fx = L_max( L_min( editableParameters->ism_metadata[obj_idx].gain_fx * (Word32) readInfo->obj_gain[obj_idx] * 536870912, OBJ_EDIT_GAIN_MAX_FX ), OBJ_EDIT_GAIN_MIN_FX ); /* Q29 */ + editableParameters->ism_metadata[obj_idx].gain_fx = L_max( L_min( L_shl_sat( Mpy_32_32( editableParameters->ism_metadata[obj_idx].gain_fx, (Word32) readInfo->obj_gain[obj_idx] * 536870912 ), 2 ), OBJ_EDIT_GAIN_MAX_FX ), OBJ_EDIT_GAIN_MIN_FX ); /* Q29 */ } else { -- GitLab From 7a88886ddbbe4f19e8f7f75806b01a161888c81b Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 22 Oct 2025 15:35:40 +0300 Subject: [PATCH 2/6] [revert this] enable use of object editing test pipeline. --- .gitlab-ci/variables.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci/variables.yml b/.gitlab-ci/variables.yml index 817be6f79..6994033e1 100644 --- a/.gitlab-ci/variables.yml +++ b/.gitlab-ci/variables.yml @@ -1,4 +1,5 @@ variables: + BASOP_CI_BRANCH_PC_REPO: "ci/port_288_enable_object_editing_tests" TESTV_DIR: "/usr/local/testv" LTV_DIR: "/usr/local/ltv" EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop" -- GitLab From 852b8c72ee6690d12d87eb4b4b239fce88408361 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 22 Oct 2025 15:37:00 +0300 Subject: [PATCH 3/6] Change q_cldfb variable to fix uninit MSAN. --- lib_dec/ivas_dirac_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index a41b2310f..d33a3cfa4 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2810,7 +2810,7 @@ void ivas_dirac_dec_render_sf_fx( IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) { #ifdef FIX_1319_STACK_SBA_DECODER - ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( st_ivas, Cldfb_RealBuffer_Binaural_fx[0], Cldfb_ImagBuffer_Binaural_fx[0], &cldfb_buf_q, hSpatParamRendCom->num_freq_bands, subframe_idx ); + ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( st_ivas, Cldfb_RealBuffer_Binaural_fx[0], Cldfb_ImagBuffer_Binaural_fx[0], &q_cldfb, hSpatParamRendCom->num_freq_bands, subframe_idx ); #else ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( st_ivas, Cldfb_RealBuffer_Temp_fx, Cldfb_ImagBuffer_Temp_fx, &cldfb_buf_q, hSpatParamRendCom->num_freq_bands, subframe_idx ); #endif -- GitLab From 78e477946255c9f7a8329164b4d1b4ba9dea65e2 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 22 Oct 2025 15:42:19 +0300 Subject: [PATCH 4/6] Remove unused variable --- lib_dec/ivas_dirac_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index d33a3cfa4..57f58f798 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2297,7 +2297,7 @@ void ivas_dirac_dec_render_sf_fx( Word32 Cldfb_RealBuffer_Temp_fx[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_Temp_fx[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; #endif - Word16 cldfb_buf_q; + /*Word16 cldfb_buf_q;*/ Word16 offset = 0, buff_len = 0; move16(); move16(); -- GitLab From 26d17c8718e45a567e5128e50bd7911a7b9ee1e4 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Thu, 23 Oct 2025 12:36:14 +0300 Subject: [PATCH 5/6] Add fix for uninitialized variable when energy is zero in object editing. Also add define switch. --- apps/decoder.c | 4 ++++ lib_com/options.h | 1 + lib_dec/ivas_dirac_dec_fx.c | 8 +++++++- lib_rend/ivas_dirac_dec_binaural_functions_fx.c | 11 +++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/decoder.c b/apps/decoder.c index 719838498..0060aa2f2 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -3487,7 +3487,11 @@ static void do_object_editing_fx( if ( readInfo->obj_gain_relative[obj_idx] ) { /* gain: apply relative edit + saturation */ +#ifdef FIX_2140_OBJECT_EDITING_SANITIZER_ISSUES editableParameters->ism_metadata[obj_idx].gain_fx = L_max( L_min( L_shl_sat( Mpy_32_32( editableParameters->ism_metadata[obj_idx].gain_fx, (Word32) readInfo->obj_gain[obj_idx] * 536870912 ), 2 ), OBJ_EDIT_GAIN_MAX_FX ), OBJ_EDIT_GAIN_MIN_FX ); /* Q29 */ +#else + editableParameters->ism_metadata[obj_idx].gain_fx = L_max( L_min( editableParameters->ism_metadata[obj_idx].gain_fx * (Word32) readInfo->obj_gain[obj_idx] * 536870912, OBJ_EDIT_GAIN_MAX_FX ), OBJ_EDIT_GAIN_MIN_FX ); /* Q29 */ +#endif } else { diff --git a/lib_com/options.h b/lib_com/options.h index baca2536d..027c1a617 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -123,6 +123,7 @@ #define NONBE_1217_OBJ_EDIT_FOA /* VA/Nokia: isse 1217: fix crash in object editing to FOA output in ParamISM */ #define NONBE_FIX_1255_OBJ_EDIT_JBM /* VA: issue 1255: restore object editing in JBM */ #define FIX_1372_OSBA_OBJECT_EDITING /* VA: issue 1372: Fix OSBA object-editing in BINAURAL_ROOM_IR */ +#define FIX_2140_OBJECT_EDITING_SANITIZER_ISSUES /* Nokia: Issue 2140, fixes three different sanitizer issues persisting in object editing code. */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index fbbacc4c2..6e30bc084 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2318,7 +2318,9 @@ void ivas_dirac_dec_render_sf_fx( Word32 Cldfb_RealBuffer_Temp_fx[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_Temp_fx[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; #endif - /*Word16 cldfb_buf_q;*/ +#ifndef FIX_2140_OBJECT_EDITING_SANITIZER_ISSUES + Word16 cldfb_buf_q; +#endif Word16 offset = 0, buff_len = 0; move16(); move16(); @@ -2831,7 +2833,11 @@ void ivas_dirac_dec_render_sf_fx( IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) { #ifdef FIX_1319_STACK_SBA_DECODER +#ifdef FIX_2140_OBJECT_EDITING_SANITIZER_ISSUES ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( st_ivas, Cldfb_RealBuffer_Binaural_fx[0], Cldfb_ImagBuffer_Binaural_fx[0], &q_cldfb, hSpatParamRendCom->num_freq_bands, subframe_idx ); +#else + ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( st_ivas, Cldfb_RealBuffer_Binaural_fx[0], Cldfb_ImagBuffer_Binaural_fx[0], &cldfb_buf_q, hSpatParamRendCom->num_freq_bands, subframe_idx ); +#endif #else ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( st_ivas, Cldfb_RealBuffer_Temp_fx, Cldfb_ImagBuffer_Temp_fx, &cldfb_buf_q, hSpatParamRendCom->num_freq_bands, subframe_idx ); #endif diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index a38f024d0..0539b7b85 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -5855,6 +5855,16 @@ void ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( move16(); move16(); +#ifdef FIX_2140_OBJECT_EDITING_SANITIZER_ISSUES + totalTargetEneCh[0] = subframeEneCh[0]; // subQch[0] + move32(); + totalTargetEneCh[1] = subframeEneCh[1]; // subQch[1] + move32(); + masaEneThisCh[0] = subframeEneCh[0]; // subQch[0] + move32(); + masaEneThisCh[1] = subframeEneCh[1]; // subQch[1] + move32(); +#else /* Zero check */ IF( GT_32( subframeEne, 0 ) ) { @@ -5867,6 +5877,7 @@ void ivas_omasa_preProcessStereoTransportsForEditedObjects_fx( masaEneThisCh[1] = subframeEneCh[1]; // subQch[1] move32(); } +#endif /* Gain editing */ /* For each object, estimate new target energy per channel based on the applied gain */ -- GitLab From 61ada6a630df7ae57b9e6524a3f371714779b573 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Thu, 23 Oct 2025 13:00:00 +0300 Subject: [PATCH 6/6] Remove CI change and improve comment. --- .gitlab-ci/variables.yml | 1 - apps/decoder.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci/variables.yml b/.gitlab-ci/variables.yml index 6994033e1..817be6f79 100644 --- a/.gitlab-ci/variables.yml +++ b/.gitlab-ci/variables.yml @@ -1,5 +1,4 @@ variables: - BASOP_CI_BRANCH_PC_REPO: "ci/port_288_enable_object_editing_tests" TESTV_DIR: "/usr/local/testv" LTV_DIR: "/usr/local/ltv" EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop" diff --git a/apps/decoder.c b/apps/decoder.c index 0060aa2f2..3b3b05737 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -3488,7 +3488,7 @@ static void do_object_editing_fx( { /* gain: apply relative edit + saturation */ #ifdef FIX_2140_OBJECT_EDITING_SANITIZER_ISSUES - editableParameters->ism_metadata[obj_idx].gain_fx = L_max( L_min( L_shl_sat( Mpy_32_32( editableParameters->ism_metadata[obj_idx].gain_fx, (Word32) readInfo->obj_gain[obj_idx] * 536870912 ), 2 ), OBJ_EDIT_GAIN_MAX_FX ), OBJ_EDIT_GAIN_MIN_FX ); /* Q29 */ + editableParameters->ism_metadata[obj_idx].gain_fx = L_max( L_min( L_shl_sat( Mpy_32_32( editableParameters->ism_metadata[obj_idx].gain_fx, (Word32) readInfo->obj_gain[obj_idx] * 536870912 ), 2 ), OBJ_EDIT_GAIN_MAX_FX ), OBJ_EDIT_GAIN_MIN_FX ); /* Q29*Q29 -> Q27 shift back to Q29 */ #else editableParameters->ism_metadata[obj_idx].gain_fx = L_max( L_min( editableParameters->ism_metadata[obj_idx].gain_fx * (Word32) readInfo->obj_gain[obj_idx] * 536870912, OBJ_EDIT_GAIN_MAX_FX ), OBJ_EDIT_GAIN_MIN_FX ); /* Q29 */ #endif -- GitLab