Commit b58170ea authored by vaillancour's avatar vaillancour
Browse files

Fixes for stv32c_dtx_sw_59_164_32kHz.*.COD

parent fbaa436b
Loading
Loading
Loading
Loading
+39 −3
Original line number Diff line number Diff line
@@ -1235,12 +1235,20 @@ void SWB_BWE_decoding_fx(
    EnergyL = L_deposit_l(0);
    FOR(n_freq=224+st_offset; n_freq<swb_bwe_trans_subband_fx[0]+st_offset; n_freq++)
    {
#ifdef BASOP_NOGLOB
        fenvL = L_mac0_sat(fenvL,core_dec_freq[n_freq],core_dec_freq[n_freq]); /*2*Q_syn */
#else
        fenvL = L_mac0(fenvL,core_dec_freq[n_freq],core_dec_freq[n_freq]); /*2*Q_syn */
#endif
    }

    FOR( n_freq = 16; n_freq < L_FRAME; n_freq++ )
    {
#ifdef BASOP_NOGLOB
        EnergyL = L_mac0_sat(EnergyL,core_dec_freq[n_freq],core_dec_freq[n_freq]); /*2*Q_syn */
#else
        EnergyL = L_mac0(EnergyL,core_dec_freq[n_freq],core_dec_freq[n_freq]); /*2*Q_syn */
#endif
    }

    fenvL_16 = 0;
@@ -1275,7 +1283,11 @@ void SWB_BWE_decoding_fx(
        L_tmp = L_deposit_h(tmp);
        L_tmp = Isqrt_lc(L_tmp, &exp);

#ifdef BASOP_NOGLOB
        EnergyL_16 = round_fx_sat(L_shl_sat(L_tmp, sub(exp, 12))); /* Q3 */
#else
        EnergyL_16 = round_fx(L_shl(L_tmp, sub(exp, 12))); /* Q3 */
#endif
    }
    calc_normal_length_fx( ACELP_CORE, core_dec_freq, mode, extl, &L_swb_norm, prev_L_swb_norm ,Q_syn);

@@ -1474,20 +1486,32 @@ void SWB_BWE_decoding_fx(
                        *pit1 = mult_r(*pit1,tmp3);
                        move16(); /*Q_syn */
                        pit1++;
#ifdef BASOP_NOGLOB
                        tmp3 = add_sat(tmp3, 3277); /*Q15 */
#else
                        tmp3 = add(tmp3, 3277); /*Q15 */
#endif
                    }
                }
                ELSE IF(LT_16(tmp2, tmp1))
                {
                    exp = norm_s(tmp1);
                    tmp = div_s(shl(1,sub(14,exp)),tmp1); /*Q(29-exp) */
#ifdef BASOP_NOGLOB
                    tmp3 = round_fx_sat(L_shl_sat(L_mult(tmp2,tmp),add(exp,2))); /*Q15 */
#else
                    tmp3 = round_fx(L_shl(L_mult(tmp2,tmp),add(exp,2))); /*Q15 */
#endif
                    WHILE(LT_16(tmp3, 32767))
                    {
                        *pit1 = mult_r(*pit1,tmp3);
                        move16(); /*Q_syn */
                        pit1++;
#ifdef BASOP_NOGLOB
                        tmp3 = add_sat(tmp3,3277); /*Q15 */
#else
                        tmp3 = add(tmp3,3277); /*Q15 */
#endif
                    }
                }

@@ -1518,20 +1542,32 @@ void SWB_BWE_decoding_fx(
                        *pit1 = mult_r(*pit1,tmp3);
                        move16(); /*Q_syn */
                        pit1++;
#ifdef BASOP_NOGLOB
                        tmp3 = add_sat(tmp3, 3277); /*Q15 */
#else
                        tmp3 = add(tmp3, 3277); /*Q15 */
#endif
                    }
                }
                ELSE IF(LT_16(tmp2,tmp1))
                {
                    exp = norm_s(tmp1);
                    tmp = div_s(shl(1,sub(14,exp)),tmp1); /*Q(29-exp) */
#ifdef BASOP_NOGLOB
                    tmp3 = round_fx_sat(L_shl_sat(L_mult(tmp2,tmp),add(exp,2))); /*Q15 */
#else
                    tmp3 = round_fx(L_shl(L_mult(tmp2,tmp),add(exp,2))); /*Q15 */
#endif
                    WHILE(LT_16(tmp3,32767))
                    {
                        *pit1 = mult_r(*pit1,tmp3);
                        move16();/*Q_syn */
                        pit1++;
#ifdef BASOP_NOGLOB
                        tmp3 = add_sat(tmp3, 3277); /*Q15 */
#else
                        tmp3 = add(tmp3, 3277); /*Q15 */
#endif
                    }
                }
                pit1 = &SWB_signal[495+st_offset];
