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

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

?? iir-lib.c

?? Reference Implementation of G.711 standard and other voice codecs
?? C
?? 第 1 頁 / 共 3 頁
字號:
}/* ....................... End of cascade_iir_init() ....................... *//*  ============================================================================  void cascade_free (CASCADE_IIR *iir_ptr);  ~~~~~~~~~~~~~~~~~  Description:  ~~~~~~~~~~~~  Deallocate memory, which was allocated by an earlier call to one  of the initilization routines. `CASCADE_IIR *iir_prt' must not be  NULL.  Parameters:  ~~~~~~~~~~~  CASCADE_IIR *iir_ptr: ... pointer to struct CASCADE_IIR previously                            initialized by a call to one of the                            initialization routines.  Return value:  ~~~~~~~~~~~~~  Nothing.  Author: <simao@ctd.comsat.com>  ~~~~~~~    History:  ~~~~~~~~  30.Oct.94 v1.0 Release of 1st version <simao@ctd.comsat.com> ============================================================================*/void            cascade_iir_free(iir_ptr)  CASCADE_IIR        *iir_ptr;{  free(iir_ptr->T);		  /* free state variables */  free(iir_ptr);		  /* free allocated struct */}/* ....................... End of cascade_iir_free() ....................... *//* *********************************************************************** *//*  ============================================================================  void direct_reset (DIRECT_IIR *iir_ptr);  ~~~~~~~~~~~~~~~~~    Description:  ~~~~~~~~~~~~  Clear state variables in DIRECT_IIR structure, what has been  initialized by a previous call to one of the init functions.  Parameters:  ~~~~~~~~~~~  DIRECT_IIR *iir_ptr: ... pointer to struct DIRECT_IIR previously                            initialized by a call to one of the initialization                            routines.  Return value:  ~~~~~~~~~~~~~  Nothing.  Author: <simao@ctd.comsat.com>  ~~~~~~~  History:  ~~~~~~~~  31.Jul.95 v1.0 Release of 1st version <simao@ctd.comsat.com> ============================================================================*/void            direct_reset(iir_ptr)  DIRECT_IIR        *iir_ptr;{  long            n;  register float  (*T_ptr)[2];  long nblocks = (iir_ptr->poleno > iir_ptr->zerono)                     ? iir_ptr->poleno                      : iir_ptr->zerono;  T_ptr = iir_ptr->T;  for (n = 0; n < nblocks; n++)  {    T_ptr[n][0] = 0.0;    T_ptr[n][1] = 0.0;  }  iir_ptr->k0 = iir_ptr->idown;	  /* modulo counter for down-sampling */}/* ....................... End of direct_reset() ....................... *//*  ============================================================================  long direct_iir_kernel (long lseg, float *x_ptr, DIRECT_IIR *iir_ptr,  ~~~~~~~~~~~~~~~~~~~~~~~  float *y_ptr);  Description:  ~~~~~~~~~~~~  Basic direct-form IIR filtering routine, for both up- and   down-sampling.  Parameters:  ~~~~~~~~~~~  lseg: ...... number of input samples  x_ptr: ..... array with input samples  iir_ptr: ... pointer to IIR-struct (DIRECT_IIR *)  y_ptr: ..... output samples  Return value:  ~~~~~~~~~~~~~  Returns the number of output samples.    Author: <simao@ctd.comsat.com>  ~~~~~~~    History:  ~~~~~~~~  31.Jul.95 v1.0 Release of 1st version <simao@ctd.comsat.com> ============================================================================*/long            direct_iir_kernel(lseg, x_ptr, iir_ptr, y_ptr)  long            lseg;  float          *x_ptr;  DIRECT_IIR    *iir_ptr;  float          *y_ptr;{  if (iir_ptr->hswitch == 'U')    return      direct_form_iir_up_kernel( /* returns number of output samples */				lseg,	          /* In : input signal leng. */				x_ptr,	  /* In : input sample array */				y_ptr,	  /* Out: outp. sample array */				iir_ptr->idown, /* In : dwnsmpl.factor */				iir_ptr->zerono, /*In: no.IIR-zeroes */				iir_ptr->poleno, /*In: no.IIR-poles */				iir_ptr->gain,  /* In : gain factor*/				iir_ptr->a,	  /* In : num.coeffs */				iir_ptr->b,	  /* In : denom.coeffs */				iir_ptr->T	  /* I/O: state vars */				);  else    return      direct_form_iir_down_kernel(/* returns number of output samples */				  lseg,	  /* In : input signal leng. */				  x_ptr,	  /* In : input sample array */				  y_ptr,	  /* Out: outp. sample array */				  &(iir_ptr->k0), /*I/O: start idx,x-array */				  iir_ptr->idown, /*In : dwnsmpl.factor */				  iir_ptr->zerono, /*In: no.IIR-zeroes */				  iir_ptr->poleno, /*In: no.IIR-poles */				  iir_ptr->gain, /* In : gain factor */				  iir_ptr->a,	  /* In : numerator coeffs */				  iir_ptr->b,	  /* In : denom.coeffs */				  iir_ptr->T	  /* I/O: state vars */				  );}/* .................... End of direct_iir_kernel() ....................... *//*  ============================================================================  long direct_form_iir_down_kernel(long lenx, float *x,  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ float *y, long *k0,                                    long idown, long zerono, long poleno,                                    double gain, float *a,                                    float *b, float (*T)[2]);    Description:  ~~~~~~~~~~~~  Function for filtering a sequence of input samples by a  direct-form IIR-filter with down-sampling.    Parameters:  ~~~~~~~~~~~  lenx: ........ (In) length of input array x[]  x: ........... (In) array with input samples  y: ........... (Out) array with output samples  k0: .......... (In/Out) pointer to modulo counter  idown: ....... (In) down-sampling factor  zerono: ...... (In) number of zeroes  poleno: ...... (In) number of poles  gain: ........ (In) gain factor  b: ........... (In) numerator coefficients  c: ........... (In) denominator coefficients  T: ........... (In/Out) past sample memory: T[][0] store past numerator (x)                       samples and T[][1] stores past denominator (y) samples.                       T[0][0],T[0][1] are the most recent samples,                       T[zerono-1][0],T[poleno-1][1] are the oldest.  Return value:  ~~~~~~~~~~~~~  Returns the number of samples filtered.  Author: <simao@ctd.comsat.com>  ~~~~~~~  History:  ~~~~~~~~  31.Jul.95 v1.0 Release of 1st version <simao@ctd.comsat.com> ============================================================================*/static long     direct_form_iir_down_kernel(lenx, x, y, k0, idown,                                              zerono, poleno, gain, a, b, T)  long            lenx;  float          *x, *y;  long           *k0, idown, zerono, poleno;  double          gain;  float           *a, *b, (*T)[2];{  long            kx, ky, n;  double   yj;  ky = 0;			  /* starting index in output array (y) */  for (kx = 0; kx < lenx; kx++)	  /* loop over all input samples */  {    /* Save xk in memory */    T[0][0] = x[kx];     /* Filter samples through numerator (zero) part */    for (yj=0, n = 0; n < zerono; n++)          yj +=  a[n] * T[n][0];    /* Filter samples through denominator (pole) part */    for (n = 1; n < poleno; n++)          yj -= b[n] * T[n-1][1];    /* Shift samples in memory (to the right) for next step */    for (n = zerono-1; n >0; n--)          T[n][0] = T[n-1][0];    for (n = poleno-1; n >0; n--)          T[n][1] = T[n-1][1];    T[0][1] = yj;    /* Save to output only every "idown" samples */    if (*k0 % idown == 0)    {      /* Apply gain and update y-samples' counter */      y[ky] = yj * gain;      ky++;    }    (*k0)++;  }  *k0 %= idown;			  /* avoid overflow by (*k0)++ */  return ky;}/* .............. End of direct_form_iir_down_kernel() .............. *//*  ============================================================================  long direct_form_iir_up_kernel(long lenx, float *x,  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ float *y, long *k0,                                  long idown, long zerono, long poleno,                                  double gain, float *a,                                  float *b, float (*T)[2]);  Description:  ~~~~~~~~~~~~  Function for filtering a sequence of input samples by a  direct-form IIR-filter with up-sampling. Samples are taken from the   input vector x only once-in-idown times; in the other times, the input   sample is zero (interpolation process).   Parameters:  ~~~~~~~~~~~  lenx: ........ (In) length of input array x[]  x: ........... (In) array with input samples  y: ........... (Out) array with output samples  iup: ......... (In) up-sampling factor  zerono: ...... (In) number of zeroes  poleno: ...... (In) number of poles  gain: ........ (In) gain factor  b: ........... (In) numerator coefficients  c: ........... (In) denominator coefficients  T: ........... (In/Out) past sample memory: T[][0] store past numerator (x)                       samples and T[][1] stores past denominator (y) samples.                       T[0][0],T[0][1] are the most recent samples,                       T[zerono-1][0],T[poleno-1][1] are the oldest.  Return value:  ~~~~~~~~~~~~~  Returns the number of samples filtered.    Author: <simao@ctd.comsat.com>  ~~~~~~~    History:  ~~~~~~~~  31.Jul.95 v1.0 Release of 1st version <simao@ctd.comsat.com> ============================================================================*/static long     direct_form_iir_up_kernel(lenx, x, y, iup, zerono, poleno,					   gain, a, b, T)  long            lenx;  float          *x, *y;  long            iup, zerono, poleno;  double          gain;  float           *a, *b, (*T)[2];{  long            kx, ky, n;  register double yj;  kx = 0;			  /* starting index in input array (x) */  for (ky = 0; ky < iup * lenx; ky++)	/* loop over all input samples */  {    /* Compute output only every "iup" compute output only every "iup"      * samples by taking one input sample direct path OR by using a      * zero-valued sample; already save on memory array */    T[0][0] = (ky % iup == 0) ? x[kx] : 0;    /* Filter samples through numerator (zero) part */    for (yj=0, n = 0; n < zerono; n++)          yj +=  a[n] * T[n][0];    /* Filter samples through denominator (pole) part */    for (n = 1; n < poleno; n++)          yj -= b[n] * T[n-1][1];    /* Shift samples in memory (to the right) for next step */    for (n = zerono-1; n >0; n--)          T[n][0] = T[n-1][0];    for (n = poleno-1; n >0; n--)          T[n][1] = T[n-1][1];    T[0][1] = yj;    /* Apply the gain and update x counter if needed */    y[ky] = yj * gain;    if (ky % iup == 0) kx++;  }  return ky;}/* ............... End of direct_form_iir_up_kernel() ............... *//*  ============================================================================  DIRECT_IIR *direct_iir_init (long nblocks, float *a,  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  float *b, double gain, 	                         long idwnup, char hswitch);  Description:  ~~~~~~~~~~~~  Allocate & initialize struct for down/up-sampling procedures.  Parameters:  ~~~~~~~~~~~  long zerono: ........ number of zeroes  long poleno: ........ number of poles  float *a: ........... pointer to numerator coeffic.  float *b: ........... pointer to denominator coeffic.  double gain: ........ gain factor for filter  long idown: ......... Down-sampling factor  char hswitch: ....... to up-/downsampling routine  Return value:  ~~~~~~~~~~~~~  Returns a pointer to struct DIRECT_IIR;  Author: <simao@ctd.comsat.com>  ~~~~~~~    History:  ~~~~~~~~  31.Jul.95 v1.0 Release of 1st version <simao@ctd.comsat.com> ============================================================================*/DIRECT_IIR *direct_iir_init(zerono, poleno, a, b, gain, idown, hswitch)  long            zerono, poleno;  float           *a, *b;  double          gain;  long            idown;  char            hswitch;{  static DIRECT_IIR *ptrIIR;	  /* pointer to the new struct */  float           fak;  float           (*T_ptr)[2];  long            n;  long nblocks;  /* Get greater of zero and pole */  nblocks = zerono > poleno? zerono: poleno;  /* Allocate memory for a new struct */  ptrIIR = (DIRECT_IIR *) malloc((long) sizeof(DIRECT_IIR));  if (ptrIIR == (DIRECT_IIR *) 0L)  {    return 0;  }  /* Allocate memory for state variables */  if ((ptrIIR->T = (float (*)[2]) malloc((nblocks * 2) * sizeof(fak)))      == (float (*)[2]) 0)  {    free(ptrIIR);    return 0;  }  /* fill coefficient sets */  ptrIIR->poleno = poleno;	  /* store number of poles */  ptrIIR->zerono = zerono;	  /* store number of zeroes */  ptrIIR->a = a;  ptrIIR->b = b;  /* store down-sampling factor/gain/direct-path coefficient */  ptrIIR->idown = idown;  ptrIIR->gain = gain;  /* Store switch to IIR-kernel procedure */  ptrIIR->hswitch = hswitch;  /* Clear state variables */  T_ptr = ptrIIR->T;  for (n = 0; n < nblocks; n++)  {    T_ptr[n][0] = 0.0; /* Numerator memory */    T_ptr[n][1] = 0.0; /* Denominator memory */  }  ptrIIR->k0 = idown;		  /* modulo counter for down-sampling */  /* Exit returning pointer to struct */  return (ptrIIR);}/* ....................... End of direct_iir_init() ....................... *//*  ============================================================================  void direct_free (DIRECT_IIR *iir_ptr);  ~~~~~~~~~~~~~~~~~  Description:  ~~~~~~~~~~~~  Deallocate memory, which was allocated by an earlier call to one  of the initilization routines. `DIRECT_IIR *iir_prt' must not be  NULL.  Parameters:  ~~~~~~~~~~~  DIRECT_IIR *iir_ptr: ... pointer to struct DIRECT_IIR previously                            initialized by a call to one of the                            initialization routines.  Return value:  ~~~~~~~~~~~~~  Nothing.  Author: <simao@ctd.comsat.com>  ~~~~~~~    History:  ~~~~~~~~  31.Jul.95 v1.0 Release of 1st version <simao@ctd.comsat.com> ============================================================================*/void            direct_iir_free(iir_ptr)  DIRECT_IIR        *iir_ptr;{  free(iir_ptr->T);		  /* free state variables */  free(iir_ptr);		  /* free allocated struct */}/* ....................... End of direct_iir_free() ....................... *//* **************************** END OF IIR-LIB.C ************************ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美va欧美不卡在线| 激情综合色丁香一区二区| 亚洲男人都懂的| 国产精品天天看| 欧美国产一区在线| 日本一区二区不卡视频| 久久精品视频一区二区三区| 久久综合久久99| 久久久久国产精品厨房| 欧美高清在线精品一区| 国产精品午夜春色av| 综合在线观看色| 一区二区欧美国产| 亚洲成人在线网站| 日本va欧美va欧美va精品| 美女在线视频一区| 国模娜娜一区二区三区| 国产精品一区二区久久精品爱涩| 国产成人在线观看免费网站| 国产精品一区二区在线观看网站| 白白色亚洲国产精品| 日本高清无吗v一区| 欧美日韩黄色影视| 精品久久一二三区| 国产精品久久久久久久久免费丝袜| 亚洲丝袜美腿综合| 视频在线观看一区二区三区| 美国毛片一区二区三区| 成人免费视频一区二区| 91国内精品野花午夜精品 | 色哟哟亚洲精品| 欧美三级中文字| 日韩区在线观看| 亚洲国产精品成人综合色在线婷婷 | 麻豆一区二区99久久久久| 老司机一区二区| av中文字幕一区| 91麻豆精品国产自产在线观看一区 | 国产在线播放一区二区三区| 不卡免费追剧大全电视剧网站| 在线区一区二视频| 日韩欧美国产一区在线观看| 中文字幕亚洲成人| 日本美女一区二区三区视频| 成人小视频免费观看| 欧美日韩国产小视频在线观看| 亚洲精品一区二区三区影院| 亚洲欧美aⅴ...| 国内精品写真在线观看| 在线观看欧美日本| 精品福利视频一区二区三区| 亚洲色图都市小说| 久久精品国产亚洲高清剧情介绍| 91影视在线播放| 久久久亚洲欧洲日产国码αv| 亚洲一二三区在线观看| 国产精品亚洲а∨天堂免在线| 欧美三级视频在线观看| 国产日韩精品视频一区| 亚洲地区一二三色| 成人黄色软件下载| 日韩一区二区精品葵司在线| 亚洲人成网站精品片在线观看| 狠狠色综合日日| 欧美日韩一级片在线观看| 国产精品午夜电影| 激情综合色播五月| 91精品国产综合久久久久| 亚洲欧美日韩在线| 国产精品一二三| 日韩午夜激情av| 亚洲bdsm女犯bdsm网站| 99国产精品久久久久久久久久久| 日韩欧美一二区| 亚洲第一成年网| 91国内精品野花午夜精品| 国产精品进线69影院| 国产成a人亚洲| 日韩欧美第一区| 日韩在线播放一区二区| 色综合中文字幕国产| 国产精品每日更新| 国产精品一区久久久久| 精品少妇一区二区三区| 人人爽香蕉精品| 3d动漫精品啪啪| 五月天国产精品| 色狠狠色噜噜噜综合网| 综合电影一区二区三区| 99国产精品久久久久| 欧美激情一区在线| 成人午夜在线视频| 国产欧美一区二区三区沐欲| 国产中文一区二区三区| 欧美不卡123| 日韩av一二三| 欧美老肥妇做.爰bbww视频| 亚洲韩国精品一区| 欧美日韩大陆在线| 日韩国产欧美三级| 欧美一区午夜视频在线观看| 亚洲电影一区二区| 正在播放亚洲一区| 奇米精品一区二区三区在线观看 | 精品人在线二区三区| 麻豆国产一区二区| 欧美精品一区二区久久久| 九九久久精品视频 | 久久精品国产精品青草| 欧美一级片免费看| 另类小说图片综合网| 精品欧美一区二区久久| 国产精品一区二区在线播放| 国产网红主播福利一区二区| 国产成人精品午夜视频免费| 中文字幕精品一区二区精品绿巨人| 懂色av一区二区三区免费观看| 国产精品久久久久久久岛一牛影视| 成人激情校园春色| 亚洲精品国产一区二区精华液| 色94色欧美sute亚洲线路二 | 国产一区二区三区不卡在线观看 | 国产婷婷精品av在线| 成人免费视频一区| 亚洲另类春色校园小说| 欧美视频在线一区| 美女网站色91| 欧美国产日韩在线观看| 91成人国产精品| 日韩精品欧美成人高清一区二区| 精品国产伦一区二区三区免费| 国产成人av一区二区三区在线 | 91精品国产综合久久久久久久久久 | 国产精品资源在线| 成人欧美一区二区三区黑人麻豆 | 欧美精品日日鲁夜夜添| 麻豆成人久久精品二区三区红 | 国产成人免费在线视频| 一区精品在线播放| 91精品国产aⅴ一区二区| 国产一区二区美女诱惑| 国产精品久久免费看| 精品视频一区二区三区免费| 久久精品国产久精国产爱| 最新久久zyz资源站| 91精品国产综合久久精品| 国产成人a级片| 亚洲成人精品在线观看| 国产欧美日本一区视频| 在线看一区二区| 国产一区二区免费在线| 亚洲国产中文字幕| 欧美激情一区二区三区四区| 欧美视频在线不卡| 丰满岳乱妇一区二区三区| 亚洲bt欧美bt精品777| 国产欧美日韩亚州综合| 欧美久久久久久蜜桃| 成人高清免费观看| 人妖欧美一区二区| 亚洲精品午夜久久久| 精品日产卡一卡二卡麻豆| 欧美午夜片在线看| 国产成人在线视频网址| 日韩成人精品视频| 亚洲精品国产一区二区三区四区在线 | 成人激情动漫在线观看| 青椒成人免费视频| 一区二区三区日韩精品| 国产亚洲一二三区| 91精品麻豆日日躁夜夜躁| 一本一道久久a久久精品综合蜜臀| 毛片不卡一区二区| 亚洲成av人片一区二区三区| 亚洲色图一区二区| 国产人伦精品一区二区| 日韩精品一区二区三区三区免费| 91黄视频在线| 丰满少妇在线播放bd日韩电影| 久久不见久久见免费视频7 | 欧美性一级生活| 成人av影院在线| 国产一区二区不卡在线| 美腿丝袜亚洲综合| 午夜精品123| 午夜视频久久久久久| 一区二区三区在线视频观看| 国产欧美精品国产国产专区| 精品粉嫩aⅴ一区二区三区四区| 欧美一区二区福利在线| 欧美色大人视频| 色婷婷久久综合| 91美女片黄在线观看| 成人一二三区视频| 丁香五精品蜜臀久久久久99网站| 激情欧美一区二区| 麻豆国产精品视频| 九九国产精品视频| 久久国产欧美日韩精品| 久久国产福利国产秒拍|