Commit 968327d0 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '3gpp_issue_1074_fix' into 'main'

Fix for 3GPP issue 1074: Crash in 7.1.4 encoder at 160kbps with selection test inputs

See merge request !859
parents 53f35590 46b84d85
Loading
Loading
Loading
Loading
+16 −19
Original line number Diff line number Diff line
@@ -809,13 +809,18 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(
    move16();
    move16();
    move16();
    move16();
    move16();
    move16();
    move16();
    move16();
    move16();
    move16();

    FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ )
    {
        pcm_in_fx[2 * i] = data_f_fx[chan1s[i]];
        pcm_in_fx[2 * i + 1] = data_f_fx[chan2s[i]];
        move16();
        move16();

        Scale_sig32( pcm_in_fx[2 * i], input_frame, sub( Q14, Q_data_f ) );
        Scale_sig32( pcm_in_fx[2 * i + 1], input_frame, sub( Q14, Q_data_f ) );
@@ -842,8 +847,6 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(
    {
        p_fr_realbuffer_fx[i] = fr_realbuffer_fx[i];
        p_fr_imagbuffer_fx[i] = fr_imagbuffer_fx[i];
        move32();
        move32();
    }

    /* prepare Parameter MDFT analysis */
@@ -851,8 +854,6 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(
    {
        pp_in_fr_real_fx[i] = p_fr_realbuffer_fx[i];
        pp_in_fr_imag_fx[i] = p_fr_imagbuffer_fx[i];
        move32();
        move32();
    }

    // l_ts = input_frame / MAX_PARAM_SPATIAL_SUBFRAMES;
@@ -887,8 +888,8 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(

    FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ )
    {
        Scale_sig32( pcm_in_fx[2 * i], input_frame, Q_data_f - Q14 );
        Scale_sig32( pcm_in_fx[2 * i + 1], input_frame, Q_data_f - Q14 );
        Scale_sig32( pcm_in_fx[2 * i], input_frame, sub( Q_data_f, Q14 ) );
        Scale_sig32( pcm_in_fx[2 * i + 1], input_frame, sub( Q_data_f, Q14 ) );
    }

    /*-----------------------------------------------------------------------------------------*
@@ -953,15 +954,14 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(
        FOR( bnd = 0; bnd < maxbands; bnd++ )
        {
            rxy_fx = hMCParamUpmix->cov_real_fx[b][1][0][bnd];
            move32();
            ryy_fx = hMCParamUpmix->cov_real_fx[b][1][1][bnd];
            move32();

            Word16 exp_tmp = 0;
            move16();
            Word32 tmp = BASOP_Util_Add_Mant32Exp( ryy_fx, sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][1][bnd] ) ), EPSILON_FX_M, EPSILON_FX_E, &exp_tmp );
            exp_cmat = 0;
            move16();
            cmat_fx = BASOP_Util_Divide3232_Scale( rxy_fx, tmp, &exp_cmat );
            exp_cmat = sub( add( exp_cmat, sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][0][bnd] ) ) ), exp_tmp );
            cmat_fx = BASOP_Util_Divide3232_Scale( rxy_fx, L_add( ryy_fx, EPSILON_FX ), &exp_cmat );
            exp_cmat = sub( add( exp_cmat, sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][0][bnd] ) ) ), sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][1][bnd] ) ) );

            Word16 alpha_fx = 0, exp_alpha_var = 0;
            move16();
@@ -969,6 +969,7 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(
            exp_alpha_var = BASOP_Util_Add_MantExp( cmat_fx, add( exp_cmat, 1 ), negate( ONE_IN_Q14 ), 1, &alpha_fx );

            rxx_fx = hMCParamUpmix->cov_real_fx[b][0][0][bnd];
            move32();
            Word32 tmp_2 = L_mult( cmat_fx, cmat_fx ); // exp_cmat * 2
            rxxest_fx = Mpy_32_32( tmp_2, ryy_fx );

@@ -980,8 +981,8 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(

            exp_wetaux = 0;
            move16();
            wetaux_fx = BASOP_Util_Divide3232_Scale( drxx_fx, tmp, &exp_wetaux );
            exp_wetaux = sub( add( exp_wetaux, exp_drxx ), exp_tmp );
            wetaux_fx = BASOP_Util_Divide3232_Scale( drxx_fx, L_add( ryy_fx, EPSILON_FX ), &exp_wetaux );
            exp_wetaux = sub( add( exp_wetaux, exp_drxx ), sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][1][bnd] ) ) );

            Word16 sqrt_wetaux_fx = 0, exp_sqrt_wetaux = 0;
            move16();
@@ -993,10 +994,6 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx(
                move16();
                move16();
                BASOP_Util_Sqrt_InvSqrt_MantExp( wetaux_fx, exp_wetaux, &sqrt_wetaux_fx, &exp_sqrt_wetaux, &tmp_4, &exp_tmp4 );
                tmp_4 = tmp_4;
                exp_tmp4 = exp_tmp4;
                move16();
                move16();
            }
            ELSE
            {