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

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

?? ilbc_decoder.java

?? java的ilbc語音編碼器,實現了其全部功能
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/*
 * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package net.java.sip.communicator.impl.media.codec.audio.ilbc;

import java.lang.*;

/**
 * @author Jean Lorchat
 */
class ilbc_decoder {

    int consPLICount;
    int prevPLI;
    int prevLag;
    int last_lag;
    int prev_enh_pl;
    float per;
    float prevResidual[];
    long seed;
    float prevLpc[];

    ilbc_ulp ULP_inst = null;

    float syntMem[];
    float lsfdeqold[];
    float old_syntdenum[];
    float hpomem[];
    int use_enhancer;
    float enh_buf[];
    float enh_period[];

    // La plupart des variables globales sont dans ilbc_constants.etc...


   void syntFilter(
       float Out[],     /* (i/o) Signal to be filtered */
       int Out_idx,
       float a[],       /* (i) LP parameters */
       int a_idx,
       int len,    /* (i) Length of signal */
       float mem[])      /* (i/o) Filter state */
    {
	int i, j;
	//	float *po, *pi, *pa, *pm;
	int po, pi, pa, pm;

// 	System.out.println("out size : " + Out.length);
// 	System.out.println("out idx : " + Out_idx);
// 	System.out.println("a size : " + a.length);
// 	System.out.println("a idx : " + a_idx);
// 	System.out.println("len : " + len);
// 	System.out.println("mem size : " + mem.length);

	po = Out_idx;

	/* Filter first part using memory from past */

	for (i=0; i<ilbc_constants.LPC_FILTERORDER; i++) {
//            pi=&Out[i-1];
//            pa=&a[1];
//            pm=&mem[LPC_FILTERORDER-1];
	    pi = Out_idx + i - 1;
	    pa = a_idx + 1;
	    pm = ilbc_constants.LPC_FILTERORDER - 1;

	    for (j=1; j<=i; j++) {
		//		*po-=(*pa++)*(*pi--);
// 		System.out.println("1 Soustraction (" + i + "," + j + ") a " + Out[po] + " de " + a[pa] + " * " + Out[pi]);
// 		System.out.println("index " + (po - Out_idx) + " <> " + (pi - Out_idx));
		Out[po] -= a[pa] * Out[pi];
// 		System.out.println("Pour un resultat de " + Out[po]);
		pa++;
		pi--;
	    }
           for (j=i+1; j < ilbc_constants.LPC_FILTERORDER+1; j++) {
	       //               *po-=(*pa++)*(*pm--);
// 	       System.out.println("2 Soustraction a " + Out[po] + " de " + a[pa] + " * " + mem[pm]);
	       Out[po] -= a[pa] * mem[pm];
// 	       System.out.println("Pour un resultat de " + Out[po]);
	       pa++;
	       pm--;
           }
           po++;
	}

       /* Filter last part where the state is entirely in
          the output vector */

       for (i = ilbc_constants.LPC_FILTERORDER; i < len; i++) {
	   //           pi=&Out[i-1];
	   pi = Out_idx + i - 1;
	   //           pa=&a[1];
	   pa = a_idx + 1;
           for (j=1; j < ilbc_constants.LPC_FILTERORDER+1; j++) {
	       //               *po-=(*pa++)*(*pi--);
// 	       System.out.println("3 Soustraction a " + Out[po] + " de " + a[pa] + " * " + Out[pi]);
	       Out[po] -= a[pa] * Out[pi];
// 	       System.out.println("Pour un resultat de " + Out[po]);
	       pa++;
	       pi--;
           }
           po++;
       }

       /* Update state vector */

       System.arraycopy(Out, Out_idx + len - ilbc_constants.LPC_FILTERORDER,
			mem, 0, ilbc_constants.LPC_FILTERORDER);
//        memcpy(mem, &Out[len-LPC_FILTERORDER],
//            LPC_FILTERORDER*sizeof(float));
   }

   /*---------------------------------------------------------------*
    *  interpolation of lsf coefficients for the decoder
    *--------------------------------------------------------------*/

