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

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

?? openlpc.fixed.c

?? LPC10 2.4Kpbs 語音壓縮定點運算C語言源程序OPENLPC
?? C
?? 第 1 頁 / 共 3 頁
字號:
        xv40 = xv41; 	
#ifdef FAST_FILTERS        
        xv41 = ((u * 3) >> 1) +((u * 43) >> 9);		/* e(n)	, add 4 dB to compensate attenuation */
        yv40 = yv41; 
        yv41 = ((yv40 * 11) >> 4) + ((yv40 * 7) >> 10) 	 /* u(n) */
            + ((xv41 * 23) >> 5) + ((xv41 * 7) >> 11)
            - ((xv40 * 11) >> 4) - ((xv40 * 7) >> 10);
#else
        xv41 = fixmul32(u, ftofix32(1.584));
        yv40 = yv41; 
        yv41 = fixmul32(ftofix32(TAU/(1.0f+RHO+TAU)), yv40) 
            + fixmul32(ftofix32((RHO+TAU)/(1.0f+RHO+TAU)), xv41)
            - fixmul32(ftofix32(TAU/(1.0f+RHO+TAU)), xv40);
#endif
        u = yv41;
        
        st->s[j] = u;
    }
    st->xv2[0] = xv20;
    st->xv2[1] = xv21;
    st->yv2[0] = yv20;
    st->yv2[1] = yv21;
    st->xv4[0] = xv40;
    st->xv4[1] = xv41;
    st->yv4[0] = yv40;
    st->yv4[1] = yv41;
#endif
    
    /* operate windowing s[] -> w[] */
    
    for (i=0; i < st->buflen; i++)
        st->w[i] = fixmul32(st->s[i], st->h[i]);
    
    /* compute LPC coeff. from autocorrelation (first 11 values) of windowed data */
    auto_correl2(st->w, st->buflen, st->r);
    durbin(st->r, LPC_FILTORDER, k, &gain);
    
    /* calculate pitch */
    calc_pitch(st->y, st->framelen, &per1);                 /* first 2/3 of buffer */ 
    calc_pitch(st->y + st->buflen - st->framelen, st->framelen, &per2); /* last 2/3 of buffer */
    if(per1 > 0 && per2 > 0)
        per = (per1+per2) / 2;
    else if(per1 > 0)
        per = per1;
    else if(per2 > 0)
        per = per2;
    else
        per = 0;

    /* logarithmic q.: 0 = MINPER, 256 = MAXPER */
    parm[0] = (unsigned char)(per == 0? 0 : (unsigned char)fixtoi32(fixdiv32(fixlog32(fixdiv32(per, itofix32(REAL_MINPER))), logmaxminper) * 256));

#ifdef LINEAR_G_Q
    i = fixtoi32(gain * 128);
    if(i > 255)
        i = 255;
#else
    i = fixtoi32(256 * fixlog32(itofix32(1) + fixmul32(ftofix32((2.718-1.f)/10.f), gain))); /* deriv = 5.82 allowing to reserve 2 bits */
    if(i > 255) i = 255;	 /* reached when gain = 10 */
    i = (i+2) & 0xfc;
#endif
    
    parm[1] = (unsigned char)i;
    
    if(per1 > 0)
        parm[1] |= 1;
    if(per2 > 0)
        parm[1] |= 2;
    
    for(j=2; j < sizeofparm; j++)
        parm[j] = 0;
    
    for (i=0; i < LPC_FILTORDER; i++) {
        int bitamount = parambits[i];
        int bitc8 = 8-bitamount;
        int q = (1 << bitc8);  /* quantum: 1, 2, 4... */
        fixed32 u = k[i+1];
        int iu;
        
#ifdef ARCSIN_Q
        if(i < 2) u = fixmul32(fixasin32(u), ftofix32(2.f/M_PI));
#endif
        u *= 127;
        if(u < 0) 
            u += ftofix32(0.6) * q;
        else
            u += ftofix32(0.4) * q; /* highly empirical! */
        
        iu = fixtoi32(u);
        iu = iu & 0xff; /* keep only 8 bits */
        
        /* make room at the left of parm array shifting left */
        for(j=sizeofparm-1; j >= 3; j--) {
            parm[j] = (unsigned char)((parm[j] << bitamount) | (parm[j-1] >> bitc8));
        }
        parm[2] = (unsigned char)((parm[2] << bitamount) | (iu >> bitc8)); /* parm[2] */
    }
    bcopy(st->s + st->framelen, st->s, (st->buflen - st->framelen)*sizeof(st->s[0]));
    bcopy(st->y + st->framelen, st->y, (st->buflen - st->framelen)*sizeof(st->y[0]));
    
    return sizeofparm;
}

