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

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

?? postfil.c

?? G729、h263、h264、MPEG4四種最流行的音頻和視頻標準的壓縮和解壓算法的源代碼.rar
?? C
字號:
/*************************************************************************//*                                                                       *//*                            LD-CELP  G.728                             *//*                                                                       *//*    Low-Delay Code Excitation Linear Prediction speech compression.    *//*                                                                       *//*                 Copyright: Analog Devices, Inc., 1993                 *//*                                                                       *//*                         Author: Alex Zatsman.                         *//*                                                                       *//*  This program was written mostly for testing  Analog Devices' g21k C  *//*  compiler for the  ADSP21000 architecture  family. While the program  *//*  works  on  Sparc and ADSP21020, it  has  NOT  been  tested with the  *//*  official test data from CCITT/ITU.                                   *//*                                                                       *//*  The program  is   distributed as  is,  WITHOUT ANY WARRANTY, EITHER  *//*  EXPLICIT OR IMPLIED.                                                 *//*                                                                       *//*************************************************************************//* Postfilter of LD-CELP Decoder */#include "common.h"#include "prototyp.h"#include "parm.h"#include "data.h"#ifdef __ADSP21000__#include <math.h>#define ABS(X) fabsf(X)#else#define ABS(X) ((X)<0.0?(-X):(X))#endif/*  Parameters from the adapter: */#define SPORDER 10int  pitch_period = 50;real pitch_tap=0.0;real pitch_gain=1;static real    shzscale[SPORDER+1],	/* Precomputed Scales for IIR coefficients */    shpscale[SPORDER+1],	/* Precomputed Scales for FIR Coefficients */    shpcoef[SPORDER+1],	/* Short Term Filter (Poles/IIR) Coefficients */    shzcoef[SPORDER+1], /* Short Term Filter (Zeros/FIR) Coefficients */    tiltz;static void  longterm(real[], real[]);static void shortterm(real[], real[]);/* Compute sum of absolute values of vector V */static real vec_abs(real v[]){    int i;    real r = v[0];    for(i=1; i<IDIM; i++)	r+=ABS(v[i]);    return r;}voidpostfilter(real input[], real output[]){    int i;    static    real	temp[IDIM], 	/* Output of long term filter*/	temp2[IDIM], 	/* Input of short term filter*/	new_gain,	/* Gain of filtered output */	input_gain, 	/* Gain of input */	scale;		/* Scaling factor for gain preservation */	static real scalefil=1.0;	/* Smoother version of scale */    longterm(input, temp);    shortterm(temp, temp2);    /* Computed scale for gain preservation */    new_gain = vec_abs(temp2);    if (new_gain > 1.0)    {	input_gain = vec_abs(input);	scale = input_gain/new_gain;    }    else 	scale = 1.0;        /* Smooth out scale, then scale the output */    for(i=0; i<IDIM; i++) {	scalefil = AGCFAC * scalefil + (1.0 - AGCFAC)*scale;	output[i] = scalefil * temp2[i];    }}static voidlongterm(real input[], real output[]){    int i;    real out;    static real lmemory[KPMAX];    /* Add weighted pitch_period-delayed signal */    for(i=0; i<IDIM; i++) {	out = input[i] + pitch_tap * lmemory[KPMAX+i-pitch_period];	output[i] = pitch_gain*out;    }        /* Shift-in input to lmemory */    for (i=0; i<KPMAX-IDIM; i++)	lmemory[i] = lmemory[i+IDIM];    for(i=0; i<IDIM; i++)	lmemory[KPMAX-IDIM+i] = input[i];}/*  Again, memories (shpmem, shzmem) are in reverse order,   i.e. [0] is the oldest. */static voidshortterm(real input[], real output[]){    int k,j;    static real shpmem[SPORDER], shzmem[SPORDER];    for(k=0; k<IDIM; k++) {	/* FIR Part */	real in = input[k], out;	out = in;	for(j=SPORDER-1; j>=1; j--) {	    out += shzmem[j]*shzcoef[j+1];	    shzmem[j] = shzmem[j-1];	}	out += shzmem[0] * shzcoef[1];	shzmem[0] = in;	/* IIR Part */		for(j=SPORDER-1; j>=1; j--) {	    out -= shpmem[j]*shpcoef[j+1];	    shpmem[j] = shpmem[j-1];	}	out -= shpmem[0] * shpcoef[1];	shpmem[0] = out;	output[k] = out+tiltz*shzmem[1];    }}	/*********************************/	/***** Postfilter Adapter ********/	/*********************************/#define DECIM 4#define PMSIZE  (NPWSZ+KPMAX)	/* Postfilter Memory SIZE */#define PDMSIZE (PMSIZE/DECIM)  /* Post. Decim. Memory SIZE */#define DPERMAX (KPMAX/DECIM)	/* Max. Decimated Period */#define DPERMIN (KPMIN/DECIM)	/* Min. Decimated Period *//*   Using macro will make it easy to reverse the order of fil_mem elements.  Current macro realizes reverse memory.  */static real fil_mem[PMSIZE];	/* Post-Filter Memory */#define FIL_MEM(I) fil_mem[PMSIZE-1-(I)]static int extract_pitch(real[]);voidpsf_adapter (real frame[]){    real residue[NFRSZ];    /* Inverse Filter */  {      int i,j,k;      static real mem1[SPORDER+NFRSZ];      /** Shift in frame into mem1 **/      for(i=NFRSZ; i<SPORDER+NFRSZ; i++)	  mem1[i-NFRSZ] = mem1[i];      for(i=0; i<NFRSZ; i++)	  mem1[SPORDER+i] = frame[i];      #ifdef noPIPELINE	{	    for(k=0; k<NFRSZ; k++) {		real *mem1kp = mem1+k;		real		    PSF_LPC_MEM *ap=a10;		real		    *mem1p = mem1kp,		    mem1_1 = *mem1p,		    a10_1 = *ap,		    tmp = mem1_1;		for(j=1; j<=SPORDER; j++) {		    tmp -= mem1_1 * a10_1;		    mem1_1 = *mem1p--;		    a10_1 = *ap++;		    }		residue[k] = tmp-mem1_1*a10_1;		mem1kp++;	    }	}#else      /* Un-pipelined version -- kept for reference */      for(k=0; k<NFRSZ; k++) {	  real tmp = mem1[SPORDER+k];	  for(j=1; j<=SPORDER; j++)	      tmp -= mem1[SPORDER+k-j]*a10[j];	  residue[k] = tmp;      }#endif  }    				SPDEBUG(36, residue, NFRSZ);    pitch_period = extract_pitch(residue);    /** Compute Pitch Tap **/  {      int i;      real corr=0.0, corr_per=0.0;#ifdef noPIPELINE    {	/** Only for REVERSED (!) fil_mem **/	real	    *p1 = &FIL_MEM(KPMAX),	    *p2 = &FIL_MEM(KPMAX-pitch_period),	    c1 = *p1--, 	    c2 = *p2--;	for(i=1; i<NPWSZ; i++) {	    corr_per += c1 * c2; 	    corr += c1 * c1;	    c2 = *p2--;	    c1= *p1--;	}	corr_per += c1 * c2;	corr     += c1 * c1;    }#else      /* Un-pipelined version -- kept for reference */      for(i=0; i<NPWSZ; i++) {	  corr     += FIL_MEM(KPMAX+i) * FIL_MEM(KPMAX+i);	  corr_per += FIL_MEM(KPMAX+i) * FIL_MEM(KPMAX-pitch_period+i);      }#endif      if REALZEROP(corr)	  pitch_tap = 0.0;      else	  pitch_tap = corr_per/corr;  }        /** Compute Long Term Coefficients **/      {      if (pitch_tap > 1)	  pitch_tap = 1.0;      if (pitch_tap < PPFTH)	  pitch_tap = 0.0;      pitch_tap = PPFZCF * pitch_tap;      pitch_gain = 1.0/(1.0+pitch_tap);  }    /** Compute Short Term Coefficients **/  {      int i;      for(i=1; i<=SPORDER; i++) {	  shzcoef[i] = shzscale[i]*a10[i];	  shpcoef[i] = shpscale[i]*a10[i];      }      tiltz = TILTF * k10;  }}static int best_period (real buffer[], int buflen,			int pmin, int pmax){    int i, per, best_per = -1;    real best_corr = -(BIG);    for(per = pmin; per<pmax; per++) {	real corr = 0.0;#ifdef noPIPELINE      {	  /** Pipelining **/	  real	      *pb0 = buffer+pmax,	      *pb1 = pb0-per,	      b0 = *pb0,	      b1 = *pb1;	  for(i=pmax+1; i<buflen; i++) {	      corr += b0 * b1;	      b0 = *pb0++;	      b1 = *pb1++;	  }	  corr += b0 * b1;      }#else	for(i=pmax; i<buflen; i++)	    corr += buffer[i] * buffer[i-per];#endif	if (corr > best_corr) {	    best_corr = corr;	    best_per  = per;	}	        }    return best_per;}#define DCFRSZ NFRSZ/DECIM /* size of decimated frame */static intextract_pitch(real frame[]){    int	i, j, k,	best_per=KPMAX,		 /* Best Period (undecimated) */	best_dper = KPMAX/DECIM, /* Best Decimated Period */	best_old_per=KPMAX,	 /* Best Old Period */	permin,			 /* Limits for search of best period */	permax;    real	best_corr=-(BIG), best_old_corr=-(BIG), tap0=0.0, tap1=0.0;    static int old_per = (KPMIN+KPMAX)>>1;    static real	fil_decim_mem[PDMSIZE],	fil_out_mem[NFRSZ+DECIM];#define FIL_DECIM_MEM(I) fil_decim_mem[I]#define FIL_OUT_MEM(I)   fil_out_mem[I]        /** Shift in the frame into fil_mem **/    for(i=NFRSZ; i<PMSIZE; i++)	FIL_MEM(i-NFRSZ) = FIL_MEM(i);    for(i=0; i<NFRSZ; i++)	FIL_MEM(PMSIZE-NFRSZ+i) = frame[i];    /** Shift decimated filtered output */    for(i=DCFRSZ; i<PDMSIZE; i++)	FIL_DECIM_MEM(i-DCFRSZ) = FIL_DECIM_MEM(i);      /* Filter and  decimate  input */  {      int decim_phase = 0, dk;      for (k = 0, dk=0; k<NFRSZ; k++)      {	  real tmp;	  tmp = frame[k] - A1 * FIL_OUT_MEM(2)	                 - A2 * FIL_OUT_MEM(1)	                 - A3 * FIL_OUT_MEM(0);	  decim_phase++;	  if (decim_phase == 4) {	      FIL_DECIM_MEM(PDMSIZE-DCFRSZ+dk) = 		  B0 * tmp		+ B1 * FIL_OUT_MEM(2)		+ B2 * FIL_OUT_MEM(1)		+ B3 * FIL_OUT_MEM(0);	      decim_phase = 0;	      dk++;	  }	  FIL_OUT_MEM(0) = FIL_OUT_MEM(1);	  FIL_OUT_MEM(1) = FIL_OUT_MEM(2);	  FIL_OUT_MEM(2) = tmp;      }      SPDEBUG(27, fil_decim_mem+PDMSIZE-DCFRSZ, 5);  }    /* Find best Correlation in decimated domain: */    best_dper = best_period(fil_decim_mem, PDMSIZE, DPERMIN, DPERMAX);    /* Now fine-tune best correlation on undecimated  domain */        permin = best_dper * DECIM - DECIM + 1;    permax = best_dper * DECIM + DECIM - 1;    if (permax > KPMAX)	permax = KPMAX;    if (permin < KPMIN)	permin = KPMIN;      {      int per;      best_corr = -(BIG);      for(per = permin; per<=permax; per++) {	  real corr = 0.0;	  for(i=0,j=per;   i<NPWSZ;   i++,j++)	      corr += FIL_MEM(PMSIZE-i)*FIL_MEM(PMSIZE-j);	  if (corr > best_corr) {	      best_corr = corr;	      best_per = per;	  }      }  }        /** If we are not exceeding old period by too much, we have a real       period and not a multiple */        permax = old_per + KPDELTA;    if (best_per <= permax)	goto done;    /** Now compute best period around the old period **/        permin = old_per - KPDELTA;    if (permin<KPMIN) permin = KPMIN;  {      int per;      best_old_corr = -(BIG);      for(per = permin; per<permax; per++) {	  real corr = 0.0;	  for(i=0,j=per;	      j<PMSIZE;	      i++,j++)	      corr += FIL_MEM(i)*FIL_MEM(j);	  if (corr > best_old_corr) {	      best_old_corr = corr;	      best_old_per = per;	  }      }  }        /***** Compute the tap ****/  {      real s0=0.0, s1=0.0;      for(i=KPMAX; i<PMSIZE; i++) {	  s0 += FIL_MEM(i-best_per)     * FIL_MEM(i-best_per);	  s1 += FIL_MEM(i-best_old_per) * FIL_MEM(i-best_old_per);      }      if (! REALZEROP(s0))	  tap0 = best_corr/s0;      if (! REALZEROP(s1))	  tap1 = best_old_corr/s1;      tap0 = CLIPP(tap0, 0.0, 1.0);      tap1 = CLIPP(tap1, 0.0, 1.0);      if (tap1 > TAPTH * tap0)	  best_per = best_old_per;  }  done:    old_per = best_per;    return best_per;}voidinit_postfilter(){    int i;    shzscale[0] = shpscale[0] = 1.0;    for (i=1; i<=SPORDER; i++)    {	shzscale[i] = SPFZCF * shzscale[i-1];	shpscale[i] = SPFPCF * shpscale[i-1];    }}#ifdef PITCHTEST/* Test Pitch Extract -- only on hosts.   Build a "chirp wave" and dump expected and computed pitch,   as well as the filtered and decimated signal */#include <math.h>voidmain (){    real freq0=70, slope=0.1;    int i, phase;    real freq, real_freq, frame[NFRSZ];        sp_file_on(27);    sp_file_on(30);    sp_file_on(33);    sp_file_on(34);    sp_file_on(35);    for(i=0, phase =0, freq=freq0;	i<2000;	i++,phase++,freq+=slope) {	if (phase == NFRSZ) {	    int pitch = extract_pitch(frame);	    real rpitch = (real) pitch;	    real expected_pitch = 8000/freq;	    phase= 0;					    SPDEBUG(33, frame, NFRSZ);					    SPDEBUG(34, &expected_pitch, 1);					    SPDEBUG(35, &rpitch, 1);	}	real_freq = 2. *M_PI * freq / 8000.;	frame[phase] = sin(real_freq*i);    }}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国际精品| 国产午夜精品福利| 日本一区二区免费在线观看视频 | 99re热视频精品| 91在线观看一区二区| 91老师国产黑色丝袜在线| 波多野结衣亚洲一区| 国产一区二区免费在线| 高清av一区二区| 91色乱码一区二区三区| 欧美三级乱人伦电影| 欧美一区二区成人6969| 日韩欧美一二区| 欧美一区二区三区在线看| 久久免费视频色| 亚洲欧洲另类国产综合| 亚洲午夜精品久久久久久久久| 亚洲成人免费看| 免费看欧美美女黄的网站| 激情深爱一区二区| 99久久伊人精品| 91精品婷婷国产综合久久性色 | 91黄色免费版| 欧美一区二区视频在线观看 | 亚洲女性喷水在线观看一区| 青青草国产成人av片免费| 精品午夜久久福利影院 | 欧美亚洲国产一区二区三区va | 亚洲国产经典视频| 麻豆视频一区二区| 91丨porny丨首页| 日韩一级大片在线观看| 亚洲欧美精品午睡沙发| 国产麻豆成人传媒免费观看| 欧美乱妇15p| 香蕉乱码成人久久天堂爱免费| 国产激情视频一区二区三区欧美| 欧美午夜片在线看| 日韩午夜激情电影| 亚洲h在线观看| 欧美精品1区2区| 免费在线一区观看| 69久久夜色精品国产69蝌蚪网| 亚洲激情综合网| 99精品视频一区二区三区| 欧美日韩三级在线| 亚洲免费观看高清完整版在线| 成人亚洲一区二区一| 中文子幕无线码一区tr| 国产91丝袜在线播放0| 亚洲欧洲日韩一区二区三区| 成人av资源站| 日韩电影在线观看一区| 1区2区3区国产精品| 国产精品77777| 欧美日韩在线免费视频| 韩国三级中文字幕hd久久精品| 精品国产乱码久久久久久图片| 国产一区二区三区观看| 亚洲激情校园春色| 色狠狠色狠狠综合| 亚洲午夜国产一区99re久久| 欧美色图在线观看| 日韩电影免费在线观看网站| 欧美刺激午夜性久久久久久久| 99在线精品免费| 奇米影视7777精品一区二区| 9191精品国产综合久久久久久| 久久激情五月激情| 亚洲一区视频在线| 国产亚洲欧洲一区高清在线观看| 91网站最新地址| 麻豆免费看一区二区三区| 亚洲精品免费在线播放| 国产精品狼人久久影院观看方式| 欧美一级生活片| 欧美日韩中文字幕精品| 91网站最新地址| 韩国av一区二区三区| 蜜臀av一区二区在线免费观看| 亚洲码国产岛国毛片在线| 精品日韩av一区二区| 欧美日韩一卡二卡| 欧美一级在线视频| 欧美一级二级三级蜜桃| 欧美日韩精品欧美日韩精品一综合| 国产一区二区在线电影| 一区二区在线观看不卡| 国产欧美va欧美不卡在线| 亚洲精品在线免费播放| 欧美精品一区二区精品网| 日韩午夜激情免费电影| 欧美欧美欧美欧美首页| 91精品欧美久久久久久动漫 | 日韩免费电影一区| 中文字幕二三区不卡| 亚洲黄网站在线观看| 免费成人在线网站| 国产精品一区二区视频| 粉嫩aⅴ一区二区三区四区| 91丝袜美腿高跟国产极品老师 | 日韩网站在线看片你懂的| 国产欧美一区二区精品性| 亚洲免费在线视频| 调教+趴+乳夹+国产+精品| 日韩制服丝袜av| 成人午夜视频福利| 欧美女孩性生活视频| 国产亚洲精品精华液| 无码av免费一区二区三区试看| 国产精品18久久久久久久久 | 制服丝袜亚洲网站| 国产欧美一区二区三区沐欲| 国产精品久久久久久久久搜平片 | 福利一区二区在线观看| 欧美日韩视频在线观看一区二区三区 | 国产91清纯白嫩初高中在线观看| 色综合久久久久久久久| 日韩久久久久久| 午夜天堂影视香蕉久久| 成人免费观看视频| 精品国产一区二区三区久久久蜜月 | 一区二区理论电影在线观看| 精品一区二区三区在线观看| 欧美在线三级电影| 中文字幕亚洲区| 成人性生交大片免费看中文网站| 日韩一区二区在线播放| 亚洲成人资源网| 欧美日韩激情在线| 日韩国产欧美在线视频| 538prom精品视频线放| 亚洲图片欧美综合| 成人永久免费视频| 国产午夜精品久久久久久免费视| 韩国成人在线视频| 久久在线观看免费| 成人短视频下载| 亚洲成a人片在线不卡一二三区| 欧美在线短视频| 日韩激情一区二区| 亚洲精品一区二区三区四区高清| 久久国产三级精品| 亚洲天堂精品视频| 欧美精品自拍偷拍| 美女视频黄免费的久久| 日韩免费视频线观看| 蜜桃av噜噜一区二区三区小说| 26uuu另类欧美亚洲曰本| 成人av集中营| 免费看精品久久片| 亚洲三级电影全部在线观看高清| 欧美精品一级二级| 色域天天综合网| 亚洲不卡在线观看| 国产精品久久久久久久浪潮网站| 欧美性受极品xxxx喷水| 国产又黄又大久久| 偷窥少妇高潮呻吟av久久免费| 日韩精品一区二区三区老鸭窝| 成人性色生活片| 国内精品久久久久影院一蜜桃| 亚洲成人动漫在线免费观看| 亚洲精品福利视频网站| 在线不卡中文字幕播放| 国产精品一区二区在线观看不卡 | 亚洲国产另类精品专区| 国产清纯白嫩初高生在线观看91| 日韩一级黄色大片| 91网站黄www| 成人午夜视频福利| 国内精品嫩模私拍在线| 秋霞午夜鲁丝一区二区老狼| 亚洲欧美日韩在线播放| 中文字幕一区二区视频| 久久亚洲一区二区三区四区| 欧美一级夜夜爽| 日韩欧美中文字幕精品| 日韩欧美一区二区不卡| 日韩一区二区电影在线| 在线播放欧美女士性生活| 日本电影欧美片| 欧洲一区二区av| 9191国产精品| 欧美激情在线观看视频免费| 国产精品久久久久久户外露出 | 国产婷婷色一区二区三区在线| 久久久久久久一区| 久久久久久久久一| 国产精品乱码久久久久久| 亚洲卡通动漫在线| 一区二区三区在线视频观看| 夜夜嗨av一区二区三区| 美腿丝袜亚洲综合| 国产精品2024| 欧美色大人视频| 日本一区二区成人| 亚洲一区二区三区视频在线| 午夜欧美在线一二页| 美女视频黄 久久|