亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pst.c

?? ITU-T之G.729算法的VC6.0工程
?? C
?? 第 1 頁 / 共 3 頁
字號:
    Word16 temp;
    Word32 L_acc;

    temp  = sub(phase, 1);
    temp  = shl(temp, L2_LH2_L);
    ptr_h = tab_hup_l + temp;   /* tab_hup_l + LH2_L * (phase-1) */

    temp  = sub(LH_UP_L, ltpdel);
    ptr2  = s_in + temp; ;

    /* Compute y_up */
    for(n = 0; n<L_SUBFR; n++) {
        L_acc = 0L;
        for(i=0; i<LH2_L; i++) {
            L_acc = L_mac(L_acc, ptr_h[i], (*ptr2--));
        }
        y_up[n] = round(L_acc);
        ptr2 += LH2_L_P1;
    }


    /* Compute num */
    L_acc = 0L;
    for(n=0; n<L_SUBFR; n++)    {
        L_acc = L_mac(L_acc, y_up[n], s_in[n]);
    }
    if(L_acc < 0L) {
        *num = 0;
        *sh_num = 0;
    }
    else {
        temp = sub(16, norm_l(L_acc));
        if(temp < 0) {
            temp = 0;
        }
        L_acc = L_shr(L_acc, temp);   /* with temp >= 0 */
        *num = extract_l(L_acc);
        *sh_num = temp;
    }

    /* Compute den */
    L_acc = 0L;
    for(n=0; n<L_SUBFR; n++)    {
        L_acc = L_mac(L_acc, y_up[n], y_up[n]);
    }
    temp = sub(16, norm_l(L_acc));
    if(temp < 0) {
        temp = 0;
    }
    L_acc = L_shr(L_acc, temp);     /* with temp >= 0 */
    *den = extract_l(L_acc);
    *sh_den = temp;

    return;
}

/*----------------------------------------------------------------------------
 *  select_ltp : selects best of (gain1, gain2)
 *  with gain1 = num1 * 2** sh_num1 / den1 * 2** sh_den1
 *  and  gain2 = num2 * 2** sh_num2 / den2 * 2** sh_den2
 *----------------------------------------------------------------------------
 */
static Word16 select_ltp(  /* output : 1 = 1st gain, 2 = 2nd gain */
 Word16 num1,       /* input : numerator of gain1 */
 Word16 den1,       /* input : denominator of gain1 */
 Word16 sh_num1,    /* input : just. factor for num1 */
 Word16 sh_den1,    /* input : just. factor for den1 */
 Word16 num2,       /* input : numerator of gain2 */
 Word16 den2,       /* input : denominator of gain2 */
 Word16 sh_num2,    /* input : just. factor for num2 */
 Word16 sh_den2)    /* input : just. factor for den2 */
{
    Word32 L_temp1, L_temp2;
    Word16 temp1, temp2;
    Word16 hi, lo;
    Word32 L_temp;

    if(den2 == 0) {

        return(1);
    }

    /* compares criteria = num**2/den */
    L_temp1 = L_mult(num1, num1);
    L_Extract(L_temp1, &hi, &lo);
    L_temp1 = Mpy_32_16(hi, lo, den2);

    L_temp2 = L_mult(num2, num2);
    L_Extract(L_temp2, &hi, &lo);
    L_temp2 = Mpy_32_16(hi, lo, den1);

    /* temp1 = sh_den2 + 2 * sh_num1 */
    temp1 = shl(sh_num1, 1);
    temp1 = add(temp1, sh_den2);
    /* temp2 = sh_den1 + 2 * sh_num2; */
    temp2 = shl(sh_num2, 1);
    temp2 = add(temp2, sh_den1);

    if(sub(temp2 ,temp1)>0) {
        temp2 = sub(temp2, temp1);
        L_temp1 = L_shr(L_temp1, temp2);    /* temp2 > 0 */
    }
    else {
        if(sub(temp1 ,temp2) >0){
            temp1 = sub(temp1, temp2);
            L_temp2 = L_shr(L_temp2, temp1);    /* temp1 > 0 */
        }
    }

    L_temp = L_sub(L_temp2,L_temp1);
    if(L_temp>0L) {

        return(2);
    }
    else {

        return(1);
    }
}