openlpc_decoder_state *create_openlpc_decoder_state(void)
{
    openlpc_decoder_state *state;
    
    state = (openlpc_decoder_state *)malloc(sizeof(openlpc_decoder_state));
    
    return state;
}

void init_openlpc_decoder_state(openlpc_decoder_state *st, int framelen)
{
    int i, j;
    
    st->Oldper = 0;
    st->OldG = 0;
    for (i = 0; i <= LPC_FILTORDER; i++) {
        st->Oldk[i] = 0;
        st->bp[i] = 0;
    }
    st->pitchctr = 0;
    st->exc = 0;
    logmaxminper = fixlog32(fixdiv32(itofix32(MAXPER), itofix32(MINPER)));
    
    for(i=0, j=0; i<sizeof(parambits) / sizeof(parambits[0]); i++) {
        j += parambits[i];
    }
    sizeofparm = (j + 7) / 8 + 2;
    
    /* test for a valid frame len? */
    st->framelen = framelen;
    st->buflen = framelen * 3 / 2;
    st->gainadj = fixsqrt32(itofix32(3) / st->buflen);
}

#define MIDTAP 1
#define MAXTAP 4
static short y[MAXTAP+1]={-21161, -8478, 30892,-10216, 16950};
static int j=MIDTAP, k=MAXTAP;

__inline int random16 (void)
{
    int the_random;
    
    y[k] = (short)(y[k] + y[j]);
    
    the_random = y[k];
    k--;
    if (k < 0) k = MAXTAP;
    j--;
    if (j < 0) j = MAXTAP;
    
    return(the_random);
}

/* LPC Synthesis (decoding) */