    public void LSFinterpolate2a_dec(
       float a[],           /* (o) lpc coefficients for a sub-frame */
       float lsf1[],    /* (i) first lsf coefficient vector */
       float lsf2[],    /* (i) second lsf coefficient vector */
       int lsf2_idx,
       float coef,         /* (i) interpolation weight */
       int length          /* (i) length of lsf vectors */
   ){
       float  [] lsftmp = new float[ilbc_constants.LPC_FILTERORDER];

       ilbc_common.interpolate(lsftmp, lsf1, lsf2, lsf2_idx, coef, length);
       ilbc_common.lsf2a(a, lsftmp);
   }

   /*---------------------------------------------------------------*
    *  obtain dequantized lsf coefficients from quantization index
    *--------------------------------------------------------------*/

   void SimplelsfDEQ(
       float lsfdeq[],    /* (o) dequantized lsf coefficients */
       int index[],         /* (i) quantization index */
       int lpc_n           /* (i) number of LPCs */
   ){
       int i, j, pos, cb_pos;

       /* decode first LSF */

       pos = 0;
       cb_pos = 0;
       for (i = 0; i < ilbc_constants.LSF_NSPLIT; i++) {
           for (j = 0; j < ilbc_constants.dim_lsfCbTbl[i]; j++) {
               lsfdeq[pos + j] = ilbc_constants.lsfCbTbl[cb_pos + (int)
                   ((long)(index[i])*ilbc_constants.dim_lsfCbTbl[i] + j)];
           }
           pos += ilbc_constants.dim_lsfCbTbl[i];
           cb_pos += ilbc_constants.size_lsfCbTbl[i]*ilbc_constants.dim_lsfCbTbl[i];
       }

       if (lpc_n>1) {

           /* decode last LSF */

           pos = 0;
           cb_pos = 0;
           for (i = 0; i < ilbc_constants.LSF_NSPLIT; i++) {
               for (j = 0; j < ilbc_constants.dim_lsfCbTbl[i]; j++) {
                   lsfdeq[ilbc_constants.LPC_FILTERORDER + pos + j] =
                       ilbc_constants.lsfCbTbl[cb_pos + (int)
                       ((long)(index[ilbc_constants.LSF_NSPLIT + i])*
                       ilbc_constants.dim_lsfCbTbl[i]) + j];
               }
               pos += ilbc_constants.dim_lsfCbTbl[i];
               cb_pos += ilbc_constants.size_lsfCbTbl[i]*ilbc_constants.dim_lsfCbTbl[i];
           }
       }
   }

   /*----------------------------------------------------------------*
    *  obtain synthesis and weighting filters form lsf coefficients
    *---------------------------------------------------------------*/

   void DecoderInterpolateLSF(
       float syntdenum[], /* (o) synthesis filter coefficients */
       float weightdenum[], /* (o) weighting denumerator
                                  coefficients */
       float lsfdeq[],       /* (i) dequantized lsf coefficients */
       int length)         /* (i) length of lsf coefficient vector */
    {
       int    i, pos, lp_length;
       float [] lp = new float[ilbc_constants.LPC_FILTERORDER + 1];
       int lsfdeq2;

       lsfdeq2 = length;
//        lsfdeq2 = lsfdeq + length;
       lp_length = length + 1;

       if (this.ULP_inst.mode==30) {
           /* sub-frame 1: Interpolation between old and first */

           LSFinterpolate2a_dec(lp, this.lsfdeqold, lsfdeq, 0,
				ilbc_constants.lsf_weightTbl_30ms[0], length);
	   System.arraycopy(lp, 0, syntdenum, 0, lp_length);
//            memcpy(syntdenum,lp,lp_length*sizeof(float));
           ilbc_common.bwexpand(weightdenum, 0, lp, ilbc_constants.LPC_CHIRP_WEIGHTDENUM, lp_length);

           /* sub-frames 2 to 6: interpolation between first
              and last LSF */

           pos = lp_length;
           for (i = 1; i < 6; i++) {
               LSFinterpolate2a_dec(lp, lsfdeq, lsfdeq, lsfdeq2,
				    ilbc_constants.lsf_weightTbl_30ms[i], length);
	       System.arraycopy(lp, 0, syntdenum, pos, lp_length);
//                memcpy(syntdenum + pos,lp,lp_length*sizeof(float));
               ilbc_common.bwexpand(weightdenum, pos, lp,
			ilbc_constants.LPC_CHIRP_WEIGHTDENUM, lp_length);
               pos += lp_length;
           }
       }
       else {
           pos = 0;
           for (i = 0; i < this.ULP_inst.nsub; i++) {
               LSFinterpolate2a_dec(lp, this.lsfdeqold,
				    lsfdeq, 0, ilbc_constants.lsf_weightTbl_20ms[i], length);
	       System.arraycopy(lp, 0, syntdenum, pos, lp_length);
//                memcpy(syntdenum+pos,lp,lp_length*sizeof(float));
               ilbc_common.bwexpand(weightdenum, pos, lp, ilbc_constants.LPC_CHIRP_WEIGHTDENUM,
				    lp_length);
               pos += lp_length;
           }
       }

       /* update memory */

       if (this.ULP_inst.mode==30) {
	   System.arraycopy(lsfdeq, lsfdeq2, this.lsfdeqold, 0, length);
//            memcpy(iLBCdec_inst->lsfdeqold, lsfdeq2, length*sizeof(float));
       } else {
	   System.arraycopy(lsfdeq, 0, this.lsfdeqold, 0, length);
//            memcpy(iLBCdec_inst->lsfdeqold, lsfdeq, length*sizeof(float));
       }
   }