/*----------------------------------------------------------------------------
 *   calc_st_filt -  computes impulse response of A(gamma2) / A(gamma1)
 *   controls gain : computation of energy impulse response as
 *                    SUMn  (abs (h[n])) and computes parcor0
 *----------------------------------------------------------------------------
 */
static void calc_st_filt(
 Word16 *apond2,     /* input : coefficients of numerator */
 Word16 *apond1,     /* input : coefficients of denominator */
 Word16 *parcor0,    /* output: 1st parcor calcul. on composed filter */
 Word16 *sig_ltp_ptr    /* in/out: input of 1/A(gamma1) : scaled by 1/g0 */
)
{
    Word16 h[LONG_H_ST];
    Word32 L_temp, L_g0;
    Word16 g0, temp;
    int i;

    /* compute i.r. of composed filter apond2 / apond1 */
    Syn_filt(apond1, apond2, h, LONG_H_ST, mem_zero, 0);

    /* compute 1st parcor */
    calc_rc0_h(h, parcor0);

    /* compute g0 */
    L_g0 = 0L;
    for(i=0; i<LONG_H_ST; i++) {
        L_temp = L_deposit_l(abs_s(h[i]));
        L_g0   = L_add(L_g0, L_temp);
    }
    g0 = extract_h(L_shl(L_g0, 14));

    /* Scale signal input of 1/A(gamma1) */
    if(sub(g0, 1024)>0) {
        temp = div_s(1024, g0);     /* temp = 2**15 / gain0 */
        for(i=0; i<L_SUBFR; i++) {
            sig_ltp_ptr[i] = mult_r(sig_ltp_ptr[i], temp);
        }
    }

    return;
}

/*----------------------------------------------------------------------------
 * calc_rc0_h - computes 1st parcor from composed filter impulse response
 *----------------------------------------------------------------------------
 */
static void calc_rc0_h(
 Word16 *h,      /* input : impulse response of composed filter */
 Word16 *rc0     /* output: 1st parcor */
)
{
    Word16 acf0, acf1;
    Word32 L_acc;
    Word16 temp, sh_acf;
    Word16 *ptrs;
    int i;


    /* computation of the autocorrelation function acf */
    L_acc  = 0L;
    for(i=0; i<LONG_H_ST; i++) L_acc = L_mac(L_acc, h[i], h[i]);
    sh_acf = norm_l(L_acc);
    L_acc  = L_shl(L_acc, sh_acf);
    acf0   = extract_h(L_acc);

    L_acc  = 0L;
    ptrs   = h;
    for(i=0; i<LONG_H_ST-1; i++){
        temp = *ptrs++;
        L_acc = L_mac(L_acc, temp, *ptrs);
    }
    L_acc = L_shl(L_acc, sh_acf);
    acf1  = extract_h(L_acc);

    /* Compute 1st parcor */
    /**********************/
    if( sub(acf0, abs_s(acf1))<0) {
        *rc0 = 0;
        return;
    }
    *rc0 = div_s(abs_s(acf1), acf0);
    if(acf1 > 0) {
        *rc0 = negate(*rc0);
    }

    return;
}


/*----------------------------------------------------------------------------
 * filt_mu - tilt filtering with : (1 + mu z-1) * (1/1-|mu|)
 *   computes y[n] = (1/1-|mu|) (x[n]+mu*x[n-1])
 *----------------------------------------------------------------------------
 */
