Commit 5495f446 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

MSAN fixes for encoder

parent b00f01f1
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -367,7 +367,11 @@ void hq_hr_enc(
    if ( hqswb_clas == HQ_GEN_SWB || hqswb_clas == HQ_GEN_FB )
    {
#ifdef IVAS_FLOAT_FIXED
#ifdef MSAN_FIX
        floatToFixed_arrL32( t_audio, t_audio_fx, Q12, L_FRAME48k );
#else
        floatToFixed_arrL32( t_audio, t_audio_fx, Q12, L_FRAME48k_EXT );
#endif
        hq_generic_hf_encoding_fx( t_audio_fx, hq_generic_fenv_fx, hq_generic_offset, st, &hq_generic_exc_clas, length );
        fixedToFloat_arr( hq_generic_fenv_fx, hq_generic_fenv, Q1, HQ_FB_FENV );
#else
+13 −2
Original line number Diff line number Diff line
@@ -419,7 +419,9 @@ ivas_error ivas_cpe_enc(
            // sts[i]->q_inp = Q_factor_arr(sts[i]->input, 1965);
            // sts[i]->q_old_inp = sts[i]->q_inp = Q_factor_arr( sts[i]->old_input_signal, 1965 ); // check length
            sts[i]->q_inp = Q_factor_arr( sts[i]->old_input_signal, 1965 ); // check length
#ifndef MSAN_FIX
            hCPE->hStereoDft->q_input_mem_itd[i] = Q_factor_arr( &hCPE->hStereoDft->input_mem_itd[i][0], STEREO_DFT_OVL_MAX );
#endif // MSAN_FIX
       // hCPE->hStereoDft->DFT_q_fx[i] = Q_factor_arrL(&hCPE->hStereoDft->DFT[i][0], STEREO_DFT_N_MAX_ENC);
       // f2me_buf( hCPE->hStereoDft->DFT[i], hCPE->hStereoDft->DFT_fx[i], &hCPE->hStereoDft->DFT_fx_e[i], STEREO_DFT_N_MAX_ENC );
            hCPE->q_input_mem[i] = Q_factor_arr( &hCPE->input_mem[i][0], NS2SA( input_Fs, STEREO_DFT_OVL_NS ) );
@@ -428,7 +430,9 @@ ivas_error ivas_cpe_enc(
            // floatToFixed_arr(sts[i]->input, sts[i]->input_fx, sts[i]->q_inp, 1965);
            // floatToFixed_arrL(&hCPE->hStereoDft->DFT[i][0], &hCPE->hStereoDft->DFT_fx[i][0], hCPE->hStereoDft->DFT_q_fx[i], STEREO_DFT_N_MAX_ENC);
            floatToFixed_arr( &hCPE->input_mem[i][0], &hCPE->input_mem_fx[i][0], hCPE->q_input_mem[i], NS2SA( input_Fs, STEREO_DFT_OVL_NS ) );
#ifndef MSAN_FIX
            floatToFixed_arr( &hCPE->hStereoDft->input_mem_itd[i][0], &hCPE->hStereoDft->input_mem_itd_fx[i][0], hCPE->hStereoDft->q_input_mem_itd[i], STEREO_DFT_OVL_MAX );
#endif // MSAN_FIX
        }
        floatToFixed_arrL( hCPE->hStereoDft->side_gain, hCPE->hStereoDft->side_gain_fx, Q31, STEREO_DFT_ENC_DFT_NB * STEREO_DFT_BAND_MAX );
        floatToFixed_arrL( hCPE->hStereoDft->res_pred_gain, hCPE->hStereoDft->res_pred_gain_fx, Q31, STEREO_DFT_ENC_DFT_NB * STEREO_DFT_BAND_MAX );
@@ -473,7 +477,14 @@ ivas_error ivas_cpe_enc(
            fixedToFloat_arr( &hCPE->input_mem_fx[i][0], &hCPE->input_mem[i][0], hCPE->q_input_mem[i], NS2SA( input_Fs, STEREO_DFT_OVL_NS ) );
            // fixedToFloat_arrL( &hCPE->hStereoDft->DFT_fx[i][0], &hCPE->hStereoDft->DFT[i][0], hCPE->hStereoDft->DFT_q_fx[i], STEREO_DFT_N_MAX_ENC );
            me2f_buf( hCPE->hStereoDft->DFT_fx[i], hCPE->hStereoDft->DFT_fx_e[i], hCPE->hStereoDft->DFT[i], STEREO_DFT_N_MAX_ENC );
#ifdef MSAN_FIX
            IF( hCPE->hStereoDft->hItd->td_itd[STEREO_DFT_OFFSET] != 0 && EQ_16( sts[0]->element_mode, IVAS_CPE_DFT ) )
            {
                fixedToFloat_arr( &hCPE->hStereoDft->input_mem_itd_fx[i][0], &hCPE->hStereoDft->input_mem_itd[i][0], hCPE->hStereoDft->q_input_mem_itd[i], hCPE->hStereoDft->dft_ovl );
            }
#else
            fixedToFloat_arr( &hCPE->hStereoDft->input_mem_itd_fx[i][0], &hCPE->hStereoDft->input_mem_itd[i][0], hCPE->hStereoDft->q_input_mem_itd[i], STEREO_DFT_OVL_MAX );
#endif // MSAN_FIX
        }
        /* fix2flt end */

+7 −1
Original line number Diff line number Diff line
@@ -798,6 +798,12 @@ void ivas_mct_core_enc(
        nCPE = add( nCPE, 1 );
    }

#ifdef MSAN_FIX
    FOR( ch = 0; ch < MCT_MAX_CHANNELS; ch++ )
    {
        set32_fx( powerSpecMsInv_long_fx[ch], 0, L_FRAME48k );
    }
#endif // MSAN_FIX
    FOR( ch = 0; ch < nChannels; ch++ )
    {
#if 1  // Float initialization to be removed
+15 −0
Original line number Diff line number Diff line
@@ -1462,7 +1462,11 @@ void stereo_dft_enc_analyze_fx(
    {
        FOR( n = 0; n < n_channels; n++ )
        {
#ifdef MSAN_FIX
            Scale_sig( hStereoDft->input_mem_itd_fx[n], dft_ovl, sub( sts[n]->q_inp, hStereoDft->q_input_mem_itd[n] ) );
#else
            Scale_sig( hStereoDft->input_mem_itd_fx[n], STEREO_DFT_OVL_MAX, sts[n]->q_inp - hStereoDft->q_input_mem_itd[n] );
#endif // MSAN_FIX
            hStereoDft->q_input_mem_itd[n] = sts[n]->q_inp;
            move16();
            Copy( hStereoDft->input_mem_itd_fx[n], input_mem[n], dft_ovl );
@@ -2723,13 +2727,24 @@ void stereo_dft_enc_process(
        hStereoDft->hItd->prev_m1_fx = floatToFixed( hStereoDft->hItd->prev_m1, 31 );
        hStereoDft->hItd->prev_m2_fx = floatToFixed( hStereoDft->hItd->prev_m2, 31 );
        f2me( hStereoDft->hItd->currFlatness, &hStereoDft->hItd->currFlatness_fx, &hStereoDft->hItd->currFlatness_fx_e );
#ifdef MSAN_FIX
        hCPE->hStereoClassif->prev_IPD_fx = floatToFixed( hCPE->hStereoClassif->prev_IPD, Q29 );
        hCPE->hStereoClassif->prev_ratio_m1_m2_fx = floatToFixed( hCPE->hStereoClassif->prev_ratio_m1_m2, Q31 );
#endif

#ifndef MSAN_FIX
        hCPE->hStereoClassif->xtalk_score_fx = floatToFixed( hCPE->hStereoClassif->xtalk_score, 31 );
#endif // !MSAN_FIX
        floatToFixed_arrL( hCPE->hStereoClassif->xtalk_score_buf, hCPE->hStereoClassif->xtalk_score_buf_fx, 31, XTALK_SCORE_BUF_LEN );
        hCPE->hStereoClassif->xtalk_wscore_fx = floatToFixed( hCPE->hStereoClassif->xtalk_wscore, 31 );

        stereo_dft_enc_compute_itd_fx( hCPE, pDFT_L_fx, hStereoDft->DFT_fx_e[0], pDFT_R_fx, hStereoDft->DFT_fx_e[1], k_offset, input_frame, vad_flag_dtx, vad_hover_flag, bin_nrgL_fx, bin_nrgL_fx_e, bin_nrgR_fx, bin_nrgR_fx_e );

        /*fix2flt*/
#ifdef MSAN_FIX
        hCPE->hStereoClassif->prev_ratio_m1_m2 = fixedToFloat( hCPE->hStereoClassif->prev_ratio_m1_m2_fx, Q31 );
        hCPE->hStereoClassif->prev_IPD = fixedToFloat( hCPE->hStereoClassif->prev_IPD_fx, Q29 );
#endif
        hStereoDft->sfm = fixedToFloat( hStereoDft->sfm_fx, 31 );
        me2f_buf( hStereoDft->xspec_smooth_fx, hStereoDft->xspec_smooth_fx_e, hStereoDft->xspec_smooth, STEREO_DFT_N_32k_ENC );
        me2f_buf( hStereoDft->Spd_L_smooth_fx, hStereoDft->Spd_L_smooth_fx_e, hStereoDft->Spd_L_smooth, STEREO_DFT_N_32k_ENC / 2 );
+4 −0
Original line number Diff line number Diff line
@@ -1473,7 +1473,11 @@ void stereo_dft_enc_compute_itd_fx(

    pDFT_L = DFT_L;
    pDFT_R = DFT_R;
#ifdef MSAN_FIX
    FOR( i = 0; i < NFFT; i++ )
#else
    FOR( i = 0; i < STEREO_DFT_N_MAX_ENC; i++ )
#endif // MSAN_FIX
    {
        L_temp_e = norm_l( pDFT_L[i] );
        pDFT_L[i] = L_shl( pDFT_L[i], L_temp_e );