    public void index_conv_dec(int index[])          /* (i/o) Codebook indexes */
    {
	int k;

	for (k=1; k<ilbc_constants.CB_NSTAGES; k++) {

	    if ((index[k]>=44)&&(index[k]<108)) {
		index[k]+=64;
	    } else if ((index[k]>=108)&&(index[k]<128)) {
               index[k]+=128;
	    } else {
		/* ERROR */
	    }
	}
    }

    public void hpOutput(
		 float In[],  /* (i) vector to filter */
		 int len,/* (i) length of vector to filter */
		 float Out[], /* (o) the resulting filtered vector */
		 float mem[])  /* (i/o) the filter state */
    {
	int i;
	//	float *pi, *po;
	int pi, po;

       /* all-zero section*/

//        pi = &In[0];
//        po = &Out[0];
	pi = 0;
	po = 0;

	for (i=0; i<len; i++) {
	    Out[po] = ilbc_constants.hpo_zero_coefsTbl[0] * (In[pi]);
	    Out[po] += ilbc_constants.hpo_zero_coefsTbl[1] * mem[0];
	    Out[po] += ilbc_constants.hpo_zero_coefsTbl[2] * mem[1];

           mem[1] = mem[0];
           mem[0] = In[pi];
           po++;
           pi++;

       }

       /* all-pole section*/

	//       po = &Out[0];
	po = 0;
	for (i=0; i<len; i++) {
	    Out[po] -= ilbc_constants.hpo_pole_coefsTbl[1] * mem[2];
	    Out[po] -= ilbc_constants.hpo_pole_coefsTbl[2] * mem[3];

	    mem[3] = mem[2];
	    mem[2] = Out[po];
	    po++;
	}
    }

   /*----------------------------------------------------------------*
    * downsample (LP filter and decimation)
    *---------------------------------------------------------------*/