static void filt_mu(
 Word16 *sig_in,     /* input : input signal (beginning at sample -1) */
 Word16 *sig_out,    /* output: output signal */
 Word16 parcor0      /* input : parcor0 (mu = parcor0 * gamma3) */
)
{
    int n;
    Word16 mu, mu2, ga, temp;
    Word32 L_acc, L_temp, L_fact;
    Word16 fact, sh_fact1;
    Word16 *ptrs;

    if(parcor0 > 0) {
        mu      = mult_r(parcor0, GAMMA3_PLUS);
        /* GAMMA3_PLUS < 0.5 */
        sh_fact1 = 15;                   /* sh_fact + 1 */
        fact     = (Word16)0x4000;       /* 2**sh_fact */
        L_fact   = (Word32)0x00004000L;
    }
    else {
        mu       = mult_r(parcor0, GAMMA3_MINUS);
        /* GAMMA3_MINUS < 0.9375 */
        sh_fact1 = 12;                   /* sh_fact + 1 */
        fact     = (Word16)0x0800;       /* 2**sh_fact */
        L_fact   = (Word32)0x00000800L;
    }

    temp = sub(1, abs_s(mu));
    mu2  = add(32767, temp);    /* 2**15 (1 - |mu|) */
    ga   = div_s(fact, mu2);    /* 2**sh_fact / (1 - |mu|) */

    ptrs = sig_in;     /* points on sig_in(-1) */
    mu   = shr(mu, 1);          /* to avoid overflows   */

    for(n=0; n<L_SUBFR; n++) {
        temp   = *ptrs++;
        L_temp = L_deposit_l(*ptrs);
        L_acc  = L_shl(L_temp, 15);         /* sig_in(n) * 2**15 */
        L_temp = L_mac(L_acc, mu, temp);
        L_temp = L_add(L_temp, 0x00004000L);
        temp   = extract_l(L_shr(L_temp,15));
        /* ga x temp x 2 with rounding */
        L_temp = L_add(L_mult(temp, ga),L_fact);
        L_temp = L_shr(L_temp, sh_fact1); /* mult. temp x ga */
        sig_out[n] = sature(L_temp);
    }
    return;
}

/*----------------------------------------------------------------------------
 *   scale_st  - control of the subframe gain
 *   gain[n] = AGC_FAC * gain[n-1] + (1 - AGC_FAC) g_in/g_out
 *----------------------------------------------------------------------------
 */
