Commit 39895d36 authored by vaclav's avatar vaclav
Browse files

accept switches

parent 5853a806
Loading
Loading
Loading
Loading
Loading
+0 −75
Original line number Diff line number Diff line
@@ -2369,7 +2369,6 @@ static void ivas_calc_p_coeffs_per_band_enc_fx(
            }
            ELSE IF( EQ_16( num_dmx, 3 ) )
            {
#ifdef FIX_1970_SBA_CRASH
                Word64 re64[2];
                Word32 re32[2], re32_2;
                Word16 qtmp2;
@@ -2399,80 +2398,6 @@ static void ivas_calc_p_coeffs_per_band_enc_fx(
                q_tmp = s_min( 63, qtmp2 );
                recon_uu_re[0][0] = L_max( 0, re32_2 );
                move32();
#else
                Word32 re1[2], re2;
                Word16 q_re1[2];
                set32_fx( re1, 0, 2 );
                set16_fx( q_re1, 31, 2 );

                FOR( j = 0; j < 2; j++ )
                {
                    FOR( k = 0; k < 2; k++ )
                    {
                        Word32 re;
                        W_tmp = W_mult0_32_32( pSparMd->band_coeffs[b_ts_idx].C_re_fx[0][k], cov_dd_re[k][j] ); // q_C_re+q_cov_dd_re
                        q_tmp = sub( W_norm( W_tmp ), 33 );
                        re = W_shl_sat_l( W_tmp, q_tmp ); // q_C_re+q_cov_dd_re+q_tmp
                        q_tmp = add( add( q_C_re, q_tmp ), q_cov_dd_re );
                        if ( W_tmp == 0 )
                        {
                            q_tmp = 31;
                            move16();
                        }

                        IF( LT_16( q_tmp, q_re1[j] ) )
                        {
                            re1[j] = L_shr( re1[j], sub( q_re1[j], q_tmp ) ); // q_tmp
                            move32();
                            q_re1[j] = q_tmp;
                            move16();
                        }
                        ELSE
                        {
                            re = L_shr( re, sub( q_tmp, q_re1[j] ) ); // q_re1[j]
                        }
                        re1[j] = L_add( re1[j], re ); // q_re1[j]
                        move32();
                    }
                }

                W_tmp = W_mult0_32_32( pSparMd->band_coeffs[b_ts_idx].C_re_fx[0][0], re1[0] ); // q_C_re+q_re1[0]
                q_tmp = sub( W_norm( W_tmp ), 33 );
                re2 = W_shl_sat_l( W_tmp, q_tmp ); // q_C_re+q_re1[0]+q_tmp
                q_tmp = add( add( q_C_re, q_tmp ), q_re1[0] );
                if ( W_tmp == 0 )
                {
                    q_tmp = 31;
                    move16();
                }
                recon_uu_re[0][0] = re2; // q_C_re+q_re1[0]+q_tmp-32
                move32();

                W_tmp = W_mult0_32_32( pSparMd->band_coeffs[b_ts_idx].C_re_fx[0][1], re1[1] ); // q_C_re+q_re1[1]
                q_tmp1 = sub( W_norm( W_tmp ), 33 );
                re2 = W_shl_sat_l( W_tmp, q_tmp1 ); // q_C_re+q_re1[1]+q_tmp1
                q_tmp1 = add( add( q_C_re, q_tmp1 ), q_re1[1] );
                if ( W_tmp == 0 )
                {
                    q_tmp1 = 31;
                    move16();
                }

                IF( LT_16( q_tmp, q_tmp1 ) )
                {
                    re2 = L_shr( re2, sub( q_tmp1, q_tmp ) ); // q_tmp
                }
                ELSE
                {
                    recon_uu_re[0][0] = L_shr( recon_uu_re[0][0], sub( q_tmp, q_tmp1 ) ); // q_tmp1
                    move32();
                    q_tmp = q_tmp1;
                    move16();
                }

                recon_uu_re[0][0] = L_add( recon_uu_re[0][0], re2 ); // q_tmp
                move32();
#endif

                IF( LT_16( q_cov_uu_re, q_tmp ) )
                {
+0 −9
Original line number Diff line number Diff line
@@ -72,15 +72,6 @@
#endif

/* ################### Start FIXES switches ########################### */
/* Note: each compile switch (FIX_1101_...) is independent from the other ones */
#define ISSUE_1867_replace_overflow_libenc                   /* FhG: BE - replace overflow operators by non-overflow-alternatives all over the lib_enc module */
#define FIX_1942_ASSERTION_LOWSHELF                          /* FhG: Modified the target_gains_db_fx calculation in compute_t60_coeffs_fx() */
#define FIX_1944_CRASH_FOR_STEREO                            /* FhG: improve TonalMDCTConceal_InsertNoise calculation precision */
#define FIX_1970_SBA_CRASH                                   /* Dlb: Fix for issue 1970, SBA crash */

#define FIX_1978_SAT_MISSING_IN_GAIN_ENC                     /* VA:  Fix add saturation missing that lead to a crash in P800-10 */
#define FIX_1981_MAXIMUM_EXP_FX                              /* FhG: Fix bug in function to find maximum value in vector */
#define FIX_1981_MAXIMUM_EXP_FX_ZEROMANTISSA                 /* FhG: Fix bug in function to find maximum value in vector:zero-mantissa fix*/

#define FIX_1979_SAT_MISSING_IN_LSF_ENC                      /* VA: Proposal to fix 1979, saturation in lsf_enc, NOkia to review */
#define FIX_1946_CRASH_JBM_PROCESSING                        /* FhG: Increased guard bits of DFT_fx */
+2 −29
Original line number Diff line number Diff line
@@ -2083,7 +2083,6 @@ Word16 maximum_exp_fx(
    const Word16 *exp_vec, /* i  : exponents of input vector                      */
    const Word16 lvec_fx   /* i  : length of input vector                         */
)
#ifdef FIX_1981_MAXIMUM_EXP_FX
{
    Word16 j, ind;
    ind = 0;
@@ -2092,49 +2091,23 @@ Word16 maximum_exp_fx(
    FOR( j = 1; j < lvec_fx; j++ )
    {
        Word16 scale = sub( exp_vec[j], exp_vec[ind] );
#ifdef FIX_1981_MAXIMUM_EXP_FX_ZEROMANTISSA

        test();
        if ( vec_fx[j] == 0 || vec_fx[ind] == 0 )
        {
            scale = 0;
            move16();
        }
#endif
        if ( L_mac0_sat( L_shl_sat( L_deposit_l( vec_fx[j] ), scale ), vec_fx[ind], -0x0001 ) > 0 )
        {
            ind = j;
            move16();
        }
    }
    return ind;
}
#else
{
    Word16 j, ind;
    Word16 tmp, exp;
    ind = 0;
    move16();
    tmp = vec_fx[0];
    move16();
    exp = exp_vec[0];
    move16();

    FOR( j = 1; j < lvec_fx; j++ )
    {
        IF( LT_16( tmp, shr_sat( vec_fx[j], sub( exp, exp_vec[j] ) ) ) )
        if ( L_mac0_sat( L_shl_sat( L_deposit_l( vec_fx[j] ), scale ), vec_fx[ind], -0x0001 ) > 0 )
        {
            ind = j;
            move16();
            tmp = vec_fx[j];
            move16();
            exp = exp_vec[j];
            move16();
        }
    }

    return ind;
}
#endif


/*---------------------------------------------------------------------*
+1 −20
Original line number Diff line number Diff line
@@ -28,27 +28,16 @@ static Word16 tcx_arith_decode_fx(
    Word16 exp_k;
    Word16 tmp;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    Word32 L_tmp, Q;
    Flag Overflow = 0;
    move32();
    Flag Carry = 0;
#else
    Word32 Q;
    Word64 W_tmp;
#endif
    move32();
#endif


    bp = ari_start_decoding_14bits_prm_fx( prm, 0, &as );

    tmp = sub( envelope_e, 1 + 15 );
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    L_tmp = L_deposit_l( 0 );
#else
    W_tmp = 0;
#endif

    FOR( k = 0; k < L_frame; k++ )
    {
        IF( envelope[k] == 0 ) /* safety check in case of bit errors */
@@ -72,11 +61,7 @@ static Word16 tcx_arith_decode_fx(
        {
            bp = ari_decode_14bits_sign_fx( prm, bp, target_bits, &s, &as );

#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
            L_tmp = L_macNs_co( L_tmp, q, k, &Carry, &Overflow );
#else
            W_tmp = W_mac_16_16( W_tmp, q, k );
#endif

            Q = L_mult( q, negate( shl( 1, sub( 30, SPEC_EXP_DEC ) ) ) );
            IF( EQ_16( s, 0 ) )
@@ -101,11 +86,7 @@ static Word16 tcx_arith_decode_fx(
    set32_fx( q_spectrum + k, 0, sub( L_frame, k ) );

    /* noise filling seed */
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    *nf_seed = extract_l( L_tmp );
#else
    *nf_seed = extract_l( W_extract_l( W_tmp ) );
#endif
    move16();

    return bp;
+3 −69
Original line number Diff line number Diff line
@@ -16,35 +16,14 @@
static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, Word16 L_subfr /*Q0*/, Word32 lp_gainp /*Q16*/, Word32 *lp_gainc /*Q16*/ )
{
    Word16 tmp16, tmp16_2, tmp16_3, tmp_e, tmp2_e, tmp_loop, i;
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    Word32 L_c;
    Word32 L_acc, L_tmp;
#else
    Word64 W_acc;
    Word32 L_tmp;
#endif
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    Flag Overflow = 0;
    Flag Carry = 0;
#endif
    move32();
    move32();
#endif


#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    L_acc = L_deposit_l( 0 );
    L_c = L_deposit_l( 0 );
#else
    W_acc = 0;
#endif
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    Overflow = 0;
    move16();
    Carry = 0;
    move16();
#endif

    tmp16 = round_fx( old_fpitch ); /*Q0*/
    tmp_loop = shl( L_subfr, 1 );
@@ -57,22 +36,9 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/,
        /*st->lp_gainc += ( exc[i-2*L_subfr] - st->Mode2_lp_gainp * exc[i-2*L_subfr-(int)(st->old_fpitch+0.5f)] ) *
                          ( exc[i-2*L_subfr] - st->Mode2_lp_gainp * exc[i-2*L_subfr-(int)(st->old_fpitch+0.5f)] );*/
        tmp16_3 = sub_sat( exc[( i - ( L_subfr * 2 ) )] /*Q1*/, mult_r( tmp16_2 /*Q15*/, exc[( ( i - ( L_subfr * 2 ) ) - tmp16 )] /*Q1*/ ) /*Q1*/ );
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
        L_acc = L_macNs_co( L_acc, tmp16_3, tmp16_3, &Carry, &Overflow ); /*Q3*/
        Overflow = 0;
        move16();
        L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Accumulate Carrys Q-1*/
        Carry = 0;
        move16();
#else
        W_acc = W_mac_16_16( W_acc, tmp16_3, tmp16_3 ); /*Q3*/
#endif
    }
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    L_tmp = norm_llQ31( L_c, L_acc, &tmp_e ); /*Q3,norm,tmp_e*/
#else
    L_tmp = w_norm_llQ31( W_acc, &tmp_e );                    /*Q3,norm,tmp_e*/
#endif
    tmp_e = add( tmp_e, 31 - ( add( shl( Q_exc, 1 ), 1 ) ) ); /*L_tmp is Q31, now*/
    tmp16 = BASOP_Util_Divide3216_Scale( L_tmp /*Q31,norm,tmp_e*/, shl( L_subfr, 1 ) /*Q15,15*/, &tmp2_e ) /*Q15,tmp2_e+tmp_e-15*/;
    tmp_e = sub( add( tmp2_e, tmp_e ), 15 );
@@ -88,56 +54,24 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/,
static void calcGainc2_fx( Word16 *exc, Word16 Q_exc, Word16 L_subfr /*Q0*/, Word32 *lp_gainc /*Q16*/ )
{
    Word16 i, cnt, tmp16, tmp_e, tmp2_e;
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    Word32 L_c, L_acc, L_tmp;
#else
    Word64 W_acc;
    Word32 L_tmp;
#endif
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    Flag Overflow = 0;
    Flag Carry = 0;
#endif
#endif
    move16();
    move16();


#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    Carry = 0;
    move16();
    Overflow = 0;
    move16();
#endif

    L_c = L_deposit_l( 0 );
    L_acc = L_deposit_l( 0 );
#else
    W_acc = 0;
#endif

    cnt = shl( L_subfr, 1 );

    FOR( i = 0; i < cnt; i++ )
    {
        /* *gainc += ( exc[i-2*L_subfr] ) * ( exc[i-2*L_subfr]); */
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
        L_acc = L_macNs_co( L_acc, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, &Carry, &Overflow ); /*Q3*/
        Overflow = 0;
        move16();
        L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /* Accumulate Carrys Q-1*/
        Carry = 0;
        move16();
#else
        W_acc = W_mac_16_16( W_acc, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, exc[( i - ( L_subfr * 2 ) )] /*Q1*/ ); /*Q3*/
#endif
    }

#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    L_tmp = norm_llQ31( L_c, L_acc, &tmp_e ); /*Q3,norm,tmp_e*/
#else
    L_tmp = w_norm_llQ31( W_acc, &tmp_e );                          /*Q3,norm,tmp_e*/
#endif
    tmp_e = add( tmp_e, sub( 31, ( add( shl( Q_exc, 1 ), 1 ) ) ) ); /*L_tmp is Q31, now*/
    tmp16 = BASOP_Util_Divide3216_Scale( L_tmp /*Q31,norm,tmp_e*/, shl( L_subfr, 1 ) /*Q15,15*/, &tmp2_e ) /*Q15,tmp2_e+tmp_e-15*/;
    tmp_e = sub( add( tmp2_e, tmp_e ), 15 );
Loading