   void DownSample (
       float  In[],     /* (i) input samples */
       int in_idx,
       float  Coef[],   /* (i) filter coefficients */
       int lengthIn,   /* (i) number of input samples */
       float  state[],  /* (i) filter state */
       float  Out[])     /* (o) downsampled output */
    {
	float o;
	//	float *Out_ptr = Out;
	int out_ptr = 0;
	//float *Coef_ptr, *In_ptr;
	int coef_ptr = 0;
	int in_ptr = in_idx;
	//float *state_ptr;
	int state_ptr = 0;
	int i, j, stop;

       /* LP filter and decimate at the same time */

	for (i = ilbc_constants.DELAY_DS; i < lengthIn; i += ilbc_constants.FACTOR_DS)
	    {
		coef_ptr = 0;
		in_ptr = in_idx + i;
		state_ptr = ilbc_constants.FILTERORDER_DS - 2;

		o = (float)0.0f;

		//		stop = (i < ilbc_constants.FILTERORDER_DS) ? i + 1 : ilbc_constants.FILTERORDER_DS;
		if (i < ilbc_constants.FILTERORDER_DS) {
		    stop = i + 1;
		}
		else {
		    stop = ilbc_constants.FILTERORDER_DS;
		}

		for (j = 0; j < stop; j++)
		    {
			o += Coef[coef_ptr] * In[in_ptr];
			coef_ptr++;
			in_ptr--;
		    }
		for (j = i + 1; j < ilbc_constants.FILTERORDER_DS; j++)
		    {
			o += Coef[coef_ptr] * state[state_ptr];
			coef_ptr++;
			state_ptr--;
		    }
		Out[out_ptr] = o;
		out_ptr++;
		//		*Out_ptr++ = o;
	    }

	/* Get the last part (use zeros as input for the future) */

       for (i=(lengthIn+ilbc_constants.FACTOR_DS); i<(lengthIn+ilbc_constants.DELAY_DS);
               i+=ilbc_constants.FACTOR_DS) {

           o=(float)0.0f;

           if (i<lengthIn) {
               coef_ptr = 0;
               in_ptr = in_idx + i;
               for (j=0; j<ilbc_constants.FILTERORDER_DS; j++) {
		   o += Coef[coef_ptr] * Out[out_ptr];
		   coef_ptr++;
		   out_ptr--;
		   //                       o += *Coef_ptr++ * (*Out_ptr--);
               }
           } else {
               coef_ptr = i-lengthIn;
	       in_ptr = in_idx + lengthIn - 1;
               for (j=0; j<ilbc_constants.FILTERORDER_DS-(i-lengthIn); j++) {
		   o += Coef[coef_ptr] * In[in_ptr];
		   coef_ptr++;
		   in_ptr--;
               }
           }
           Out[out_ptr] = o;
	   out_ptr++;
       }
   }

    /*----------------------------------------------------------------*
     * Find index in array such that the array element with said
     * index is the element of said array closest to "value"
     * according to the squared-error criterion
     *---------------------------------------------------------------*/