static void scale_st(
 Word16 *sig_in,     /* input : postfilter input signal */
 Word16 *sig_out,    /* in/out: postfilter output signal */
 Word16 *gain_prec   /* in/out: last value of gain for subframe */
)
{

    int i;
    Word16 scal_in, scal_out;
    Word32 L_acc, L_temp;
    Word16 s_g_in, s_g_out, temp, sh_g0, g0;
    Word16 gain;

    /* compute input gain */
    L_acc = 0L;
    for(i=0; i<L_SUBFR; i++) {
        L_temp  = L_abs(L_deposit_l(sig_in[i]));
        L_acc   = L_add(L_acc, L_temp);
    }

    if(L_acc == 0L) {
        g0 = 0;
    }
    else {
        scal_in = norm_l(L_acc);
        L_acc   = L_shl(L_acc, scal_in);
        s_g_in  = extract_h(L_acc);    /* normalized */

        /* Compute output gain */
        L_acc = 0L;
        for(i=0; i<L_SUBFR; i++) {
            L_temp  = L_abs(L_deposit_l(sig_out[i]));
            L_acc   = L_add(L_acc, L_temp);
        }
        if(L_acc == 0L) {
            *gain_prec = 0;
            return;
        }
        scal_out = norm_l(L_acc);
        L_acc    = L_shl(L_acc, scal_out);
        s_g_out  = extract_h(L_acc);  /* normalized */

        sh_g0    = add(scal_in, 1);
        sh_g0    = sub(sh_g0, scal_out);    /* scal_in - scal_out + 1 */
        if(sub(s_g_in ,s_g_out)<0) {
            g0 = div_s(s_g_in, s_g_out);    /* s_g_in/s_g_out in Q15 */
        }
        else {
            temp  = sub(s_g_in, s_g_out);   /* sufficient since normalized */
            g0    = shr(div_s(temp, s_g_out), 1);
            g0    = add(g0, (Word16)0x4000);/* s_g_in/s_g_out in Q14 */
            sh_g0 = sub(sh_g0, 1);
        }
        /* L_gain_in/L_gain_out in Q14              */
        /* overflows if L_gain_in > 2 * L_gain_out  */
        g0 = shr(g0, sh_g0);        /* sh_g0 may be >0, <0, or =0 */
        g0 = mult_r(g0, AGC_FAC1);  /* L_gain_in/L_gain_out * AGC_FAC1      */

    }

    /* gain(n) = AGC_FAC gain(n-1) + AGC_FAC1 gain_in/gain_out          */
    /* sig_out(n) = gain(n) sig_out(n)                                  */
    gain = *gain_prec;
    for(i=0; i<L_SUBFR; i++) {
        temp = mult_r(AGC_FAC, gain);
        gain = add(temp, g0);            /* in Q14 */
        L_temp = L_mult(gain, sig_out[i]);
        L_temp = L_shl(L_temp, 1);
        sig_out[i] = round(L_temp);
    }
    *gain_prec = gain;
    return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线视频一区二区三区| 精品久久五月天| 亚洲欧美日韩在线不卡| 91在线视频播放地址| 自拍偷拍国产亚洲| 在线欧美日韩国产| 亚洲成人一区二区在线观看| 欧美精品 国产精品| 美日韩一级片在线观看| 欧美sm极限捆绑bd| 成人免费毛片嘿嘿连载视频| 日韩伦理av电影| 在线观看欧美日本| 免费成人美女在线观看| 国产视频亚洲色图| 色综合咪咪久久| 日韩不卡手机在线v区| 欧美mv日韩mv| gogogo免费视频观看亚洲一| 亚洲精品成人精品456| 91精品国产综合久久久久久久久久| 麻豆国产精品视频| 中文字幕一区在线观看| 91麻豆精品国产91久久久久久| 麻豆精品视频在线观看免费| 中文字幕乱码一区二区免费| 欧美日韩国产美女| 国内精品免费在线观看| 中文欧美字幕免费| 欧美三级蜜桃2在线观看| 精品一区二区三区在线播放视频 | 1000部国产精品成人观看| 色综合久久九月婷婷色综合| 免费观看一级欧美片| 国产视频在线观看一区二区三区| 一本色道久久加勒比精品| 麻豆成人免费电影| 亚洲欧美激情一区二区| 国产亚洲午夜高清国产拍精品| 91色porny| 国产成人在线视频免费播放| 亚洲成a天堂v人片| 国产免费久久精品| 日韩美一区二区三区| 色偷偷久久人人79超碰人人澡| 乱一区二区av| 亚洲国产精品自拍| 中文字幕一区二区在线观看 | 视频一区视频二区中文| 中文字幕在线不卡一区| 精品国产91亚洲一区二区三区婷婷| 一本久久a久久精品亚洲| 国产在线播放一区| 日本午夜一区二区| 亚洲一区二区三区四区在线免费观看 | 久久久久久免费毛片精品| 欧美日韩综合在线| 色伊人久久综合中文字幕| 国产一区二区日韩精品| 免费在线成人网| 一二三区精品视频| 亚洲日本乱码在线观看| 国产精品污网站| 久久久久亚洲蜜桃| 久久综合九色欧美综合狠狠| 欧美日韩高清一区二区| 精品视频在线免费观看| 欧美在线你懂得| 色8久久精品久久久久久蜜| 不卡的电影网站| 国产精品综合在线视频| 国内精品久久久久影院一蜜桃| 日产国产高清一区二区三区| 亚洲一区二区视频| 亚洲高清三级视频| 天堂成人国产精品一区| 丝袜诱惑亚洲看片| 蜜桃精品视频在线观看| 青草av.久久免费一区| 麻豆精品一区二区综合av| 琪琪一区二区三区| 精品一区二区在线观看| 国精产品一区一区三区mba桃花| 日本va欧美va精品| 欧美大片在线观看| 91麻豆精品91久久久久同性| 亚洲精品国产视频| 2023国产精品自拍| 欧美不卡视频一区| 久久伊人蜜桃av一区二区| 久久久久一区二区三区四区| 亚洲国产精品成人综合色在线婷婷 | 亚洲一区二区高清| 亚洲成a人v欧美综合天堂| 日韩av一区二区在线影视| 久久精品国产久精国产爱| 国内精品嫩模私拍在线| 成人午夜电影小说| 91电影在线观看| 在线成人高清不卡| 日韩欧美三级在线| 中文字幕av免费专区久久| 亚洲人成亚洲人成在线观看图片 | 国产精品三级av在线播放| 亚洲欧洲综合另类在线| 午夜一区二区三区视频| 毛片av中文字幕一区二区| 国产91在线观看| 欧美亚男人的天堂| 亚洲精品一线二线三线无人区| 中文字幕av不卡| 亚洲国产日韩在线一区模特 | 久久久亚洲精品一区二区三区| 国产精品国产精品国产专区不蜜| 亚洲精品视频在线观看免费| 麻豆精品国产传媒mv男同| 成人动漫视频在线| 91精品久久久久久久99蜜桃 | 视频在线观看一区| 国产精品一品视频| 欧美日韩一区二区三区在线| 欧美xxxx老人做受| 一区二区三区资源| 国产精品一区在线| 精品视频123区在线观看| 久久亚洲综合色一区二区三区| **性色生活片久久毛片| 蜜臀精品久久久久久蜜臀| 色中色一区二区| 精品久久久久香蕉网| 亚洲国产欧美日韩另类综合| 国产成a人亚洲精| 91精品蜜臀在线一区尤物| 亚洲视频免费在线| 国模大尺度一区二区三区| 欧美精品第一页| 亚洲免费三区一区二区| 国产美女视频一区| 91精品国产乱| 一区二区三区精品久久久| 高潮精品一区videoshd| 欧美xxxxxxxxx| 手机精品视频在线观看| 在线观看日韩高清av| 中文字幕免费不卡| 国产伦精品一区二区三区免费| 欧美裸体bbwbbwbbw| 亚洲欧洲制服丝袜| jiyouzz国产精品久久| 久久婷婷成人综合色| 久久99久久久欧美国产| 9191久久久久久久久久久| 亚洲精品成人在线| 91视视频在线直接观看在线看网页在线看 | 欧美精品亚洲一区二区在线播放| 亚洲欧洲国产日韩| 成人一道本在线| 久久久91精品国产一区二区精品| 奇米综合一区二区三区精品视频| 欧美日韩高清一区二区不卡| 亚洲乱码国产乱码精品精的特点 | 久久99精品国产麻豆不卡| 884aa四虎影成人精品一区| 亚洲va国产va欧美va观看| 欧美亚洲日本国产| 伊人一区二区三区| 色噜噜狠狠一区二区三区果冻| 国产精品久久久久影院老司| 成人v精品蜜桃久久一区| 国产精品狼人久久影院观看方式| 大胆欧美人体老妇| 国产三级一区二区三区| 成人性生交大片免费| 国产精品成人午夜| 91免费视频大全| 日本aⅴ免费视频一区二区三区 | 成人福利视频在线看| 久久久精品黄色| 国产69精品久久久久毛片| 国产午夜精品一区二区| 丁香婷婷深情五月亚洲| 国产人伦精品一区二区| 播五月开心婷婷综合| 亚洲精品乱码久久久久久久久| 在线视频中文字幕一区二区| 午夜国产不卡在线观看视频| 欧美一区二区视频在线观看2022| 日本最新不卡在线| 国产亚洲成年网址在线观看| 夫妻av一区二区| 亚洲欧洲综合另类在线| 欧美日本精品一区二区三区| 欧美aⅴ一区二区三区视频| 久久一日本道色综合| aa级大片欧美| 婷婷久久综合九色国产成人 | 久久男人中文字幕资源站| 国产91精品欧美| 一区二区三区精品视频| 欧美一区二区人人喊爽|