Commit 0fc9528d authored by norvell's avatar norvell
Browse files

Merge branch '698-msan-additional-fix' into 'main'

[Non BE] Fix for MSAN issue under CR_FIX_698_SBA_MSAN

See merge request !982
parents 0af04aba 447d8e42
Loading
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -4892,8 +4892,13 @@ void ivas_copy_band_coeffs_idx_to_arr(

void ivas_clear_band_coeffs( 
    ivas_band_coeffs_t *pband_coeffs, 
#ifdef CR_FIX_698_SBA_MSAN
    const uint16_t num_bands,
    const uint16_t num_ts
#else
    const uint16_t num_bands
#endif

);

void ivas_clear_band_coeff_idx( 
+23 −0
Original line number Diff line number Diff line
@@ -293,13 +293,33 @@ void ivas_copy_band_coeffs_idx_to_arr(

void ivas_clear_band_coeffs(
    ivas_band_coeffs_t *pband_coeffs,
#ifdef CR_FIX_698_SBA_MSAN
    const uint16_t num_bands,
    const uint16_t num_ts )
#else
    const uint16_t num_bands )
#endif
{
#ifdef CR_FIX_698_SBA_MSAN
    uint16_t i, j;
#else
    uint16_t i;
#endif

#ifdef CR_FIX_698_SBA_MSAN
    for ( j = 0; j < num_ts; j++ )
#else
    for ( i = 0; i < num_bands; i++ )
#endif
    {
#ifndef CR_FIX_698_SBA_MSAN
        set_zero( (float *) pband_coeffs[i].C_re, ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ) * ( IVAS_SPAR_MAX_DMX_CHS - 1 ) );
        set_zero( (float *) pband_coeffs[i].P_re, ( IVAS_SPAR_MAX_CH - 1 ) );
        set_zero( (float *) pband_coeffs[i].C_quant_re, ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ) * ( IVAS_SPAR_MAX_DMX_CHS - 1 ) );
        set_zero( (float *) pband_coeffs[i].P_quant_re, ( IVAS_SPAR_MAX_CH - 1 ) );
        set_zero( pband_coeffs[i].pred_re, ( IVAS_SPAR_MAX_CH - 1 ) );
#endif
#ifdef CR_FIX_698_SBA_MSAN
        for ( i = 0; i < num_bands; i++ )
        {
            set_zero( (float *) pband_coeffs[i + j * num_bands].C_re, ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ) * ( IVAS_SPAR_MAX_DMX_CHS - 1 ) );
@@ -310,6 +330,9 @@ void ivas_clear_band_coeffs(

            set_zero( pband_coeffs[i + j * num_bands].pred_quant_re, ( IVAS_SPAR_MAX_CH - 1 ) );
        }
#else
        set_zero( pband_coeffs[i].pred_quant_re, ( IVAS_SPAR_MAX_CH - 1 ) );
#endif
    }

    return;
+1 −0
Original line number Diff line number Diff line
@@ -169,6 +169,7 @@
#define CR_FIX_639_HQ_ACELP_TRANSITION                  /* Ericsson: Issue 639: Wrong sampling rate of SWB TBE excitation memory in 16 kHz core for DFT Stereo@32 kbps */
#define CR_FIX_586_BPF_DFT_MEM                          /* FhG: issue 586: set input memory of DFT analysis of BPF signal to zero for HQ core to fix issue with PLC and bitrate switching */
#define CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE /* FhG: fix for cng in ISM DTX on sudden silence periods */
#define CR_FIX_698_SBA_MSAN                             /* Dlb: issue 698: Uninitialized memory read in SBA init */

/* ##################### End NON-BE CR switches ########################### */

+8 −0
Original line number Diff line number Diff line
@@ -498,7 +498,11 @@ ivas_error ivas_spar_md_dec_init(
)
{
    int16_t i, j;
#ifdef CR_FIX_698_SBA_MSAN
    int16_t nchan_transport, num_md_sub_frames;
#else
    int16_t nchan_transport;
#endif
    float pFC[IVAS_MAX_NUM_BANDS], PR_minmax[2];

    ivas_sba_get_spar_hoa_md_flag( sba_order, hDecoderConfig->ivas_total_brate, &hMdDec->spar_hoa_md_flag, &hMdDec->spar_hoa_dirac2spar_md_flag );
@@ -541,9 +545,13 @@ ivas_error ivas_spar_md_dec_init(
    hMdDec->spar_plc_enable_fadeout_flag = 1;
    hMdDec->dtx_md_smoothing_cntr = 1;

#ifdef CR_FIX_698_SBA_MSAN
    num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, hDecoderConfig->ivas_total_brate, hDecoderConfig->ivas_total_brate );

    ivas_clear_band_coeffs( hMdDec->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS, num_md_sub_frames );
#else
    ivas_clear_band_coeffs( hMdDec->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS );
#endif
    ivas_clear_band_coeff_idx( hMdDec->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS );
    ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx, IVAS_MAX_NUM_BANDS );
    ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS );
+4 −0
Original line number Diff line number Diff line
@@ -303,7 +303,11 @@ ivas_error ivas_spar_md_enc_init(
        }
    }

#ifdef CR_FIX_698_SBA_MSAN
    ivas_clear_band_coeffs( hMdEnc->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS, 1 );
#else
    ivas_clear_band_coeffs( hMdEnc->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS );
#endif
    ivas_clear_band_coeff_idx( hMdEnc->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS );
    ivas_clear_band_coeff_idx( hMdEnc->spar_md_prior.band_coeffs_idx, IVAS_MAX_NUM_BANDS );
    ivas_clear_band_coeff_idx( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS );