Commit 26d17c87 authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Add fix for uninitialized variable when energy is zero in object editing. Also add define switch.

parent f627b9ea
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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
                {
+1 −0
Original line number Diff line number Diff line
@@ -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 ############################ */

+7 −1
Original line number Diff line number Diff line
@@ -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
+11 −0
Original line number Diff line number Diff line
@@ -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 */