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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ilbc_decoder.java

?? java的ilbc語音編碼器,實現(xiàn)了其全部功能
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:

	for (q=hl-1; q>=0; q--) {
	    blockStartPos[q]=blockStartPos[q+1]-period[lagBlock[q+1]];
	    lagBlock[q] = NearestNeighbor(plocs,
					  blockStartPos[q]+
					  ilbc_constants.ENH_BLOCKL_HALF-period[lagBlock[q+1]],
					  periodl);


	    if (blockStartPos[q]-ilbc_constants.ENH_OVERHANG>=0) {
		blockStartPos[q] = refiner(sseq,q*ilbc_constants.ENH_BLOCKL, idata,
					   idatal, centerStartPos,
					   blockStartPos[q],
					   period[lagBlock[q+1]]);
	    } else {
		psseq=q*ilbc_constants.ENH_BLOCKL;
// 		psseq=sseq+q*ENH_BLOCKL;
		for (int li = 0; li < ilbc_constants.ENH_BLOCKL; li++)
		    sseq[psseq+li] = 0.0f;
//		memset(psseq, 0, ENH_BLOCKL*sizeof(float));
	    }
	}

	/* future */

	for (i=0; i<periodl; i++) {
	    plocs2[i]=plocs[i]-period[i];
	}
	for (q=hl+1; q<=2*hl; q++) {
	    lagBlock[q] = NearestNeighbor(plocs2,
					  blockStartPos[q-1]+ilbc_constants.ENH_BLOCKL_HALF,
					  periodl);

	    blockStartPos[q]=blockStartPos[q-1]+period[lagBlock[q]];
	    if (blockStartPos[q]+ilbc_constants.ENH_BLOCKL+ilbc_constants.ENH_OVERHANG<idatal) {
		blockStartPos[q] = refiner(sseq,q*ilbc_constants.ENH_BLOCKL, idata,
					   idatal, centerStartPos,
					   blockStartPos[q],
					   period[lagBlock[q]]);
	    }
	    else {
		psseq=q*ilbc_constants.ENH_BLOCKL;
// 		psseq=sseq+q*ENH_BLOCKL;
		for (int li = 0; li < ilbc_constants.ENH_BLOCKL; li++)
		    sseq[psseq+li] = 0.0f;
// 		memset(psseq, 0, ENH_BLOCKL*sizeof(float));
	    }
	}
    }

    /*----------------------------------------------------------------*
     * perform enhancement on idata+centerStartPos through
     * idata+centerStartPos+ENH_BLOCKL-1
     *---------------------------------------------------------------*/

    public void enhancer(
		      float odata[],       /* (o) smoothed block, dimension blockl */
		      int odata_idx,
		      float idata[],       /* (i) data buffer used for enhancing */
		      int idatal,         /* (i) dimension idata */
		      int centerStartPos, /* (i) first sample current block
					     within idata */
		      float alpha0,       /* (i) max correction-energy-fraction
					     (in [0,1]) */
		      float period[],      /* (i) pitch period array */
		      float plocs[],       /* (i) locations where period array
					     values valid */
		      int periodl         /* (i) dimension of period and plocs */
		      ){
	float [] sseq = new float[(2*ilbc_constants.ENH_HL+1)*ilbc_constants.ENH_BLOCKL];

	/* get said second sequence of segments */

	getsseq(sseq,idata,idatal,centerStartPos,period,
		plocs,periodl,ilbc_constants.ENH_HL);

	/* compute the smoothed output from said second sequence */

	smath(odata, odata_idx, sseq,ilbc_constants.ENH_HL,alpha0);

    }

    /*----------------------------------------------------------------*
     * cross correlation
     *---------------------------------------------------------------*/

    public float xCorrCoef(
		    float target[],      /* (i) first array */
		    int t_idx,
		    float regressor[],   /* (i) second array */
		    int r_idx,
		    int subl)        /* (i) dimension arrays */
    {
	int i;
	float ftmp1, ftmp2;

	ftmp1 = 0.0f;
	ftmp2 = 0.0f;
	for (i=0; i<subl; i++) {
	    ftmp1 += target[t_idx + i] * regressor[r_idx + i];
	    ftmp2 += regressor[r_idx + i] * regressor[r_idx + i];
	}

	if (ftmp1 > 0.0f) {
	    return (float)(ftmp1*ftmp1/ftmp2);
	}
	else {
	    return (float)0.0f;
	}
    }

    /*----------------------------------------------------------------*
     * interface for enhancer
     *---------------------------------------------------------------*/

    int enhancerInterface(
			  float out[],                     /* (o) enhanced signal */
			  float in[])                      /* (i) unenhanced signal */
    {
	//	float *enh_buf, *enh_period; (definis en global pour la classe)
	int iblock, isample;
	int lag=0, ilag, i, ioffset;
	float cc, maxcc;
	float ftmp1, ftmp2;
	//	float *inPtr, *enh_bufPtr1, *enh_bufPtr2;
	int inPtr, enh_bufPtr1, enh_bufPtr2;
	float [] plc_pred = new float[ilbc_constants.ENH_BLOCKL];

	float [] lpState = new float[6];
	float [] downsampled = new float[(ilbc_constants.ENH_NBLOCKS*ilbc_constants.ENH_BLOCKL+120)/2];
	int inLen=ilbc_constants.ENH_NBLOCKS*ilbc_constants.ENH_BLOCKL+120;
	int start, plc_blockl, inlag;

	//	enh_buf=iLBCdec_inst->enh_buf;
	//	enh_period=iLBCdec_inst->enh_period;

	System.arraycopy(enh_buf, this.ULP_inst.blockl,
			 enh_buf, 0,
			 ilbc_constants.ENH_BUFL-this.ULP_inst.blockl);
// 	memmove(enh_buf, &enh_buf[iLBCdec_inst->blockl],
// 		(ENH_BUFL-iLBCdec_inst->blockl)*sizeof(float));


	System.arraycopy(in, 0, enh_buf, ilbc_constants.ENH_BUFL-this.ULP_inst.blockl,
			 this.ULP_inst.blockl);
// 	memcpy(&enh_buf[ENH_BUFL-this.ULP_inst.blockl], in,
// 	       this.ULP_inst.blockl*sizeof(float));

	if (this.ULP_inst.mode==30)
	    plc_blockl=ilbc_constants.ENH_BLOCKL;
	else
	    plc_blockl=40;

	/* when 20 ms frame, move processing one block */
	ioffset=0;
	if (this.ULP_inst.mode==20) ioffset=1;

	i=3-ioffset;
	System.arraycopy(enh_period, i, enh_period, 0, ilbc_constants.ENH_NBLOCKS_TOT-i);
// 	memmove(enh_period, &enh_period[i],
// 		(ENH_NBLOCKS_TOT-i)*sizeof(float));

	/* Set state information to the 6 samples right before
	   the samples to be downsampled. */

	System.arraycopy(enh_buf, (ilbc_constants.ENH_NBLOCKS_EXTRA+ioffset)*ilbc_constants.ENH_BLOCKL-126,
			 lpState, 0, 6);
// 	memcpy(lpState,
// 	       enh_buf+(ENH_NBLOCKS_EXTRA+ioffset)*ENH_BLOCKL-126,
// 	       6*sizeof(float));

	/* Down sample a factor 2 to save computations */

	DownSample(enh_buf,
		   (ilbc_constants.ENH_NBLOCKS_EXTRA+ioffset)*ilbc_constants.ENH_BLOCKL-120,
                   ilbc_constants.lpFilt_coefsTbl, inLen-ioffset*ilbc_constants.ENH_BLOCKL,
                   lpState, downsampled);

	/* Estimate the pitch in the down sampled domain. */
	for (iblock = 0; iblock<ilbc_constants.ENH_NBLOCKS-ioffset; iblock++) {

	    lag = 10;
	    maxcc = xCorrCoef(downsampled, 60+iblock * ilbc_constants.ENH_BLOCKL_HALF,
			      downsampled, 60+iblock * ilbc_constants.ENH_BLOCKL_HALF - lag,
			      ilbc_constants.ENH_BLOCKL_HALF);
	    for (ilag=11; ilag<60; ilag++) {
		cc = xCorrCoef(downsampled, 60+iblock* ilbc_constants.ENH_BLOCKL_HALF,
			       downsampled, 60+iblock* ilbc_constants.ENH_BLOCKL_HALF - ilag,
			       ilbc_constants.ENH_BLOCKL_HALF);

		if (cc > maxcc) {
		    maxcc = cc;
		    lag = ilag;
		}
	    }

	    /* Store the estimated lag in the non-downsampled domain */
	    enh_period[iblock+ilbc_constants.ENH_NBLOCKS_EXTRA+ioffset] = (float)lag*2;


	}


	/* PLC was performed on the previous packet */
	if (this.prev_enh_pl==1) {

	    inlag=(int)enh_period[ilbc_constants.ENH_NBLOCKS_EXTRA+ioffset];

	    lag = inlag-1;
	    maxcc = xCorrCoef(in, 0, in, lag, plc_blockl);
	    for (ilag=inlag; ilag<=inlag+1; ilag++) {
		cc = xCorrCoef(in, 0, in, ilag, plc_blockl);
		if (cc > maxcc) {
		    maxcc = cc;
		    lag = ilag;
		}
	    }

	    enh_period[ilbc_constants.ENH_NBLOCKS_EXTRA+ioffset-1]=(float)lag;

	    /* compute new concealed residual for the old lookahead,
	       mix the forward PLC with a backward PLC from
	       the new frame */

	    //	    inPtr=&in[lag-1];
	    inPtr = lag - 1;

	    //	    enh_bufPtr1=&plc_pred[plc_blockl-1];
	    enh_bufPtr1 = plc_blockl - 1;

	    if (lag>plc_blockl) {
		start=plc_blockl;
	    } else {
		start=lag;
	    }

	    for (isample = start; isample>0; isample--) {
		//		*enh_bufPtr1-- = *inPtr--;
		plc_pred[enh_bufPtr1] = in[inPtr];
		enh_bufPtr1--;
		inPtr--;
	    }

	    //	    enh_bufPtr2=&enh_buf[ENH_BUFL-1-this.ULP_inst.blockl];
	    enh_bufPtr2 = ilbc_constants.ENH_BUFL - 1 - this.ULP_inst.blockl;
	    for (isample = (plc_blockl-1-lag); isample>=0; isample--) {
		//		*enh_bufPtr1-- = *enh_bufPtr2--;
		plc_pred[enh_bufPtr1] = enh_buf[enh_bufPtr2];
		enh_bufPtr1--;
		enh_bufPtr2--;
	    }

	    /* limit energy change */
	    ftmp2=0.0f;
	    ftmp1=0.0f;
	    for (i=0;i<plc_blockl;i++) {
		ftmp2+=enh_buf[ilbc_constants.ENH_BUFL-1-this.ULP_inst.blockl-i]*
		    enh_buf[ilbc_constants.ENH_BUFL-1-this.ULP_inst.blockl-i];
		ftmp1+=plc_pred[i]*plc_pred[i];
	    }
	    ftmp1=(float)(float)Math.sqrt(ftmp1/(float)plc_blockl);
	    ftmp2=(float)(float)Math.sqrt(ftmp2/(float)plc_blockl);
	    if (ftmp1>(float)2.0f*ftmp2 && ftmp1>0.0) {
		for (i=0;i<plc_blockl-10;i++) {
		    plc_pred[i]*=(float)2.0f*ftmp2/ftmp1;
		}
		for (i=plc_blockl-10;i<plc_blockl;i++) {
		    plc_pred[i]*=(float)(i-plc_blockl+10)*
			((float)1.0f-(float)2.0*ftmp2/ftmp1)/(float)(10)+
			(float)2.0f*ftmp2/ftmp1;
		}
	    }

	    enh_bufPtr1=ilbc_constants.ENH_BUFL-1-this.ULP_inst.blockl;
// 	    enh_bufPtr1=&enh_buf[ilbc_constants.ENH_BUFL-1-this.ULP_inst.blockl];
	    for (i=0; i<plc_blockl; i++) {
		ftmp1 = (float) (i+1) / (float) (plc_blockl+1);
		enh_buf[enh_bufPtr1] *= ftmp1;
// 		*enh_bufPtr1 *= ftmp1;
		enh_buf[enh_bufPtr1] += ((float)1.0f-ftmp1)*
		    plc_pred[plc_blockl-1-i];
// 		*enh_bufPtr1 += ((float)1.0f-ftmp1)*
// 		    plc_pred[plc_blockl-1-i];
		enh_bufPtr1--;
	    }
	}

	if (this.ULP_inst.mode==20) {
	    /* Enhancer with 40 samples delay */
	    for (iblock = 0; iblock<2; iblock++) {
		enhancer(out, iblock*ilbc_constants.ENH_BLOCKL, enh_buf,
			 ilbc_constants.ENH_BUFL, (5+iblock)*ilbc_constants.ENH_BLOCKL+40,
			 ilbc_constants.ENH_ALPHA0, enh_period, ilbc_constants.enh_plocsTbl,
			 ilbc_constants.ENH_NBLOCKS_TOT);
	    }
	} else if (this.ULP_inst.mode==30) {
	    /* Enhancer with 80 samples delay */
	    for (iblock = 0; iblock<3; iblock++) {
		enhancer(out, iblock*ilbc_constants.ENH_BLOCKL, enh_buf,
			 ilbc_constants.ENH_BUFL, (4+iblock)*ilbc_constants.ENH_BLOCKL,
			 ilbc_constants.ENH_ALPHA0, enh_period, ilbc_constants.enh_plocsTbl,
			 ilbc_constants.ENH_NBLOCKS_TOT);
	    }
	}

	return (lag*2);
    }

    /*----------------------------------------------------------------*
     *  Packet loss concealment routine. Conceals a residual signal
     *  and LP parameters. If no packet loss, update state.
     *---------------------------------------------------------------*/

    /*----------------------------------------------------------------*
     *  Compute cross correlation and pitch gain for pitch prediction
     *  of last subframe at given lag.
     *---------------------------------------------------------------*/

    public void compCorr(
			 float cc[],      /* (o) cross correlation coefficient */
			 float gc[],      /* (o) gain */
			 float pm[],
			 float buffer[],  /* (i) signal buffer */
			 int lag,    /* (i) pitch lag */
			 int bLen,       /* (i) length of buffer */
			 int sRange)      /* (i) correlation search length */
    {
	int i;
	float ftmp1, ftmp2, ftmp3;

	/* Guard against getting outside buffer */
	if ((bLen - sRange - lag) < 0) {
	    sRange = bLen - lag;
	}

	ftmp1 = 0.0f;
	ftmp2 = 0.0f;
	ftmp3 = 0.0f;

	for (i=0; i<sRange; i++) {
	    ftmp1 += buffer[bLen-sRange+i] *
		buffer[bLen-sRange+i-lag];
	    ftmp2 += buffer[bLen-sRange+i-lag] *
		buffer[bLen-sRange+i-lag];
	    ftmp3 += buffer[bLen-sRange+i] *
		buffer[bLen-sRange+i];
	}

	if (ftmp2 > 0.0f) {
	    cc[0] = ftmp1*ftmp1/ftmp2;
	    gc[0] = (float)(float)Math.abs(ftmp1 / ftmp2);
	    pm[0] = (float)(float)Math.abs(ftmp1) /
		((float)(float)Math.sqrt(ftmp2)*(float)Math.sqrt(ftmp3));
	}
	else {
	    cc[0] = 0.0f;
	    gc[0] = 0.0f;
	    pm[0] = 0.0f;
	}
    }

    public void doThePLC(
			 float PLCresidual[], /* (o) concealed residual */
			 float PLClpc[],      /* (o) concealed LP parameters */
			 int PLI,        /* (i) packet loss indicator
					    0 - no PL, 1 = PL */
			 float decresidual[], /* (i) decoded residual */
			 float lpc[],         /* (i) decoded LPC (only used for no PL) */
			 int lpc_idx,
			 int inlag)          /* (i) pitch lag */
    {
	int lag = 20, randlag = 0;
	float gain = 0.0f, maxcc = 0.0f;
	float use_gain = 0.0f;
	float gain_comp = 0.0f, maxcc_comp = 0.0f, per = 0.0f, max_per = 0.0f;
	int i, pick, use_lag;
	float ftmp, randvec[], pitchfact, energy;
	float [] a_gain, a_comp, a_per;

	randvec = new float [ilbc_constants.BLOCKL_MAX];

	a_gain = new float[1];
	a_comp = new float[1];
	a_per = new float[1];

	/* Packet Loss */

	if (PLI == 1) {

	    this.consPLICount += 1;

	    /* if previous frame not lost,
	       determine pitch pred. gain */

	    if (this.prevPLI != 1) {

		/* Search around the previous lag to find the
		   best pitch period */

		lag=inlag-3;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
理论电影国产精品| 国产精品丝袜久久久久久app| 亚洲国产毛片aaaaa无费看| 91激情在线视频| 亚洲高清免费视频| 欧美一级一区二区| 国产一区二区三区在线观看免费 | 色天天综合久久久久综合片| 自拍偷拍国产精品| 欧美三级在线播放| 麻豆精品视频在线观看视频| 国产日韩三级在线| 欧美性xxxxxx少妇| 久草在线在线精品观看| 中文字幕av免费专区久久| 91麻豆国产精品久久| 午夜一区二区三区视频| 日韩精品一区二区三区在线| 从欧美一区二区三区| 亚洲自拍与偷拍| 日韩欧美一区二区免费| av不卡在线播放| 日韩影院精彩在线| 欧美韩国日本综合| 在线成人免费观看| 成人激情黄色小说| 日韩国产精品大片| 国产精品久久久久7777按摩| 欧美日韩电影在线| 成人动漫在线一区| 美女爽到高潮91| 亚洲欧美国产77777| 日韩欧美一区二区三区在线| 91麻豆精品秘密| 精品亚洲成av人在线观看| 亚洲男人电影天堂| 久久人人97超碰com| 欧美综合亚洲图片综合区| 国产又黄又大久久| 亚洲第四色夜色| 国产精品久久久久久久久晋中| 欧美日本韩国一区| 91玉足脚交白嫩脚丫在线播放| 久久99精品国产.久久久久| 一区二区三区精品| 国产精品毛片高清在线完整版| 欧美乱熟臀69xxxxxx| a4yy欧美一区二区三区| 国内不卡的二区三区中文字幕| 一区二区三区中文字幕精品精品 | 亚洲欧美日韩国产手机在线| 精品国产亚洲在线| 69久久99精品久久久久婷婷| 91麻豆免费看| caoporen国产精品视频| 国产在线精品国自产拍免费| 日日骚欧美日韩| 亚洲国产另类av| 亚洲综合在线视频| 亚洲欧美日韩系列| 中文字幕在线一区| 国产日韩在线不卡| 2021久久国产精品不只是精品| 日韩亚洲欧美成人一区| 欧美日韩高清影院| 欧美人xxxx| 欧美日韩国产另类一区| 欧美视频在线播放| 色噜噜狠狠色综合欧洲selulu| 不卡视频一二三| proumb性欧美在线观看| 国产 日韩 欧美大片| 国产不卡一区视频| 国产精品一品二品| 国产精品99久久久| 国产成人在线电影| 成人av免费在线| 91一区二区在线观看| 色婷婷久久久综合中文字幕| 一本色道久久综合亚洲aⅴ蜜桃| 91天堂素人约啪| 日本久久一区二区| 欧美日韩高清一区二区| 欧美日韩精品免费| 日韩精品一区二区三区视频播放| 日韩网站在线看片你懂的| 日韩视频123| 久久久久久久国产精品影院| 久久精品人人做人人爽97| 国产日韩精品一区二区三区| 中文字幕一区在线| 一区二区三区中文在线观看| 亚洲va欧美va人人爽午夜| 日本视频在线一区| 国产毛片一区二区| 99麻豆久久久国产精品免费| 欧美在线看片a免费观看| 欧美精品123区| 精品国产3级a| 国产精品护士白丝一区av| 亚洲黄色录像片| 蜜臀av性久久久久av蜜臀妖精 | 久久毛片高清国产| 国产精品久久久久久久久免费樱桃| 亚洲视频精选在线| 日精品一区二区三区| 国产精品99久久久久久久vr| 99久久99久久精品免费观看 | 免费观看在线色综合| 国产精品1区2区| 欧美午夜精品久久久久久孕妇| 91精品国产综合久久婷婷香蕉| 久久一二三国产| 亚洲综合一区二区精品导航| 美国毛片一区二区三区| 成人avav影音| 91精品免费在线观看| 国产精品嫩草久久久久| 日韩福利视频导航| 成人做爰69片免费看网站| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲激情欧美激情| 经典三级一区二区| 99久久99久久精品免费观看| 欧美日韩aaa| 国产精品久久久久婷婷二区次| 日韩电影一区二区三区四区| 不卡的av电影在线观看| 日韩欧美在线不卡| 亚洲精品视频免费看| 黄网站免费久久| 欧美三区在线观看| 国产精品久久午夜| 国内欧美视频一区二区| 欧美日韩一区精品| 日韩美女视频一区二区| 国产在线视频精品一区| 欧美精品一二三四| 亚洲黄色小说网站| hitomi一区二区三区精品| 2020日本不卡一区二区视频| 五月天亚洲婷婷| 色婷婷亚洲一区二区三区| 国产日产欧美一区| 久久aⅴ国产欧美74aaa| 欧美日韩成人在线| 一个色妞综合视频在线观看| 欧美一区二区三区视频| 亚洲女同女同女同女同女同69| 国产综合久久久久久久久久久久| 欧美日韩在线免费视频| 亚洲精品国产第一综合99久久| 成人免费三级在线| 国产午夜久久久久| 国产精品123| 精品国产91久久久久久久妲己 | 精品国产乱码久久| 91视频在线看| 中文字幕欧美日韩一区| 国产乱码字幕精品高清av | 国产麻豆视频一区| 久久久青草青青国产亚洲免观| 蜜臀久久99精品久久久画质超高清| 欧美日韩一区不卡| 亚洲mv在线观看| 欧美乱妇23p| 婷婷久久综合九色国产成人| 欧美日韩视频在线一区二区 | 国产精品国产三级国产有无不卡| 国产毛片精品国产一区二区三区| 26uuu国产电影一区二区| 蜜臀精品一区二区三区在线观看| 日韩欧美一区中文| 久久99精品久久久久久久久久久久 | 日韩高清国产一区在线| 日韩一区二区三区av| 美女视频黄久久| 久久一二三国产| 成人夜色视频网站在线观看| 亚洲欧洲国产专区| 欧洲激情一区二区| 日韩在线一二三区| 26uuu精品一区二区在线观看| 国产伦精品一区二区三区视频青涩| 精品女同一区二区| 国产精品77777竹菊影视小说| 国产欧美一区二区精品性色| 91视频在线看| 偷拍日韩校园综合在线| 欧美电视剧在线看免费| 国产乱码精品一区二区三区五月婷 | 99久久精品免费精品国产| 亚洲六月丁香色婷婷综合久久| 欧美日韩另类国产亚洲欧美一级| 美女精品一区二区| 国产精品网站导航| 欧美三电影在线| 激情综合色丁香一区二区| 欧美激情一二三区| 欧美日韩三级视频|