+8 −0
Original line number Diff line number Diff line
@@ -3368,7 +3368,11 @@ static void windowing_ROM_optimized(
    FOR (i = 0; i < quarterLen; i++)
    {
        acc = L_deposit_h(FEC_HQ_WIN_A0);
#ifdef BASOP_NOGLOB
        hamm = mac_r_sat(acc, *pSine, FEC_HQ_WIN_A1);
#else
        hamm = mac_r(acc, *pSine, FEC_HQ_WIN_A1);
#endif
        *pY++ = mult_r(hamm, *pX++);
        move16();
        pSine += downSamples;   /* Increment address counter */
@@ -3386,7 +3390,11 @@ static void windowing_ROM_optimized(
    {
        pSine -= downSamples;   /* Decrement address counter */
        acc = L_deposit_h(FEC_HQ_WIN_A0);
#ifdef BASOP_NOGLOB
        hamm = mac_r_sat(acc, *pSine, FEC_HQ_WIN_A1);
#else
        hamm = mac_r(acc, *pSine, FEC_HQ_WIN_A1);
#endif
        *pY++ = mult_r(hamm, *pX++);
        move16();
    }
+5 −5
Original line number Diff line number Diff line
@@ -683,9 +683,6 @@ static void find_enr_dct_fx(
    Word16 freq;
    const Word16 *ptR;
    Word32 LE_min, Ltmp, Ltmp1;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
#endif


    LE_min = L_max(L_shl(E_MIN_Q15, sub(shl(Q_dct,1)+10,22)),1);
@@ -702,8 +699,11 @@ static void find_enr_dct_fx(
        {
            /* energy  */
            /**ptE = *ptR * *ptR;           */
#ifdef BASOP_NOGLOB
            Ltmp = L_mult_sat(*ptR, *ptR);
#else
            Ltmp = L_mult(*ptR, *ptR);

#endif
            /* normalization */
            /**ptE *= 1.0f / (DCT_L_POST);*/
            Ltmp = Mult_32_16(Ltmp, 26214);    /*26214 = 1.0/640 ->Q15+9 --> 2*Q_dct + 9*/
@@ -713,7 +713,7 @@ static void find_enr_dct_fx(

            /*band[i] += *ptE++;*/
#ifdef BASOP_NOGLOB
            Ltmp1 = L_add_o(Ltmp, Ltmp1, &Overflow);
            Ltmp1 = L_add_sat(Ltmp, Ltmp1);
#else
            Ltmp1 = L_add(Ltmp, Ltmp1);
#endif
+4 −1
Original line number Diff line number Diff line
@@ -788,8 +788,11 @@ static void shb_CNG_decod_fx(


    interp_fx = s_min(st_fx->shb_dtx_count_fx,32);
#ifdef BASOP_NOGLOB
    interp_fx = shl_sat(interp_fx, 10); /*Q15*/
#else
    interp_fx = shl(interp_fx, 10); /*Q15*/

#endif
    FOR ( i=0; i<LPC_SHB_ORDER; i++ )
    {
        tmp2 = mult(interp_fx, st_fx->lsp_shb_prev_fx[i]);     /*Q14*/
+4 −0
Original line number Diff line number Diff line
@@ -1010,7 +1010,11 @@ Word16 swb_bwe_dec_fx(
        L_tmp = L_deposit_l(0);
        FOR(i=0; i<l_subfr; i++)
        {
#ifdef BASOP_NOGLOB
            L_tmp = L_mac0_sat(L_tmp, hb_synth_fx[tmp+i], hb_synth_fx[tmp+i]); /*(2*Q_syn_hb) */
#else
            L_tmp = L_mac0(L_tmp, hb_synth_fx[tmp+i], hb_synth_fx[tmp+i]); /*(2*Q_syn_hb) */
#endif
        }
        L_tmp = Mult_32_16(L_tmp, div_s(1, l_subfr)); /*(2*Q_syn_hb) */

Loading