From 6db2002b93c8308b373114fe24bd03aa9a6a67bb Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 16 Jul 2024 11:28:59 +0530 Subject: [PATCH 1/2] Fix for ASAN and MSAN errors added --- lib_com/cldfb.c | 4 ---- lib_dec/ivas_spar_decoder.c | 3 +++ lib_enc/ivas_core_pre_proc_front.c | 9 +++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c index e3d9912f2..52a94b1b1 100644 --- a/lib_com/cldfb.c +++ b/lib_com/cldfb.c @@ -1681,15 +1681,11 @@ ivas_error openCldfb_ivas_fx( IF( EQ_32( type, CLDFB_ANALYSIS ) ) { buf_len = sub( hs->p_filter_length, hs->no_channels ); - hs->FilterStates = (Word16 *) malloc( ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); - hs->FilterStates_eg = 0; } ELSE { buf_len = hs->p_filter_length; move16(); - hs->FilterStates = (Word16 *) malloc( 2 * ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); - hs->FilterStates_eg = 0; } IF( ( hs->cldfb_state_fx = (Word32 *) malloc( buf_len * sizeof( Word32 ) ) ) == NULL ) diff --git a/lib_dec/ivas_spar_decoder.c b/lib_dec/ivas_spar_decoder.c index 38df6b53f..416ac4f73 100644 --- a/lib_dec/ivas_spar_decoder.c +++ b/lib_dec/ivas_spar_decoder.c @@ -3122,6 +3122,9 @@ void ivas_spar_dec_upmixer_sf_fx( * Prepare CLDFB buffers *---------------------------------------------------------------------*/ +#ifdef MSAN_FIX + set_zero_fx( &Pcm_tmp_fx[0][0], ( MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS ) * L_FRAME48k ); +#endif // MSAN_FIX /* set-up pointers */ IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) ) { diff --git a/lib_enc/ivas_core_pre_proc_front.c b/lib_enc/ivas_core_pre_proc_front.c index 45cce0aed..acf656866 100644 --- a/lib_enc/ivas_core_pre_proc_front.c +++ b/lib_enc/ivas_core_pre_proc_front.c @@ -996,7 +996,9 @@ ivas_error pre_proc_front_ivas_fx( Word32 imagBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; Word16 sf_energySum[CLDFB_NO_CHANNELS_MAX]; +#ifndef MSAN_FIX floatToFixed_arr( old_inp_12k8, old_inp_12k8_fx, 0, 496 ); +#endif // MSAN_FIX #endif /*------------------------------------------------------------------* * Initialization @@ -1352,6 +1354,7 @@ ivas_error pre_proc_front_ivas_fx( { mvr2r( new_inp_12k8, st->buf_speech_enc_flt + L_FRAME32k, L_FRAME ); } +#ifndef MSAN_FIX /*To be enabled when updations related to new_inp_12k8_fx is enabled */ #if 1 IF( EQ_16( element_mode, IVAS_CPE_DFT ) ) { @@ -1369,6 +1372,7 @@ ivas_error pre_proc_front_ivas_fx( Scale_sig( st->buf_speech_enc + L_FRAME32k, L_FRAME, 1 ); } #endif +#endif // !MSAN_FIX /*------------------------------------------------------------------* * Perform fixed preemphasis (12.8 kHz signal) through 1 - g*z^-1 *-----------------------------------------------------------------*/ @@ -1722,6 +1726,11 @@ ivas_error pre_proc_front_ivas_fx( { st->cldfbAnaEnc->scale = (Word16) ( st->cldfbAnaEnc->scale_flt * ( 1 << 8 ) ); floatToFixed_arr( st->input, st->input_fx, 0, 480 ); +#ifdef MSAN_FIX + st->lt_mean_NB_fx = (Word16) st->lt_mean_NB * ( 1 << 11 ); + st->lt_mean_WB_fx = (Word16) st->lt_mean_WB * ( 1 << 11 ); + st->lt_mean_SWB_fx = (Word16) st->lt_mean_SWB * ( 1 << 11 ); +#endif bw_detect_fx( st, st->input_fx, NULL, enerBuffer_fx, sf_energySum, ivas_format, 0 ); -- GitLab From b0aca655465482abb5a292d04c07dbaa0b6569d0 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 16 Jul 2024 21:22:41 +0530 Subject: [PATCH 2/2] Fix-2 for ASAN and MSAN errors --- lib_com/cldfb.c | 6 ++++++ lib_dec/ivas_init_dec.c | 4 ++-- lib_enc/ivas_front_vad.c | 11 +++++++++++ lib_enc/speech_music_classif.c | 3 +++ lib_rend/ivas_mcmasa_ana.c | 2 +- lib_rend/ivas_omasa_ana.c | 2 +- 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c index 52a94b1b1..9083ac14f 100644 --- a/lib_com/cldfb.c +++ b/lib_com/cldfb.c @@ -1675,6 +1675,7 @@ ivas_error openCldfb_ivas_fx( // configureCldfb_ivas( hs, sampling_rate ); configureCldfb_ivas_fx( hs, sampling_rate ); hs->memory_flt = NULL; + hs->FilterStates = NULL; hs->memory_length = 0; move16(); @@ -2087,6 +2088,11 @@ void deleteCldfb_ivas( { free( hs->cldfb_state_fx ); } + + IF( hs->FilterStates ) + { + free( hs->FilterStates ); + } #endif free( hs ); diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 5e79a9ffc..6119dde7d 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -3043,7 +3043,7 @@ ivas_error ivas_init_decoder_fx( FOR( i = 0; i < numCldfbAnalyses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) { return error; } @@ -3055,7 +3055,7 @@ ivas_error ivas_init_decoder_fx( FOR( i = 0; i < numCldfbSyntheses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/ivas_front_vad.c b/lib_enc/ivas_front_vad.c index 9e7eafdcd..be9a837de 100644 --- a/lib_enc/ivas_front_vad.c +++ b/lib_enc/ivas_front_vad.c @@ -543,7 +543,9 @@ ivas_error front_vad_spar( // Q_bands = Q_factor_arrL( fr_bands[0], 2 * NB_BANDS ); floatToFixed_arrL( fr_bands[0], fr_bands_fx[0], Q_bands + QSCALE, 2 * NB_BANDS ); floatToFixed_arrL( hFrontVad->hNoiseEst->bckr, hFrontVad->hNoiseEst->bckr_fx, Q_bands + QSCALE, NB_BANDS ); +#ifndef MSAN_FIX floatToFixed_arrL( tmpE, tmpE_fx, Q_bands + QSCALE, NB_BANDS ); +#endif hFrontVad->hNoiseEst->totalNoise_fx = (Word16) ( hFrontVad->hNoiseEst->totalNoise * ONE_IN_Q8 ); Etot_fx[0] = (Word16) ( Etot[0] * ONE_IN_Q8 ); hFrontVad->hNoiseEst->Etot_last_fx = (Word16) ( hFrontVad->hNoiseEst->Etot_last * ONE_IN_Q8 ); @@ -626,7 +628,12 @@ ivas_error front_vad_spar( Q_inp_12k8 = Q9; // Q_factor_arr( inp_12k8-M, (3 * L_FRAME / 2)+M ); floatToFixed_arr( inp_12k8 - M, inp_12k8_fx - M, Q_inp_12k8, ( 3 * L_FRAME / 2 ) + M ); +#ifdef MSAN_FIX + floatToFixed_arr( A, A_fx, Q12, ( L_FRAME / L_SUBFR ) * ( M + 1 ) ); +#else floatToFixed_arr( A, A_fx, Q12, NB_SUBFR16k * ( M + 1 ) ); +#endif // MSAN_FIX + st->mem_wsp_fx = (Word16) floatToFixed( st->mem_wsp, Q_inp_12k8 ); // find_wsp_fx( A_fx, inp_12k8_fx, wsp_fx, &st->mem_wsp_fx, TILT_FAC_FX, L_FRAME, L_LOOK_12k8, L_SUBFR, Aw_fx, GAMMA1, NB_SUBFR ); ivas_find_wsp( L_FRAME, L_SUBFR, NB_SUBFR, A_fx, Aw_fx, inp_12k8_fx, TILT_FAC_FX, wsp_fx, &st->mem_wsp_fx, GAMMA1, L_LOOK_12k8 ); @@ -767,7 +774,11 @@ ivas_error front_vad_spar( corr_shift_fx = (Word16) floatToFixed( corr_shift, Q15 ); hFrontVad->hVAD->running_avg_fx = (Word16) floatToFixed( hFrontVad->hVAD->running_avg, Q15 ); hFrontVad->hVAD->ra_deltasum_fx = (Word16) floatToFixed( hFrontVad->hVAD->ra_deltasum, Q15 ); +#ifdef MSAN_FIX + floatToFixed_arr( A, A_fx, Q12, ( L_FRAME / L_SUBFR ) * ( M + 1 ) ); +#else floatToFixed_arr( A, A_fx, Q12, NB_SUBFR16k * ( M + 1 ) ); +#endif // MSAN_FIX floatToFixed_arr( st->voicing, st->voicing_fx, Q15, 3 ); vad_param_updt_fx( st, st->pitch[1], corr_shift_fx, corr_shift_fx, A_fx, &hFrontVad, 1 ); hFrontVad->hVAD->running_avg = fixedToFloat( hFrontVad->hVAD->running_avg_fx, Q15 ); diff --git a/lib_enc/speech_music_classif.c b/lib_enc/speech_music_classif.c index 6a5aa1c4a..8f536dbd5 100644 --- a/lib_enc/speech_music_classif.c +++ b/lib_enc/speech_music_classif.c @@ -124,6 +124,9 @@ void speech_music_clas_init( #ifdef IVAS_FLOAT_FIXED hSpMusClas->dlp_mean_ST_fx = 0; hSpMusClas->dlp_var_LT_fx = 0; +#ifdef MSAN_FIX + hSpMusClas->dlp_mean_LT_fx = 0; +#endif // MSAN_FIX #endif hSpMusClas->dlp_mean_LT = 0.0f; hSpMusClas->dlp_var_LT = 0.0f; diff --git a/lib_rend/ivas_mcmasa_ana.c b/lib_rend/ivas_mcmasa_ana.c index b0c4e82a0..531ab686e 100644 --- a/lib_rend/ivas_mcmasa_ana.c +++ b/lib_rend/ivas_mcmasa_ana.c @@ -253,7 +253,7 @@ ivas_error ivas_mcmasa_ana_open( move16(); FOR( i = 0; i < hMcMasa->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/ivas_omasa_ana.c b/lib_rend/ivas_omasa_ana.c index f5aa07318..cbf60f70f 100644 --- a/lib_rend/ivas_omasa_ana.c +++ b/lib_rend/ivas_omasa_ana.c @@ -146,7 +146,7 @@ ivas_error ivas_omasa_ana_open( hOMasa->num_Cldfb_instances = numAnalysisChannels; FOR( i = 0; i < hOMasa->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) { return error; } -- GitLab