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

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

?? ilbc_decoder.java

?? java的ilbc語音編碼器,實現了其全部功能
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
			       int arlength)/* (i) dimension of data array */
    {
	int i;
	float bestcrit,crit;
	int index;

	crit = array[0] - value;
	bestcrit = crit * crit;
	index = 0;
	for (i = 1; i < arlength; i++) {
	    crit = array[i] - value;
	    crit = crit * crit;

	    if (crit < bestcrit) {
		bestcrit = crit;
		index = i;
	    }
	}
	return index;
    }

    /*----------------------------------------------------------------*
     * compute cross correlation between sequences
     *---------------------------------------------------------------*/

    public void mycorr1(
		 float corr[],    /* (o) correlation of seq1 and seq2 */
		 int corr_idx,
		 float seq1[],    /* (i) first sequence */
		 int seq1_idx,
		 int dim1,           /* (i) dimension first seq1 */
		 float seq2[],  /* (i) second sequence */
		 int seq2_idx,
		 int dim2)        /* (i) dimension seq2 */
    {
	int i,j;

// 	System.out.println("longueur 1 : " + seq1.length);
// 	System.out.println("distance 1 : " + seq1_idx);
// 	System.out.println("longueur 2 : " + seq2.length);
// 	System.out.println("distance 2 : " + seq2_idx);

// 	System.out.println("dimensions : " + dim1 + " et " + dim2);

// BUG in ILBC ???

	for (i=0; i<=dim1-dim2; i++) {
	    if ((corr_idx+i) < corr.length)
		corr[corr_idx+i]=0.0f;
	    for (j=0; j<dim2; j++) {
		corr[corr_idx+i] += seq1[seq1_idx+i+j] * seq2[seq2_idx+j];
	    }
	}
    }

    /*----------------------------------------------------------------*
     * upsample finite array assuming zeros outside bounds
     *---------------------------------------------------------------*/

    public void enh_upsample(
			  float useq1[],   /* (o) upsampled output sequence */
			  float seq1[],/* (i) unupsampled sequence */
			  int dim1,       /* (i) dimension seq1 */
			  int hfl)         /* (i) polyphase filter length=2*hfl+1 */
    {
	//	float *pu,*ps;
	int pu, ps;
	int i,j,k,q,filterlength,hfl2;
	int [] polyp = new int[ilbc_constants.ENH_UPS0]; /* pointers to
					 polyphase columns */
	//	const float *pp;
	int pp;

	/* define pointers for filter */

	filterlength=2*hfl+1;

	if ( filterlength > dim1 ) {
	    hfl2=(int) (dim1/2);
	    for (j=0; j<ilbc_constants.ENH_UPS0; j++) {
		polyp[j]=j*filterlength+hfl-hfl2;
	    }
	    hfl=hfl2;
	    filterlength=2*hfl+1;
	}
	else {
	    for (j=0; j<ilbc_constants.ENH_UPS0; j++) {
		polyp[j]=j*filterlength;
	    }
	}

	/* filtering: filter overhangs left side of sequence */

	//	pu=useq1;
	pu = 0;
	for (i=hfl; i<filterlength; i++) {
	    for (j=0; j<ilbc_constants.ENH_UPS0; j++) {
		//		*pu=0.0f;
		useq1[pu] = 0.0f;
		//		pp = polyp[j];
		pp = polyp[j];
		//		ps = seq1+i;
		ps = i;
		for (k=0; k<=i; k++) {
		    useq1[pu] += seq1[ps] * ilbc_constants.polyphaserTbl[pp];
		    ps--;
		    pp++;
		}
		pu++;
	    }
	}

	/* filtering: simple convolution=inner products */

	for (i=filterlength; i<dim1; i++) {
		for (j=0;j < ilbc_constants.ENH_UPS0; j++){
		    //		    *pu=0.0f;
		    useq1[pu] = 0.0f;
		    //		    pp = polyp[j];
		    pp = polyp[j];
		    //		    ps = seq1+i;
		    ps = i;
		    for (k=0; k<filterlength; k++) {
			//			*pu += *ps-- * *pp++;
			useq1[pu] += seq1[ps] * ilbc_constants.polyphaserTbl[pp];
			ps--;
			pp++;
		    }
		    pu++;
		}
	}

	/* filtering: filter overhangs right side of sequence */

	for (q=1; q<=hfl; q++) {
	    for (j=0; j<ilbc_constants.ENH_UPS0; j++) {
		//		*pu=0.0f;
		useq1[pu] = 0.0f;
		//		pp = polyp[j]+q;
		pp = polyp[j]+q;
		//		ps = seq1+dim1-1;
		ps = dim1 - 1;
		for (k=0; k<filterlength-q; k++) {
		    useq1[pu] += seq1[ps] * ilbc_constants.polyphaserTbl[pp];
		    ps--;
		    pp++;
		    //		    *pu += *ps-- * *pp++;
		}
		pu++;
	    }
	}
    }


    /*----------------------------------------------------------------*
     * find segment starting near idata+estSegPos that has highest
     * correlation with idata+centerStartPos through
     * idata+centerStartPos+ENH_BLOCKL-1 segment is found at a
     * resolution of ENH_UPSO times the original of the original
     * sampling rate
     *---------------------------------------------------------------*/

    public float refiner(
		 float seg[],         /* (o) segment array */
		 int seg_idx,
		 float idata[],       /* (i) original data buffer */
		 int idatal,         /* (i) dimension of idata */
		 int centerStartPos, /* (i) beginning center segment */
		 float estSegPos,/* (i) estimated beginning other segment */
		 float period)    /* (i) estimated pitch period */
    {
	int estSegPosRounded,searchSegStartPos,searchSegEndPos,corrdim;
	int tloc,tloc2,i,st,en,fraction;
	float [] vect = new float[ilbc_constants.ENH_VECTL];
	float [] corrVec = new float[ilbc_constants.ENH_CORRDIM];
	float maxv;
	float [] corrVecUps = new float[ilbc_constants.ENH_CORRDIM*ilbc_constants.ENH_UPS0];
	float updStartPos = 0.0f;

	/* defining array bounds */

	estSegPosRounded=(int)(estSegPos - 0.5);

	searchSegStartPos=estSegPosRounded-ilbc_constants.ENH_SLOP;

	if (searchSegStartPos<0) {
	    searchSegStartPos=0;
	}
	searchSegEndPos=estSegPosRounded+ilbc_constants.ENH_SLOP;

	if (searchSegEndPos+ilbc_constants.ENH_BLOCKL >= idatal) {
	    searchSegEndPos=idatal-ilbc_constants.ENH_BLOCKL-1;
	}
	corrdim=searchSegEndPos-searchSegStartPos+1;

	/* compute upsampled correlation (corr33) and find
	   location of max */
// 	System.out.println("appel 1");
	mycorr1(corrVec, 0, idata, searchSegStartPos,
		corrdim+ilbc_constants.ENH_BLOCKL-1,
		idata,centerStartPos,ilbc_constants.ENH_BLOCKL);
	enh_upsample(corrVecUps,corrVec,corrdim,ilbc_constants.ENH_FL0);
	tloc=0; maxv=corrVecUps[0];
	for (i=1; i<ilbc_constants.ENH_UPS0*corrdim; i++) {

	    if (corrVecUps[i]>maxv) {
		tloc=i;
		maxv=corrVecUps[i];
	    }
	}

	/* make vector can be upsampled without ever running outside
	   bounds */

	updStartPos= (float)searchSegStartPos +
	    (float)tloc/(float)ilbc_constants.ENH_UPS0+(float)1.0f;
	tloc2=(int)(tloc/ilbc_constants.ENH_UPS0);

	if (tloc>tloc2*ilbc_constants.ENH_UPS0) {
	    tloc2++;
	}
	st=searchSegStartPos+tloc2-ilbc_constants.ENH_FL0;

	if (st<0) {
	    for (int li = 0; li < -st; li++)
		vect[li] = 0.0f;
// 	    memset(vect,0,-st*sizeof(float));
	    System.arraycopy(idata, 0, vect, -st, (ilbc_constants.ENH_VECTL+st));
// 	    memcpy(&vect[-st],idata, (ilbc_constants.ENH_VECTL+st)*sizeof(float));
	}
	else {
	    en=st+ilbc_constants.ENH_VECTL;

	    if (en>idatal) {
		System.arraycopy(idata, st, vect, 0, (ilbc_constants.ENH_VECTL-(en-idatal)));
// 		memcpy(vect, &idata[st],
// 		       (ilbc_constants.ENH_VECTL-(en-idatal))*sizeof(float));
		for (int li = 0; li < en-idatal; li++)
		    vect[ilbc_constants.ENH_VECTL-(en-idatal)+li] = 0.0f;
// 		memset(&vect[ilbc_constants.ENH_VECTL-(en-idatal)], 0,
// 		       (en-idatal)*sizeof(float));
	    }
	    else {
		System.arraycopy(idata, st, vect, 0, ilbc_constants.ENH_VECTL);
// 		memcpy(vect, &idata[st], ilbc_constants.ENH_VECTL*sizeof(float));
	    }
	}
	fraction=tloc2*ilbc_constants.ENH_UPS0-tloc;

	/* compute the segment (this is actually a convolution) */

// 	System.out.println("appel 2");
// 	System.out.println("longueur 1 : " + vect.length);
// 	System.out.println("distance 1 : " + 0);
// 	System.out.println("longueur 2 : " + ilbc_constants.polyphaserTbl.length);
// 	System.out.println("distance 2 : " + (2*ilbc_constants.ENH_FL0+1)*fraction);
// 	System.out.println("dimension 1 : " + ilbc_constants.ENH_VECTL);
// 	System.out.println("dimension 2 : " + (2 * ilbc_constants.ENH_FL0+1));
// 	System.out.println("correlations de dimension " + seg.length);
	mycorr1(seg, seg_idx, vect, 0, ilbc_constants.ENH_VECTL,
		ilbc_constants.polyphaserTbl,
		(2*ilbc_constants.ENH_FL0+1)*fraction,
		2*ilbc_constants.ENH_FL0+1);

	return updStartPos;
    }

    /*----------------------------------------------------------------*
     * find the smoothed output data
     *---------------------------------------------------------------*/

    public void smath(
	       float odata[],   /* (o) smoothed output */
	       int odata_idx,
	       float sseq[],/* (i) said second sequence of waveforms */
	       int hl,         /* (i) 2*hl+1 is sseq dimension */
	       float alpha0)/* (i) max smoothing energy fraction */
    {
	int i,k;
	float w00,w10,w11,A,B,C,err,errs;
	float [] surround = new float[ilbc_constants.BLOCKL_MAX]; /* shape contributed by other than
				       current */
	float [] wt = new float[2*ilbc_constants.ENH_HL+1];       /* waveform weighting to get
				       surround shape */
	float denom;
	int psseq;

	/* create shape of contribution from all waveforms except the
	   current one */

	for (i=1; i<=2*hl+1; i++) {
	    wt[i-1] = (float)0.5*(1 - (float)(float)Math.cos(2*ilbc_constants.PI*i/(2*hl+2)));
	}
	wt[hl]=0.0f; /* for clarity, not used */
	for (i=0; i<ilbc_constants.ENH_BLOCKL; i++) {
	    surround[i]=sseq[i]*wt[0];
	}
	for (k=1; k<hl; k++) {
	    psseq=k*ilbc_constants.ENH_BLOCKL;
	    for(i=0;i<ilbc_constants.ENH_BLOCKL; i++) {
		surround[i]+=sseq[psseq+i]*wt[k];
	    }
	    }
	for (k=hl+1; k<=2*hl; k++) {
	    psseq=k*ilbc_constants.ENH_BLOCKL;
	    for(i=0;i<ilbc_constants.ENH_BLOCKL; i++) {
		surround[i]+=sseq[psseq+i]*wt[k];
	    }
	}

	/* compute some inner products */

	w00 = w10 = w11 = 0.0f;
	psseq=hl*ilbc_constants.ENH_BLOCKL; /* current block  */
	for (i=0; i<ilbc_constants.ENH_BLOCKL;i++) {
	    w00+=sseq[psseq+i]*sseq[psseq+i];
	    w11+=surround[i]*surround[i];
	    w10+=surround[i]*sseq[psseq+i];
	}

	if ((float)Math.abs(w11) < 1.0f) {
	    w11=1.0f;
	}
	C = (float)(float)Math.sqrt( w00/w11);

	/* first try enhancement without power-constraint */

	errs=0.0f;
	psseq=hl*ilbc_constants.ENH_BLOCKL;
	for (i=0; i<ilbc_constants.ENH_BLOCKL; i++) {
	    odata[odata_idx+i]=C*surround[i];
	    err=sseq[psseq+i]-odata[odata_idx+i];
	    errs+=err*err;
	}

	/* if constraint violated by first try, add constraint */

	if (errs > alpha0 * w00) {
	    if ( w00 < 1) {
		w00=1;
	    }
	    denom = (w11*w00-w10*w10)/(w00*w00);

	    if (denom > 0.0001f) { /* eliminates numerical problems
				     for if smooth */
		A = (float)(float)Math.sqrt( (alpha0- alpha0*alpha0/4)/denom);
		B = -alpha0/2 - A * w10/w00;
		B = B+1;
	    }
	    else { /* essentially no difference between cycles;
		      smoothing not needed */
		A= 0.0f;
		B= 1.0f;
	    }

	    /* create smoothed sequence */

	    psseq=hl*ilbc_constants.ENH_BLOCKL;
	    for (i=0; i<ilbc_constants.ENH_BLOCKL; i++) {
		odata[odata_idx + i]=A*surround[i]+B*sseq[psseq+i];
	    }
	}
    }

    /*----------------------------------------------------------------*
     * get the pitch-synchronous sample sequence
     *---------------------------------------------------------------*/

    public void getsseq(
		 float sseq[],    /* (o) the pitch-synchronous sequence */
		 float idata[],       /* (i) original data */
		 int idatal,         /* (i) dimension of data */
		 int centerStartPos, /* (i) where current block starts */
		 float period[],      /* (i) rough-pitch-period array */
		 float plocs[],       /* (i) where periods of period array
					are taken */
		 int periodl,    /* (i) dimension period array */
		 int hl)              /* (i) 2*hl+1 is the number of sequences */
    {
	int i,centerEndPos,q;
	float [] blockStartPos = new float[2*ilbc_constants.ENH_HL+1];
	int [] lagBlock = new int[2*ilbc_constants.ENH_HL+1];
	float [] plocs2 = new float[ilbc_constants.ENH_PLOCSL];
	//	float *psseq;
	int psseq;

	centerEndPos=centerStartPos+ilbc_constants.ENH_BLOCKL-1;

	/* present */

	lagBlock[hl] = NearestNeighbor(plocs,
			(float)0.5*(centerStartPos+centerEndPos),periodl);

	blockStartPos[hl]=(float)centerStartPos;

	psseq=ilbc_constants.ENH_BLOCKL*hl;
// 	psseq=sseq+ENH_BLOCKL*hl;
	System.arraycopy(idata, centerStartPos, sseq, psseq, ilbc_constants.ENH_BLOCKL);
//	memcpy(psseq, idata+centerStartPos, ENH_BLOCKL*sizeof(float));

	/* past */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合一区二区| 美女在线一区二区| 亚洲精品成人悠悠色影视| 亚洲第一成年网| 国产成人综合在线| 色94色欧美sute亚洲线路二| 7777精品伊人久久久大香线蕉最新版| 91精品国产入口在线| 国产网红主播福利一区二区| 亚洲一区二区三区自拍| 国产一区二区视频在线| 日本丰满少妇一区二区三区| 日韩精品一区国产麻豆| 亚洲精品国产高清久久伦理二区| 美女尤物国产一区| 91成人网在线| 中文无字幕一区二区三区 | 一区二区三区精品视频在线| 自拍偷拍欧美激情| 韩国在线一区二区| 欧美剧在线免费观看网站| 欧美激情综合在线| 麻豆专区一区二区三区四区五区| 色哟哟精品一区| 中文字幕免费不卡| 国产一区二区三区在线观看免费| 欧美日韩精品一区二区| 国产精品家庭影院| 国内不卡的二区三区中文字幕| 色婷婷狠狠综合| 国产精品免费视频一区| 捆绑调教一区二区三区| 欧美视频日韩视频在线观看| 中文字幕一区av| 国产在线精品一区二区三区不卡| 欧美一区二区国产| 亚洲bt欧美bt精品777| 国产成人综合网| 精品久久久久久久久久久院品网 | 丁香五精品蜜臀久久久久99网站| 6080yy午夜一二三区久久| 成人欧美一区二区三区在线播放| 国产在线精品一区二区不卡了| 欧美精品久久天天躁| 一区二区三区免费| 欧美午夜影院一区| 亚洲精选视频免费看| 成人国产亚洲欧美成人综合网| 欧美草草影院在线视频| 美女视频一区二区三区| 日韩精品一区二区三区中文不卡| 秋霞av亚洲一区二区三| 欧美精品v国产精品v日韩精品| 亚洲综合色网站| 欧美日韩美女一区二区| 日韩成人午夜精品| 日韩一区二区电影| 精品一区二区在线视频| 在线精品视频一区二区三四| 亚洲视频每日更新| 色一情一伦一子一伦一区| 亚洲人成精品久久久久| 欧美日韩在线免费视频| 视频一区在线播放| 欧美电影免费观看高清完整版在线| 九九视频精品免费| 日本一区二区久久| 91视视频在线观看入口直接观看www| 亚洲欧美自拍偷拍| 欧美在线不卡视频| 青青草97国产精品免费观看| 日韩一区二区影院| 麻豆免费看一区二区三区| 久久精品亚洲麻豆av一区二区| jlzzjlzz欧美大全| 五月天国产精品| 久久精品亚洲精品国产欧美| 色999日韩国产欧美一区二区| 亚洲福利一二三区| 久久综合九色综合97婷婷| 粉嫩高潮美女一区二区三区| 亚洲欧美国产高清| 精品日韩99亚洲| 色综合一个色综合亚洲| 午夜精品免费在线| 精品国产免费人成在线观看| 国产精品1024久久| 亚洲欧美一区二区久久| 精品精品欲导航| 成人一区在线观看| 五月综合激情网| 久久久久久免费| 欧美午夜精品理论片a级按摩| 国产精品青草综合久久久久99| 欧美三级电影在线观看| 国产真实乱子伦精品视频| 亚洲国产综合色| 91精品国产入口| 91免费视频网| 激情图片小说一区| 亚洲一区二区三区四区五区中文 | 午夜视频久久久久久| 国产精品视频yy9299一区| 欧洲精品在线观看| 国产精品亚洲一区二区三区在线| 中文字幕五月欧美| 正在播放一区二区| 91丝袜国产在线播放| 国产精品综合视频| 偷偷要91色婷婷| 亚洲欧美综合色| 久久综合色鬼综合色| 欧美日韩成人综合在线一区二区| 成人av先锋影音| 国产福利不卡视频| 亚洲一级不卡视频| 久久精品夜色噜噜亚洲aⅴ| 日韩欧美三级在线| 欧美一级理论片| 欧美揉bbbbb揉bbbbb| 成人免费视频caoporn| 国产精品一区在线| 久久99精品久久久久久动态图| 日韩专区欧美专区| 一区二区三区毛片| 亚洲美女少妇撒尿| 国产色综合一区| 欧美一区二区三区精品| 一本一道久久a久久精品| 99久久久久免费精品国产| 国产精品99久久不卡二区| 麻豆精品在线视频| 蜜臀av性久久久久av蜜臀妖精| 日本一区二区三区dvd视频在线 | 欧美日韩国产综合一区二区三区| av激情成人网| 99久久国产免费看| 色婷婷综合久久久中文一区二区 | 2023国产精品| 久久午夜免费电影| 久久嫩草精品久久久久| 久久综合久久鬼色中文字| 亚洲三级免费电影| 日韩精品五月天| 国产福利一区在线观看| 在线视频一区二区三| 欧美大片一区二区三区| 亚洲欧洲av另类| 免费看精品久久片| 99视频超级精品| 欧美一区二区免费视频| 国产精品二三区| 日本欧美一区二区在线观看| 成人免费观看男女羞羞视频| 51精品秘密在线观看| 亚洲国产精品t66y| 蜜臀99久久精品久久久久久软件| 99精品国产热久久91蜜凸| 欧美一区二区不卡视频| 亚洲欧美日韩国产成人精品影院| 久久成人免费电影| 欧美在线三级电影| 国产婷婷精品av在线| 日韩av电影免费观看高清完整版 | 欧美日韩激情一区二区三区| 国产日韩欧美精品在线| 日韩成人午夜精品| 色婷婷久久久久swag精品| 欧美大尺度电影在线| 亚洲高清在线精品| 91丨porny丨中文| 国产农村妇女毛片精品久久麻豆| 偷拍与自拍一区| 在线免费亚洲电影| 国产精品久久久久一区二区三区共| 免费精品视频在线| 欧美日产在线观看| 亚洲精品国产第一综合99久久| 国v精品久久久网| 久久伊人中文字幕| 免费观看在线综合| 欧美日韩在线电影| 一区二区三区四区亚洲| 成人av电影免费在线播放| 久久久久久久久久电影| 久久精品噜噜噜成人88aⅴ | 色综合中文字幕| 亚洲欧洲日韩一区二区三区| 国产成人av福利| 国产亚洲精品资源在线26u| 久久国产三级精品| 日韩女优av电影| 久久99国产精品麻豆| 日韩免费性生活视频播放| 免费高清视频精品| 日韩精品一区二区三区视频播放 | 性欧美大战久久久久久久久| 欧美午夜精品理论片a级按摩| 亚洲精品国久久99热| 色综合激情五月|