int openlpc_decode(unsigned char *parm, short *buf, openlpc_decoder_state *st)
{
    int i, j, flen=st->framelen;
    fixed32 per, gain, k[LPC_FILTORDER+1];
    fixed32 u, NewG, Ginc, Newper, perinc;
    fixed32 Newk[LPC_FILTORDER+1], kinc[LPC_FILTORDER+1];
    fixed32 gainadj;
    int hframe;
    fixed32 hper[2];
    int ii;
    fixed32 bp0, bp1, bp2, bp3, bp4, bp5, bp6, bp7, bp8, bp9, bp10;
    fixed32 stgain;
    
    bp0 = st->bp[0];
    bp1 = st->bp[1];
    bp2 = st->bp[2];
    bp3 = st->bp[3];
    bp4 = st->bp[4];
    bp5 = st->bp[5];
    bp6 = st->bp[6];
    bp7 = st->bp[7];
    bp8 = st->bp[8];
    bp9 = st->bp[9];
    bp10 = st->bp[10];
    stgain = st->gainadj;
    
    per = itofix32(parm[0]);
    
    per = (fixed32)(per == 0? 0: REAL_MINPER * fixexp32(fixmul32(per/256, logmaxminper)));
    
    hper[0] = hper[1] = per;
    
    if((parm[1] & 0x1) == 0) hper[0] = 0;
    if((parm[1] & 0x2) == 0) hper[1] = 0;
    
#ifdef LINEAR_G_Q
    gain = itofix32(parm[1]) / 128;
#else
    gain = itofix32(parm[1]) / 256;
    gain = fixdiv32((fixexp32(gain) - itofix32(1)), ftofix32((2.718-1.f)/10));
#endif
    
    k[0] = 0;
    
    for (i=LPC_FILTORDER-1; i >= 0; i--) {
        int bitamount = parambits[i];
        int bitc8 = 8-bitamount;
        /* casting to char should set the sign properly */
        char c = (char)(parm[2] << bitc8);
        
        for(j=2; j<sizeofparm; j++)
            parm[j] = (unsigned char)((parm[j] >> bitamount) | (parm[j+1] << bitc8)); 
        
        k[i+1] = itofix32(c) / 128;
#ifdef ARCSIN_Q
        if(i<2) k[i+1] = fixsin32(fixmul32(ftofix32(M_PI/2), k[i+1]));
#endif
    }
    
    /* k[] are the same in the two subframes */
    for (i=1; i <= LPC_FILTORDER; i++) {
        Newk[i] = st->Oldk[i];
        kinc[i] = (k[i] - st->Oldk[i]) / flen;
    }
    
    /* Loop on two half frames */
    
    for(hframe=0, ii=0; hframe<2; hframe++) {
        
        Newper = st->Oldper;
        NewG = st->OldG;
        
        Ginc = (gain - st->OldG) / (flen / 2);
        per = hper[hframe];
        
        if (per == 0) {			 /* if unvoiced */
            gainadj = stgain;
        } else {
            gainadj = fixsqrt32(per / st->buflen);
        }
        
        /* Interpolate period ONLY if both old and new subframes are voiced, gain and K always */ 
        
        if (st->Oldper != 0 && per != 0) {
            perinc = (per - st->Oldper) / (flen / 2);
        } else {
            perinc = 0; 
            Newper = per;
        }
        
        if (Newper == 0) st->pitchctr = 0;
        
        for (i=0; i < flen / 2; i++, ii++) {
            fixed32 kj;

            if (Newper == 0) {
                u = fixmul32((random16() << (PRECISION - 15 - 1)), fixmul32(NewG, gainadj)); 
            } else {			/* voiced: send a delta every per samples */
                /* triangular excitation */
                if (st->pitchctr == 0) {
                    st->exc = fixmul32(NewG, gainadj >> 2);
                    st->pitchctr = fixtoi32(Newper);
                } else {
                    st->exc -= fixmul32(fixdiv32(NewG, Newper), gainadj >> 1);
                    st->pitchctr--;
                }
                u = st->exc;
            }
            /* excitation */
            kj = Newk[10];
            u -= fixmul32(kj, bp9);
            bp10 = bp9 + fixmul32(kj, u);
            
            kj = Newk[9];
            u -= fixmul32(kj, bp8);
            bp9 = bp8 + fixmul32(kj, u);
            
            kj = Newk[8];
            u -= fixmul32(kj, bp7);
            bp8 = bp7 + fixmul32(kj, u);
            
            kj = Newk[7];
            u -= fixmul32(kj, bp6);
            bp7 = bp6 + fixmul32(kj, u);
            
            kj = Newk[6];
            u -= fixmul32(kj, bp5);
            bp6 = bp5 + fixmul32(kj, u);
            
            kj = Newk[5];
            u -= fixmul32(kj, bp4);
            bp5 = bp4 + fixmul32(kj, u);
            
            kj = Newk[4];
            u -= fixmul32(kj, bp3);
            bp4 = bp3 + fixmul32(kj, u);
            
            kj = Newk[3];
            u -= fixmul32(kj, bp2);
            bp3 = bp2 + fixmul32(kj, u);
            
            kj = Newk[2];
            u -= fixmul32(kj, bp1);
            bp2 = bp1 + fixmul32(kj, u);
            
            kj = Newk[1];
            u -= fixmul32(kj, bp0);
            bp1 = bp0 + fixmul32(kj, u);
            
            bp0 = u;
            
            if (u  < ftofix32(-0.9999)) {
                u = ftofix32(-0.9999);
            } else if (u > ftofix32(0.9999)) {
                u = ftofix32(0.9999);
            }
            buf[ii] = (short)(u >> (PRECISION - 15));
            
            Newper += perinc;
            NewG += Ginc;
            for (j=1; j <= LPC_FILTORDER; j++) Newk[j] += kinc[j];
            
        }
        
        st->Oldper = per;
        st->OldG = gain;
    }
    st->bp[0] = bp0;
    st->bp[1] = bp1;
    st->bp[2] = bp2;
    st->bp[3] = bp3;
    st->bp[4] = bp4;
    st->bp[5] = bp5;
    st->bp[6] = bp6;
    st->bp[7] = bp7;
    st->bp[8] = bp8;
    st->bp[9] = bp9;
    st->bp[10] = bp10;
    
    for (j=1; j <= LPC_FILTORDER; j++) st->Oldk[j] = k[j];
    
    return flen;
}

