Commit 1f24ca82 authored by vaillancour's avatar vaillancour
Browse files

more fixed related to VBR

parent 99ee2de2
Loading
Loading
Loading
Loading
+32 −3
Original line number Diff line number Diff line
@@ -1370,7 +1370,9 @@ static Word32 DTFS_freq_corr_fx(
    Word16 exp, tmp;
    Word32 L_tmp;
    Word16 Q_num, Q_den;

#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif
    IF(LT_16(X1_DTFS_fx.lag_fx, X2_DTFS_fx.lag_fx))
    {
        DTFS_zeroPadd_fx(X2_DTFS_fx.lag_fx, &X1_DTFS_fx);
@@ -1405,8 +1407,13 @@ static Word32 DTFS_freq_corr_fx(

    FOR(k = lk; k < hk; k++)
    {
#ifdef BASOP_NOGLOB
        corr_fx = L_mac0_o(corr_fx, X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k], &Overflow);       /*  Q(1) */
        corr_fx = L_mac0_o(corr_fx, X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k], &Overflow);       /*  Q(1) */
#else
        corr_fx = L_mac0(corr_fx, X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k]);       /*  Q(1) */
        corr_fx = L_mac0(corr_fx, X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k]);       /*  Q(1) */
#endif
    }

    Qr = norm_l(corr_fx);
@@ -1416,7 +1423,11 @@ static Word32 DTFS_freq_corr_fx(
        move16();
    }

#ifdef BASOP_NOGLOB
    E1_fx = round_fx_o(L_shl_o(corr_fx, Qr, &Overflow), &Overflow);      /*  Q(Qr-16) */
#else
    E1_fx = round_fx(L_shl(corr_fx, Qr));      /*  Q(Qr-16) */
#endif
    Num = L_mult0(E1_fx, E1_fx);                            /*  Q(2+2*Qr-32+1) */
    Q_num = sub(shl(add(add(X1_DTFS_fx.Q, X2_DTFS_fx.Q), Qr), 1), 32);

@@ -1429,8 +1440,11 @@ static Word32 DTFS_freq_corr_fx(
        move16();
    }

#ifdef BASOP_NOGLOB
    E1_fx = round_fx_o(L_shl_o(E_fx, Q1, &Overflow), &Overflow);         /*  Q(1+Q1-16) */
#else
    E1_fx = round_fx(L_shl(E_fx, Q1));         /*  Q(1+Q1-16) */

#endif
    /*  PORTING: Handling the functions with variable no. of arguments */
    E_fx = DTFS_getEngy_band_fx(X2_DTFS_fx, lband, hband);                    /*  Q(1) */
    Q2 = norm_l(E_fx);
@@ -1440,8 +1454,11 @@ static Word32 DTFS_freq_corr_fx(
        move16();
    }

#ifdef BASOP_NOGLOB
    E2_fx = round_fx_o(L_shl_o(E_fx, Q2, &Overflow), &Overflow);         /*  Q(1+Q2-16) */
#else
    E2_fx = round_fx(L_shl(E_fx, Q2));         /*  Q(1+Q2-16) */

#endif
    Den = L_mult0(E1_fx, E2_fx);                            /*  Q(2+Q1+Q2-32+1) */
    Q_den = sub(add(shl(add(X2_DTFS_fx.Q, X1_DTFS_fx.Q), 1), add(Q1, Q2)), 32);

@@ -1456,17 +1473,29 @@ static Word32 DTFS_freq_corr_fx(
    {

        expa = norm_l(Num);
#ifdef BASOP_NOGLOB
        fraca = extract_h(L_shl_o(Num,expa, &Overflow));
#else
        fraca = extract_h(L_shl(Num,expa));
#endif
        expa = sub(30, add(expa,Q_num));


        expb = norm_l(Den);
#ifdef BASOP_NOGLOB
        fracb = round_fx_o(L_shl_o(Den,expb, &Overflow), &Overflow);
#else
        fracb = round_fx(L_shl(Den,expb));
#endif
        expb = sub(30, add(expb,Q_den));


        scale = shr(sub(fraca,fracb),15);
#ifdef BASOP_NOGLOB
        fracb = shl_o(fracb,scale, &Overflow);
#else
        fracb = shl(fracb,scale);
#endif
        expb = sub(expb,scale);

        tmp = div_s(fracb,fraca);