Loading apps/decoder.c +4 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 ############################ */ Loading lib_dec/ivas_dirac_dec_fx.c +7 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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 Loading lib_rend/ivas_dirac_dec_binaural_functions_fx.c +11 −0 Original line number Diff line number Diff line Loading @@ -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 ) ) { Loading @@ -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 */ Loading Loading
apps/decoder.c +4 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 ############################ */ Loading
lib_dec/ivas_dirac_dec_fx.c +7 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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 Loading
lib_rend/ivas_dirac_dec_binaural_functions_fx.c +11 −0 Original line number Diff line number Diff line Loading @@ -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 ) ) { Loading @@ -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 */ Loading