Commit eb0d505f authored by vaillancour's avatar vaillancour
Browse files

fixes EVS stv16c_7200_16kHz

parent f55db13d
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -1182,7 +1182,9 @@ static void fft5_32_16fx(
    Word16 T1, To, T8, Tt, T9, Ts, Te, Tp, Th, Tn,T2, T3, T4, T5, T6, T7;
    Word16 i0,i1,i2,i3,i4;
    Word32 L_tmp;

#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
#endif
    i0 = Idx[0];
    move16();
    i1 = Idx[32];
@@ -1208,9 +1210,15 @@ static void fft5_32_16fx(
    move16();
    T6 = zRe[i3];
    move16();
#ifdef BASOP_NOGLOB
    T7 = add_o(T5,T6, &Overflow);
    T8 = add_o(T4,T7, &Overflow);
    Tt = sub_o(T5,T6, &Overflow);
#else
    T7 = add(T5,T6);
    T8 = add(T4,T7);
    Tt = sub(T5,T6);
#endif
    /* T9 = KP559016994 * (T4 - T7); */
    L_tmp = Mult_32_16(KP559016994_16FX,sub(T4,T7));
    T9 = round_fx(L_tmp);
@@ -1234,12 +1242,17 @@ static void fft5_32_16fx(



#ifdef BASOP_NOGLOB
    zRe[i0] = add_o(T1,T8, &Overflow);
    move16();
    zIm[i0] = add_o(To,Tp, &Overflow);
    move32();
#else
    zRe[i0] = add(T1,T8);
    move16();
    zIm[i0] = add(To,Tp);
    move32();


#endif

    /*T2 = KP951056516*Te + KP587785252*Th; */
    L_tmp = Mult_32_16(KP951056516_16FX,Te);
+35 −1
Original line number Diff line number Diff line
@@ -61,6 +61,9 @@ Word16 WB_BWE_gain_pred_fx(
    Word32 L_WB_fenv0, L_WB_fenv1;
    Word16 pitch_buf_tmp[4];
    Word16 alfa = 32767;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
#endif
    move16();

    mode = NORMAL;
@@ -69,19 +72,31 @@ Word16 WB_BWE_gain_pred_fx(
    enerL = L_deposit_l(0);
    FOR (n_freq = 128; n_freq<192; n_freq++)
    {
#ifdef BASOP_NOGLOB
        enerL = L_mac0_o( enerL, core_dec_freq[n_freq], core_dec_freq[n_freq], &Overflow ); /*2(Q_syn)  */
#else
        enerL = L_mac0( enerL, core_dec_freq[n_freq], core_dec_freq[n_freq] ); /*2(Q_syn)  */
#endif
    }

    L_WB_fenv0 = L_deposit_l(0);
    FOR (n_freq = 192; n_freq<224; n_freq++)
    {
#ifdef BASOP_NOGLOB
        L_WB_fenv0 = L_mac0_o(L_WB_fenv0, core_dec_freq[n_freq],core_dec_freq[n_freq], &Overflow);/*2*Q_syn */
#else
        L_WB_fenv0 = L_mac0(L_WB_fenv0, core_dec_freq[n_freq],core_dec_freq[n_freq]);/*2*Q_syn */
#endif
    }

    L_WB_fenv1 = L_deposit_l(0);
    FOR (n_freq = 224; n_freq<256; n_freq++)
    {
#ifdef BASOP_NOGLOB
        L_WB_fenv1= L_mac0_o(L_WB_fenv1, core_dec_freq[n_freq],core_dec_freq[n_freq], &Overflow);/*2*Q_syn */
#else
        L_WB_fenv1= L_mac0(L_WB_fenv1, core_dec_freq[n_freq],core_dec_freq[n_freq]);/*2*Q_syn */
#endif
    }

    L_tmp = sum16_32_fx( voice_factors, 4);
@@ -99,7 +114,11 @@ Word16 WB_BWE_gain_pred_fx(
    }

    test();
#ifdef BASOP_NOGLOB
    IF(GT_32(L_WB_fenv0, L_shl_o(L_WB_fenv1,1, &Overflow)))
#else
    IF(GT_32(L_WB_fenv0, L_shl(L_WB_fenv1,1)))
#endif
    {
        exp = norm_l(L_WB_fenv0);
        tmp = extract_h(L_shl(L_WB_fenv0, exp));
@@ -110,7 +129,11 @@ Word16 WB_BWE_gain_pred_fx(
        alfa = s_max(tmp, 3277);/*Q15 */
        L_WB_fenv0 = Mult_32_16(L_WB_fenv0, alfa);/*2*Q_syn+15-15->2*Q_syn */
    }
#ifdef BASOP_NOGLOB
    ELSE IF (GT_32(L_WB_fenv1, L_shl_o(L_WB_fenv0, 1, &Overflow))&&NE_16(coder_type,UNVOICED))
#else
    ELSE IF (GT_32(L_WB_fenv1, L_shl(L_WB_fenv0, 1))&&NE_16(coder_type,UNVOICED))
#endif
    {
        exp = norm_l(L_WB_fenv1);
        tmp = extract_h(L_shl(L_WB_fenv1, exp));
@@ -137,7 +160,11 @@ Word16 WB_BWE_gain_pred_fx(
        enerL = L_deposit_l(1);
    }

#ifdef BASOP_NOGLOB
    L_tmp = L_add_o(L_WB_fenv0, L_WB_fenv1, &Overflow);  /* In 2*Q_syn */
#else
    L_tmp = L_add(L_WB_fenv0, L_WB_fenv1);  /* In 2*Q_syn */
#endif
    exp = norm_l(L_tmp);
    tmp = extract_h(L_shl(L_tmp, exp));
    /*exp = sub(exp, 30-(2*Q_syn+6)); //+6(/64) */
@@ -201,8 +228,11 @@ Word16 WB_BWE_gain_pred_fx(
    exp = norm_s(pitch);
    tmp = div_s(shl(1,sub(14,exp)), pitch); /*Q(29-exp-5) */
    L_tmp = L_mult0(tmp1, tmp); /*29-exp-5->24-exp */
#ifdef BASOP_NOGLOB
    tmp = round_fx_o(L_shl_o(L_tmp, add(exp,6), &Overflow), &Overflow); /*14          */
#else
    tmp = round_fx(L_shl(L_tmp, add(exp,6))); /*14          */

#endif
    tmp1= s_max(tmp, 8192);
    alfa = s_min(24576, tmp1);/*Q14 */

@@ -212,7 +242,11 @@ Word16 WB_BWE_gain_pred_fx(

    enerL = L_deposit_l(enerL_16);
    enerL = L_shl(enerL, 6); /*Q6 */
#ifdef BASOP_NOGLOB
    tmp1 = i_mult_o(3, WB_fenv[0], &Overflow);/*Q3 */
#else
    tmp1 = i_mult(3, WB_fenv[0]);/*Q3 */
#endif
    L_tmp = L_mult0(tmp1, WB_fenv[0]); /*Q6 */

    test();
+4 −1
Original line number Diff line number Diff line
@@ -184,8 +184,11 @@ void E_UTIL_synthesis(const Word16 shift, const Word16 a[], const Word16 x[], Wo
     *-----------------------------------------------------------------------*/
    mem += m;                           /*move16();*/

#ifdef BASOP_NOGLOB
    a0 = shr_o(a[0], shift, &Overflow); /* input / 2^shift */
#else
    a0 = shr(a[0], shift); /* input / 2^shift */

#endif
    /*-----------------------------------------------------------------------*
     * Do the filtering
     *-----------------------------------------------------------------------*/
+4 −0
Original line number Diff line number Diff line
@@ -383,7 +383,11 @@ void Copy_Scale_sig_16_32(
        }
        return;
    }
#ifdef BASOP_NOGLOB
    tmp = shl_o(1,exp0, &Overflow);
#else
    tmp = shl(1,exp0);
#endif
    FOR (i = 0; i < lg; i++)
    {
        y[i] = L_mult0(x[i], tmp);
+4 −0
Original line number Diff line number Diff line
@@ -660,7 +660,11 @@ void bass_psfilter_fx(
                FOR (i=0; i<subfr_len/2; i++)
                {
                    Lener0 = L_mult0(sigPtr[i], sigPtr[i]);
#ifdef BASOP_NOGLOB
                    Lener = L_add_o(Lener, L_shr(L_mac0_o(Lener0, err[i], err[i], &Overflow), 5), &Overflow);
#else
                    Lener = L_add(Lener, L_shr(L_mac0(Lener0, err[i], err[i]), 5));
#endif
                }
                exp2 = sub(exp2, 5);
            }
Loading