void destroy_openlpc_decoder_state(openlpc_decoder_state *st)
{
    if(st != NULL)
    {
        free(st);
        st = NULL;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品 日产精品 欧美精品| 精品伊人久久久久7777人| 亚洲综合色婷婷| 韩国三级中文字幕hd久久精品| 色婷婷精品久久二区二区蜜臂av| 欧美一级艳片视频免费观看| 亚洲精品乱码久久久久| 国产乱人伦精品一区二区在线观看 | 亚洲日本青草视频在线怡红院| 水野朝阳av一区二区三区| 色哟哟精品一区| 国产精品另类一区| 国产精品影视在线观看| 日韩一级高清毛片| 日本不卡视频一二三区| 在线亚洲免费视频| 中文字幕一区二| 成人av电影在线网| 久久婷婷国产综合精品青草| 麻豆久久一区二区| 欧美一级在线观看| 欧美aⅴ一区二区三区视频| 欧美图区在线视频| 亚洲1区2区3区4区| 欧美久久高跟鞋激| 日韩成人一区二区三区在线观看| 欧美色精品天天在线观看视频| 亚洲三级电影网站| 99国产精品99久久久久久| 国产精品高潮呻吟久久| www.亚洲激情.com| 亚洲人快播电影网| 在线视频国内一区二区| 亚洲一区视频在线观看视频| 欧美亚洲精品一区| 亚洲成a人片综合在线| 欧美另类z0zxhd电影| 日韩制服丝袜先锋影音| 91麻豆精品国产自产在线| 日本欧美在线观看| 日韩精品一区二区三区在线播放 | 成人免费毛片app| 国产精品丝袜久久久久久app| 国产成人在线看| 国产精品视频一二| 欧美日韩在线一区二区| 日韩黄色免费电影| 久久久精品黄色| 91在线视频免费观看| 一区二区在线看| 欧美一区二区不卡视频| 国产高清一区日本| 亚洲人成电影网站色mp4| 精品视频在线免费看| 热久久免费视频| 国产亲近乱来精品视频| 色香蕉久久蜜桃| 蜜臀va亚洲va欧美va天堂 | 91首页免费视频| 亚洲不卡在线观看| 精品福利在线导航| 色婷婷香蕉在线一区二区| 九色综合国产一区二区三区| 国产精品不卡在线| 91精品国产91久久综合桃花 | 欧美日韩久久不卡| 韩国欧美国产1区| 一区二区三区四区乱视频| 日韩欧美亚洲一区二区| 成人app软件下载大全免费| 婷婷丁香久久五月婷婷| 国产视频一区二区三区在线观看| 色av一区二区| 国产一区二区电影| 亚洲va欧美va人人爽| 中文字幕av一区二区三区| 91精品国产综合久久久久久漫画| 国产aⅴ综合色| 日韩不卡一二三区| 亚洲天堂网中文字| 精品999在线播放| 欧美精品粉嫩高潮一区二区| 成人av免费在线| 韩国成人在线视频| 日日欢夜夜爽一区| 亚洲伦理在线精品| 国产欧美日韩不卡| 日韩精品一区二区三区中文不卡| 欧美性猛交xxxx乱大交退制版| 国产99一区视频免费| 狠狠久久亚洲欧美| 久久狠狠亚洲综合| 天堂午夜影视日韩欧美一区二区| 国产精品毛片大码女人| 久久久不卡影院| 精品国产亚洲在线| 日韩视频一区在线观看| 欧美日韩国产综合草草| 一本在线高清不卡dvd| 成人丝袜视频网| 国产精品一二三四| 久久精品国产亚洲高清剧情介绍| 亚洲成人动漫一区| 午夜精品久久久久久久| 亚洲va国产va欧美va观看| 有坂深雪av一区二区精品| 亚洲美女精品一区| 一区二区三区在线视频观看58 | 2017欧美狠狠色| 日韩片之四级片| 日韩欧美一卡二卡| 欧美成人一级视频| xfplay精品久久| 久久午夜国产精品| 精品粉嫩aⅴ一区二区三区四区| 日韩视频一区二区| 久久婷婷综合激情| 中文文精品字幕一区二区| 国产精品拍天天在线| 最新国产精品久久精品| 亚洲欧美日韩在线| 亚洲图片欧美视频| 轻轻草成人在线| 国产乱码精品一区二区三| 丁香激情综合国产| 色综合久久中文字幕| 欧美色图片你懂的| 欧美福利一区二区| 在线电影院国产精品| 欧美不卡一二三| 国产精品福利在线播放| 夜夜嗨av一区二区三区中文字幕| 亚洲自拍偷拍图区| 青青国产91久久久久久| 国产精品一区不卡| 色呦呦国产精品| 欧美成人一区二区三区片免费| 国产精品网站导航| 亚洲va欧美va人人爽| 国产高清在线观看免费不卡| 日本高清成人免费播放| 欧美一区日韩一区| 亚洲国产成人一区二区三区| 一区二区三区欧美日| 免费成人av在线播放| 成人福利视频在线看| 欧美精品粉嫩高潮一区二区| 久久久久国产精品免费免费搜索| 亚洲女爱视频在线| 久久国产成人午夜av影院| 99久久99久久精品免费观看| 欧美人妖巨大在线| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲欧美一区二区三区极速播放| 视频一区二区欧美| av在线不卡网| 日韩欧美精品在线| 一区二区高清视频在线观看| 黄色资源网久久资源365| 在线观看网站黄不卡| 欧美国产日韩一二三区| 奇米精品一区二区三区在线观看 | 欧美人成免费网站| 国产精品久久久久久久裸模| 日韩中文字幕91| 色综合久久综合网| 中文字幕免费观看一区| 美女久久久精品| 欧美日韩成人激情| 亚洲免费在线电影| 豆国产96在线|亚洲| 日韩丝袜美女视频| 日韩高清在线观看| 91久久精品网| 亚洲色图欧美在线| 成人av网站在线观看免费| 2024国产精品| 久久99国产精品免费网站| 欧美色综合天天久久综合精品| 综合欧美一区二区三区| 成人理论电影网| 国产欧美视频一区二区三区| 久热成人在线视频| 91精品一区二区三区在线观看| 亚洲一级片在线观看| 色综合天天综合网国产成人综合天| 国产欧美一区二区三区网站| 国精产品一区一区三区mba视频 | 蜜臀国产一区二区三区在线播放| 色爱区综合激月婷婷| 亚洲激情在线激情| 91在线高清观看| 亚洲免费在线视频| 一本色道a无线码一区v| 亚洲天天做日日做天天谢日日欢| 91香蕉视频mp4| 伊人色综合久久天天| 在线欧美一区二区| 亚洲一二三专区| 在线播放一区二区三区|