Commit 027bb68b authored by vaillancour's avatar vaillancour
Browse files

some fixes for AMRIO

parent f006d30b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -236,7 +236,11 @@ void CNG_exc_fx(
        {
            /* exc2[i] *= enr */
            L_tmp = L_mult(exc2[i_subfr+i], tmp); /* Q-4 * Q_exc+19 -> Q_exc +16 */
#ifdef BASOP_NOGLOB
            exc2[i_subfr+i] = round_fx_o(L_shl_o(L_tmp, exp, &Overflow), &Overflow);
#else
            exc2[i_subfr+i] = round_fx(L_shl(L_tmp, exp));
#endif
        }
    }
    IF ( NE_16(Opt_AMR_WB,1))
+7 −2
Original line number Diff line number Diff line
@@ -154,7 +154,9 @@ void E_LPC_a_isp_conversion(const Word16 a[], Word16 isp[], const Word16 old_isp
    Word32 f[2][NC_MAX+1];
    Word32 t0, t1;
    Word16 scale=1024;

#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif

    /*-------------------------------------------------------------*
     * find the sum and diff polynomials F1(z) and F2(z)
@@ -276,8 +278,11 @@ void E_LPC_a_isp_conversion(const Word16 a[], Word16 isp[], const Word16 old_isp
             * xint = xlow - ylow*(xhigh-xlow)/(yhigh-ylow)
             *--------------------------------------------------------*/

#ifdef BASOP_NOGLOB
            y = sub_o(yhigh, ylow, &Overflow);
#else
            y = sub(yhigh, ylow);

#endif
            IF (y != 0)
            {
                x = sub(xhigh, xlow);
+24 −4
Original line number Diff line number Diff line
@@ -63,11 +63,19 @@ void acelp_2t32_fx(
    L_cor = L_deposit_h(1);
    FOR (i = 0; i < NB_POS_FCB_2T; i++)
    {
#ifdef BASOP_NOGLOB
        L_cor = L_mac_o(L_cor, *ptr_h1, *ptr_h1, &Overflow);
#else
        L_cor = L_mac(L_cor, *ptr_h1, *ptr_h1);
#endif
        ptr_h1++;
        *p1-- = extract_h(L_cor);
        move16();				/*Q9 Q7*/
#ifdef BASOP_NOGLOB
        L_cor = L_mac_o(L_cor, *ptr_h1, *ptr_h1, &Overflow);
#else
        L_cor = L_mac(L_cor, *ptr_h1, *ptr_h1);
#endif
        ptr_h1++;
        *p0-- = extract_h(L_cor);
        move16();					/*Q9 Q7*/
@@ -115,19 +123,31 @@ void acelp_2t32_fx(
        L_cor = L_mult(*ptr_h1++, *ptr_h2++);
        FOR (i = k; i < NB_POS_FCB_2T-1; i++)
        {
#ifdef BASOP_NOGLOB
            * p1 = round_fx_o(L_cor, &Overflow);
            L_cor = L_mac_o(L_cor, *ptr_h1++, *ptr_h2++, &Overflow);
#else
            * p1 = round_fx(L_cor);
            L_cor = L_mac(L_cor, *ptr_h1++, *ptr_h2++);
#endif
#ifdef BASOP_NOGLOB
            * p0 = round_fx_o(L_cor, &Overflow);
            L_cor = L_mac_o(L_cor, *ptr_h1++, *ptr_h2++, &Overflow);
#else
            * p0 = round_fx(L_cor);
            L_cor = L_mac(L_cor, *ptr_h1++, *ptr_h2++);

#endif
            p1 -= (NB_POS_FCB_2T + 1);
            move16();
            p0 -= (NB_POS_FCB_2T + 1);
            move16();
        }

#ifdef BASOP_NOGLOB
        *p1 = round_fx_o(L_cor, &Overflow);
#else
        *p1 = round_fx(L_cor);

#endif
        pos -= NB_POS_FCB_2T;
        move16();
        pos2--;
+20 −5
Original line number Diff line number Diff line
@@ -56,7 +56,13 @@ void E_ACELP_h_vec_corr1(Word16 h[], Word16 vec[], UWord8 track,
        p1 = h;
        p2 = &vec[dn];
        FOR(j = dn; j < L_SUBFR - 1; j++)
        {
#ifdef BASOP_NOGLOB
            L_sum = L_mac_o(L_sum, *p1++, *p2++, &Overflow);
#else
            L_sum = L_mac(L_sum, *p1++, *p2++);
#endif
        }

#ifdef BASOP_NOGLOB
        corr = mac_ro(L_sum, *p1++, *p2++, &Overflow);   /*Q9*/
@@ -110,8 +116,13 @@ void E_ACELP_h_vec_corr2(Word16 h[], Word16 vec[], UWord8 track,
        p1 = h;
        p2 = &vec[pos];
        FOR(j = pos; j < L_SUBFR - 1; j++)
        {
#ifdef BASOP_NOGLOB
            L_sum = L_mac_o(L_sum, *p1++, *p2++, &Overflow);
#else
            L_sum = L_mac(L_sum, *p1++, *p2++);

#endif
        }
#ifdef BASOP_NOGLOB
        corr = mac_ro(L_sum, *p1++, *p2++, &Overflow);   /*Q9*/
#else /* BASOP_NOGLOB */
@@ -843,7 +854,11 @@ void E_ACELP_pulsesign(const Word16 cn[], Word16 dn[], Word16 dn2[], Word16 sign
        /*cor = (s * cn[i]) + (alp * dn[i]);                        MULT(1);MAC(1);*/
        Lcor = L_mult(cn[i], k_cn);
        Lcor = L_mac(Lcor, dn[i], k_dn);
#ifdef BASOP_NOGLOB
        val = round_fx_o(L_shl_o(Lcor,4, &Overflow), &Overflow);							/*shifting by 4 may overflow but improves accuracy*/
#else
        val = round_fx(L_shl(Lcor,4));							/*shifting by 4 may overflow but improves accuracy*/
#endif

        index = shr(val, 15);
        sign[i] = ptr16[index];
+7 −1
Original line number Diff line number Diff line
@@ -297,7 +297,9 @@ Word16 Mode2_gp_clip(
    Word16 clip, tmp, exp_xn;
    Word16 i;
    Word32 wener, Ltmp;

#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif
    move16();
    clip = 0;

@@ -315,7 +317,11 @@ Word16 Mode2_gp_clip(

    FOR (i=0; i<L_subfr; i++)
    {
#ifdef BASOP_NOGLOB
        wener = L_mac0_o(wener, xn[i], xn[i], &Overflow);
#else
        wener = L_mac0(wener, xn[i], xn[i]);
#endif
    }

    /*wener = 10.0f*(float)log10(wener);*/
Loading