    public int NearestNeighbor(
//			 int   index[],   /* (o) index of array element closest
//					    to value */
			       float array[],   /* (i) data array */
			       float value,/* (i) value */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产午夜精品| 国产精品综合视频| 国产精品对白交换视频| 久久青草国产手机看片福利盒子| 日韩视频免费观看高清完整版 | 国产精品一区二区免费不卡| 日韩精品亚洲一区二区三区免费| 午夜精品一区二区三区三上悠亚| 亚洲国产毛片aaaaa无费看| 亚洲精品国产无套在线观| 亚洲精品成a人| 一区二区成人在线| 午夜精品一区在线观看| 日韩成人一区二区三区在线观看| 日本免费在线视频不卡一不卡二 | 国产美女精品人人做人人爽| 国产激情91久久精品导航| 风间由美一区二区三区在线观看 | 久久 天天综合| 国产成人一区在线| 91视频免费看| 欧美日韩一区二区在线观看视频| 3d动漫精品啪啪一区二区竹菊| 欧美一区二区三区影视| 国产色综合一区| 亚洲美腿欧美偷拍| 亚瑟在线精品视频| 精品制服美女久久| 91在线观看成人| 色欧美88888久久久久久影院| 99国产精品99久久久久久| 欧美色网一区二区| 久久免费精品国产久精品久久久久| 国产精品日韩成人| 视频一区欧美日韩| 成人福利视频在线| 欧美高清视频在线高清观看mv色露露十八 | 色呦呦国产精品| 日韩一区二区三区高清免费看看 | 91精品国产综合久久婷婷香蕉| 久久综合九色综合欧美亚洲| 亚洲美女视频在线| 国产成人av电影在线播放| 欧美日韩不卡视频| 国产精品成人免费精品自在线观看| 五月天视频一区| 成人av一区二区三区| 日韩一级在线观看| 亚洲五月六月丁香激情| 高清在线成人网| 欧美成人精品高清在线播放| 一区二区三区鲁丝不卡| 高清免费成人av| 久久久蜜桃精品| 精品一区二区综合| 制服.丝袜.亚洲.中文.综合| 亚洲男女一区二区三区| 成人精品国产福利| 久久女同性恋中文字幕| 免费观看一级欧美片| 欧美日本不卡视频| 亚洲第一会所有码转帖| 色国产综合视频| 日韩理论片一区二区| jlzzjlzz亚洲女人18| 日本一区二区三区国色天香| 国产一区二区三区高清播放| 精品国精品国产| 日韩影院免费视频| 欧美日韩一区二区电影| 亚洲成人资源在线| 欧美日韩国产成人在线免费| 最新不卡av在线| 色综合久久综合中文综合网| 亚洲女子a中天字幕| 91福利视频久久久久| 有坂深雪av一区二区精品| 色悠悠亚洲一区二区| 亚洲激情一二三区| 欧美性猛交一区二区三区精品| 亚洲图片欧美视频| 色哟哟亚洲精品| 一区二区成人在线| 91精品久久久久久久久99蜜臂| 日韩av中文字幕一区二区三区| 欧美日韩中文另类| 日本va欧美va欧美va精品| 欧美一级视频精品观看| 精东粉嫩av免费一区二区三区| 精品国产一二三| 成人免费视频视频在线观看免费| 国产精品久久久久影院亚瑟| 日本道免费精品一区二区三区| 亚洲影院免费观看| 91精品国产91热久久久做人人| 美女视频一区二区三区| 国产日韩欧美电影| 色网综合在线观看| 日本不卡在线视频| 久久久亚洲精品一区二区三区| 国产成人免费在线观看不卡| 亚洲免费观看视频| 欧美一级二级在线观看| 国产精品1区2区| 尤物av一区二区| 久久人人超碰精品| 欧美在线啊v一区| 韩国v欧美v亚洲v日本v| 亚洲人成人一区二区在线观看 | 日韩一区二区三区四区五区六区| 久久国产精品色婷婷| 一色屋精品亚洲香蕉网站| 欧美精品久久一区| proumb性欧美在线观看| 午夜精品久久久久久不卡8050| 日韩欧美国产电影| 91免费国产在线| 久久99热这里只有精品| 一区二区三区在线视频观看| 欧美精品一区二| 欧美日韩免费电影| 99热99精品| 黄色精品一二区| 日日骚欧美日韩| 亚洲乱码日产精品bd| 国产亚洲一区二区在线观看| 欧美日韩美女一区二区| 91丨九色丨国产丨porny| 国产精品一二三区在线| 日韩和欧美一区二区三区| 亚洲欧美激情小说另类| 国产精品久久久久久久久快鸭| 欧美日产国产精品| 99视频国产精品| 不卡视频一二三| 国产精品66部| 激情文学综合插| 美腿丝袜在线亚洲一区| 亚洲国产精品天堂| 亚洲伊人伊色伊影伊综合网| 亚洲国产成人午夜在线一区| 欧美电视剧在线观看完整版| 欧美日韩大陆在线| 色哦色哦哦色天天综合| 色琪琪一区二区三区亚洲区| 91啪亚洲精品| 成av人片一区二区| 国产99久久久久久免费看农村| 久久成人免费日本黄色| 男人操女人的视频在线观看欧美| 亚洲高清免费观看高清完整版在线观看| 中文字幕一区二区三区在线观看| 国产欧美日韩另类视频免费观看| 精品久久久久久久久久久久久久久 | 国产精品视频线看| 国产三级欧美三级| 久久久久久亚洲综合| 久久久.com| 亚洲欧洲日产国码二区| 亚洲黄色av一区| 天天操天天干天天综合网| 日韩电影在线免费| 久久99精品一区二区三区三区| 蜜臀a∨国产成人精品| 黄色日韩网站视频| 成人av电影免费观看| 一本在线高清不卡dvd| 欧美性videosxxxxx| 欧美一区二区视频网站| 久久久久97国产精华液好用吗| 国产区在线观看成人精品| 成人欧美一区二区三区小说| 综合精品久久久| 亚洲成人激情av| 久久精品国产亚洲aⅴ| 国产成+人+日韩+欧美+亚洲| 99re这里都是精品| 欧美福利视频一区| 久久精品一区二区三区不卡牛牛 | av一区二区三区| 欧美性感一区二区三区| 日韩精品专区在线| 日韩一区在线看| 三级欧美在线一区| 成人久久视频在线观看| 欧美三区在线观看| 久久这里只有精品视频网| 亚洲男人天堂一区| 精品一区二区av| 色婷婷综合久久久中文字幕| 日韩天堂在线观看| 亚洲精品成人精品456| 精彩视频一区二区三区| 日本精品免费观看高清观看| 日韩精品中文字幕在线不卡尤物 | 综合久久综合久久| 久草热8精品视频在线观看| 91免费视频大全| 国产视频不卡一区| 蜜臀av性久久久久蜜臀av麻豆|