Commit ecf5dcb7 authored by vaillancour's avatar vaillancour
Browse files

Fixes for stv32c_dtx_sw_96_1280_32kHz.f06.COD

parent ee9cb35f
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -104,7 +104,11 @@ void env_adj_fx
                IF( EQ_16(att_state, 1)) /* End of attenuation region found */
                {
                    /* tmp = min(1, max(0, len-ENV_ADJ_START)*(1.0f/ENV_ADJ_INCL)); */
#ifdef BASOP_NOGLOB
                    tmp = round_fx_sat(L_shl_sat(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */
#else
                    tmp = round_fx(L_shl(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */
#endif
                    tmp_diff = sub(MAX_16, tmp); /* Q15 */ move16();
                    FOR( j = start; j < i ; j++ )
                    {
@@ -144,7 +148,11 @@ void env_adj_fx
    IF( EQ_16(att_state, 1))
    {
        /* tmp = min(1, max(0, len-ENV_ADJ_START)*(1.0f/ENV_ADJ_INCL)); */
#ifdef BASOP_NOGLOB
        tmp = round_fx_sat(L_shl_sat(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */
#else
        tmp = round_fx(L_shl(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */
#endif
        tmp_diff = sub(MAX_16, tmp); /* Q15 */ move16();
        FOR( j = start; j < i ; j++ )
        {
+4 −1
Original line number Diff line number Diff line
@@ -34,8 +34,11 @@ Word16 usdequant_fx( /* Qx*/
    /*g = idx * delta + qlow;*/
    L_tmp = L_deposit_l(qlow);/*Qx */
    L_tmp = L_mac(L_tmp,idx,delta);/*Qx */
#ifdef BASOP_NOGLOB
    g = round_fx_sat(L_shl_sat(L_tmp,16)); /*Qx */
#else
    g = round_fx(L_shl(L_tmp,16)); /*Qx */

#endif
    return( g );
}

+17 −12
Original line number Diff line number Diff line
@@ -86,9 +86,7 @@ void preecho_sb_fx(
    UWord16 tmp_u16;
    Word32 mean_prev_hb_fx_loc, mean_prev_nc_fx_loc, mean_prev_fx_loc;      /*                                                  */
    Word16 q16p1, qmemp1, qtmp;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
#endif


    q16p1 = add(q_sig16, 1);
    qmemp1 = q16p1;
@@ -98,7 +96,7 @@ void preecho_sb_fx(

        mean_prev_fx_loc = L_add(*mean_prev_fx, 0);
#ifdef BASOP_NOGLOB
        mean_prev_hb_fx_loc = L_shl_o(*mean_prev_hb_fx, shl(q_sig16, 1), &Overflow); /*Q0 to q_sig16*/
        mean_prev_hb_fx_loc = L_shl_sat(*mean_prev_hb_fx, shl(q_sig16, 1)); /*Q0 to q_sig16*/
#else
        mean_prev_hb_fx_loc = L_shl(*mean_prev_hb_fx, shl(q_sig16,1)); /*Q0 to q_sig16*/
#endif
@@ -192,7 +190,7 @@ void preecho_sb_fx(
        fxptr4 = rec_sig_fx + 2;

#ifdef BASOP_NOGLOB
        tmp_fxL1 = L_mult(shl_o(*memfilt_lb_fx, q_sig16, &Overflow), 8192); /* *memfilt_lb_fx in q0  */
        tmp_fxL1 = L_mult(shl_sat(*memfilt_lb_fx, q_sig16), 8192); /* *memfilt_lb_fx in q0  */
#else
        tmp_fxL1 = L_mult(shl(*memfilt_lb_fx, q_sig16), 8192); /* *memfilt_lb_fx in q0  */
#endif
@@ -275,8 +273,11 @@ void preecho_sb_fx(
                    move32();
                }
                tmp_fx1 = shr(*fxptr2, q16p1); /*q-1 to avoisd saturation in energy*/
#ifdef BASOP_NOGLOB
                tmp_fxL1 = L_mac0_sat(tmp_fxL1, tmp_fx1, tmp_fx1);
#else
                tmp_fxL1 = L_mac0(tmp_fxL1, tmp_fx1, tmp_fx1);

#endif
                tmp_fxL2 = L_mac0(tmp_fxL2, *fxptr3, *fxptr3);
                cntnzcr = add(cntnzcr, 1);
                IF( L_mult0(*fxptr2, *(fxptr2-1)) <= 0 )
@@ -431,7 +432,7 @@ void preecho_sb_fx(
        }

#ifdef BASOP_NOGLOB
        if( LT_32(max_es_fx, L_shl_o(mean_prev_fx_loc, 2, &Overflow)))/*OK if saturated*/
        if( LT_32(max_es_fx, L_shl_sat(mean_prev_fx_loc, 2)))/*OK if saturated*/
#else
        if( LT_32(max_es_fx, L_shl(mean_prev_fx_loc, 2)))/*OK if saturated*/
#endif
@@ -677,7 +678,7 @@ void preecho_sb_fx(
                }

#ifdef BASOP_NOGLOB
                sum_plus_es_fx = L_add_o(sum_plus_es_fx, L_shl(tmp_fxL1, 2), &Overflow);
                sum_plus_es_fx = L_add_sat(sum_plus_es_fx, L_shl_sat(tmp_fxL1, 2));
#else
                sum_plus_es_fx = L_add(sum_plus_es_fx, L_shl(tmp_fxL1, 2));
#endif
@@ -855,7 +856,7 @@ void preecho_sb_fx(
            FOR(j = 0; j < smooth_len; j++)
            {
#ifdef BASOP_NOGLOB
                *fxptr1 = add_o(*fxptr1, tmp_fx1, &Overflow);
                *fxptr1 = add_sat(*fxptr1, tmp_fx1);
#else
                *fxptr1 = add(*fxptr1, tmp_fx1);
#endif
@@ -897,7 +898,7 @@ void preecho_sb_fx(
                savehalfe_fx = L_add(mean_prev_nc_fx_loc, 0);
            }
#ifdef BASOP_NOGLOB
            mean_prev_nc_fx_loc = L_add_o(mean_prev_nc_fx_loc, es_mdct_fx[i], &Overflow);
            mean_prev_nc_fx_loc = L_add_sat(mean_prev_nc_fx_loc, es_mdct_fx[i]);
#else
            mean_prev_nc_fx_loc = L_add(mean_prev_nc_fx_loc, es_mdct_fx[i]);
#endif
@@ -906,7 +907,7 @@ void preecho_sb_fx(
        if( LT_32(savehalfe_fx, L_shr(mean_prev_nc_fx_loc,1) ))
        {
#ifdef BASOP_NOGLOB
            mean_prev_nc_fx_loc = L_shl_o(L_sub_o(mean_prev_nc_fx_loc, savehalfe_fx, &Overflow), 1, &Overflow);
            mean_prev_nc_fx_loc = L_shl_sat(L_sub_sat(mean_prev_nc_fx_loc, savehalfe_fx), 1);
#else
            mean_prev_nc_fx_loc = L_shl(L_sub(mean_prev_nc_fx_loc, savehalfe_fx), 1);
#endif
@@ -950,9 +951,13 @@ void preecho_sb_fx(
            mean_prev_hb_fx_loc = L_shl(tmp_fxL1, 1);
        }

#ifdef BASOP_NOGLOB
        last2_fx = L_shr(L_add_sat(es_mdct_fx[NUMSF_M1], es_mdct_fx[NUMSF_M2]), 1);
        last2_hb_fx = L_shr(L_add_sat(es_mdct_hb_fx[NUMSF_M1], es_mdct_hb_fx[NUMSF_M2]), 1);
#else
        last2_fx = L_shr(L_add(es_mdct_fx[NUMSF_M1], es_mdct_fx[NUMSF_M2]), 1);
        last2_hb_fx = L_shr(L_add(es_mdct_hb_fx[NUMSF_M1], es_mdct_hb_fx[NUMSF_M2]), 1);

#endif
        if( GT_32(last2_fx, mean_prev_fx_loc))
        {
            mean_prev_fx_loc = L_add(last2_fx, 0);
+4 −0
Original line number Diff line number Diff line
@@ -57,7 +57,11 @@ void FEC_pitch_estim_fx(
    tmp3 = shl(tmp2,1);								  /*Q6 (1.4f * old_pitch_buf[2*NB_SUBFR-1])*/

    tmp16k1 = round_fx(L_shl(Mpy_32_16_1(old_pitch_buf[2*NB_SUBFR16k-1],22938), 6));  /*Q6 0.7f * old_pitch_buf[2*NB_SUBFR16k-1]*/
#ifdef BASOP_NOGLOB
    tmp16k2 = shl_sat(tmp16k1,1);                               /*Q6 1.4f * old_pitch_buf[2*NB_SUBFR16k-1]*/
#else
    tmp16k2 = shl(tmp16k1,1);                               /*Q6 1.4f * old_pitch_buf[2*NB_SUBFR16k-1]*/
#endif
#ifdef IVAS_CODE
    test(); test();
    IF (EQ_16(last_core, HQ_CORE) || EQ_16(last_core, TCX_20_CORE)  || EQ_16(last_core, TCX_10_CORE))
+8 −7
Original line number Diff line number Diff line
@@ -168,9 +168,6 @@ void con_tcx(
    HQ_DEC_HANDLE hHQ_core;
    TCX_LTP_DEC_HANDLE hTcxLtpDec;
    TCX_DEC_HANDLE hTcxDec;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
#endif

    hTcxLtpDec = st->hTcxLtpDec;
    hHQ_core = st->hHQ_core;
@@ -521,7 +518,7 @@ void con_tcx(
        ELSE
        {
#ifdef BASOP_NOGLOB
            st->cummulative_damping = shl_o(mult_ro(st->cummulative_damping/*Q15*/,alpha/*Q14*/, &Overflow),1, &Overflow)/*Q15*/;
            st->cummulative_damping = shl_sat(mult_r_sat(st->cummulative_damping/*Q15*/,alpha/*Q14*/),1)/*Q15*/;
#else
            st->cummulative_damping = shl(mult_r(st->cummulative_damping/*Q15*/,alpha/*Q14*/),1)/*Q15*/;
#endif
@@ -548,9 +545,9 @@ void con_tcx(
        FOR ( i=offset; i < tmp_loop; i++ )
        {
#ifdef BASOP_NOGLOB
            exc[i] = mult_r(exc[i], round_fx_o(gain32, &Overflow))/*Q1*/;
            exc[i] = mult_r(exc[i], round_fx_sat(gain32))/*Q1*/;
            move16();
            gain32 = L_sub_o(gain32, step32, &Overflow); 
            gain32 = L_sub_sat(gain32, step32); 
#else
            exc[i] = mult_r(exc[i],round_fx(gain32))/*Q1*/;
            move16();
@@ -864,7 +861,7 @@ void con_tcx(
        FOR( i=0 ; i< tmp16; i++ )
        {
#ifdef BASOP_NOGLOB
            exc[i] = add_o(exc[i], shl(noise[i + (L_FIR_FER2 / 2)], Q_exc + noise_e), &Overflow);/*Q1*/       move16();
            exc[i] = add_sat(exc[i], shl(noise[i + (L_FIR_FER2 / 2)], Q_exc + noise_e));/*Q1*/       move16();
#else
            exc[i] = add(exc[i] , shl(noise[i+(L_FIR_FER2/2)],Q_exc+noise_e));/*Q1*/       move16();
#endif
@@ -1007,7 +1004,11 @@ void con_tcx(
        lerp(syn, st->hWIDec->old_syn2_fx, L_EXC_MEM, L_frame);
    }

#ifdef BASOP_NOGLOB
    st->bfi_pitch_fx/*Q6*/ = round_fx_sat(L_shl_sat(pitch_buf[st->nb_subfr-1]/*15Q16*/,6/*Q6*/));
#else
    st->bfi_pitch_fx/*Q6*/ = round_fx(L_shl(pitch_buf[st->nb_subfr-1]/*15Q16*/,6/*Q6*/));
#endif
    move16();
    st->bfi_pitch_frame_fx = st->L_frame_fx;
    move16();
Loading