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

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

?? celp.c

?? this the source code of addio compression standard CELP. Also, it is optimizied for the execution sp
?? C
字號:
/**************************************************************************
*                                                                         *
*       CELP Voice Decoder --- A fast version                             *
*       Base on the original Version 3.2c.                                *
*       Copyright CMU   1994.5.
*                                                                         *
*                                                                         *
**************************************************************************/
#define TRUE		1
#define FALSE		0
#define STREAMBITS	144
#define CODELENGTH1	15
#define CODELENGTH2	11
#define PARITYLENGTH	(CODELENGTH1 - CODELENGTH2)
#define SYNDRUN		100
#define OMEGA		0.994127  /* Bandwidth expansion for LPC analysis (15 Hz) */
#define ALPHA		0.8  /* Bandwidth expansion for postfilter */
#define BETA		0.5  /* Bandwidth expansion for postfilter */
#define mmax(A,B)        ((A)>(B)?(A):(B))
#define mmin(A,B)        ((A)<(B)?(A):(B))
/*  #define nint(F)          (((F)>0)?(int)(F+0.5):(int)(F-0.5))  */
#include <stdio.h>
#include <math.h>
#include <strings.h>
#include "ccsub.h"

int cbgbits = 5, cbindex = 0, gindex = 0, idb = 0, ncsize = 512, no = 10;
int nseg = 0, pindex = 0, frame = 0, tauptr = 0, minptr = 0, plevel1 = 0;
int plevel2 = 0, pbits[MAXNP + 2] = {8, 6, 5, 0, 0};
int mxsw = 1;

float bb[MAXNP + 1], e0[MAXLP];
float fc[MAXNO + 1], fcn[MAXNO + 1], fci[MAXNO + 1];
float h[MAXLP], gamma2 = 0.8, prewt = 0.0;

  /* *read adaptive code book index (pitch delay) file		*/
float pdelay[MAXPD] = 
{
#include "pdelay.h"
};

  /* *load stochastic code book vector	file			*/
float x[MAXCODE] = 
{
#include "codebook.h"
};

char ptype[10] = "max2", cbgtype[10] = "log";
char pstype[10] = "hier";

main(argc, argv)
int argc;
char *argv[];

{

  int cbi[MAXLL / MAXL], framesnr = 0;
  int framedm = 0, framedm2 = 0, i, j, k, l = 60, lun[10];
  int ll = 240, lp = 60, nn, np = 1, nrec1 = 1, nrec2 = 1, nrec3 = 1;
  int findex[MAXNO];
  int error = 0, total = 0, flag;
  int pdtabi[MAXPD], sync = 1;

  short iarf[MAXLL], npf[MAXLL], pf[MAXLL];

  float cbg[MAXLL / MAXL], pgs[MAXLL / MAXL];
  float sold[MAXLL], snew[MAXLL], ssub[MAXLL], v[MAXLL];
  float vdecoded[MAXLL], rcn[MAXNO], hamw[MAXLL], hamws[MAXL], dpa[MAXPA];
  float dps[MAXPA], newfreq[MAXNO], unqfreq[MAXNO], lsp[MAXLL / MAXL][MAXNO];
  float dppa[MAXPA], dpps[MAXPA]; 
  float scale = 1.0, decodedgain, dm[9], dm2[9], taus[4], descale = 1.0;

  /* *load pitch delay coding tables for bit assignment		*/
  /* *pdencode.h for encoding, pddecode.h for decoding 		*/
  static int pdencode[MAXPD] = 
  {
#include "pdencode.h"
  };

  static float pddecode[MAXPD] = 
  {
#include "pddecode.h"
  };

  /* *filter coefficients for 2nd order 100 Hz HPF with 60 Hz notch:	*/
  /* static float ahpf[3] = {1.0, -1.99778, 1.0};  */
  /* static float bhpf[3] = {1.0, -1.88 0.89};  */

  /* *filter coefficients for 2nd order Butterworth 100 Hz HPF:		*/
  static float ahpf[3] = {0.946, -1.892, 0.946};
  static float bhpf[3] = {1.0, -1.889033, 0.8948743};

  /* *filter coefficients for 2nd order Butterworth 275 Hz HPF:		*/
  /* static float ahpfo[3] = {0.858, -1.716, 0.858}; */
  /* static float bhpfo[3] = {1.0, -1.696452, 0.7368054}; */

  static float ahpfo[3] = {0.946, -1.892, 0.946};
  static float bhpfo[3] = {1.0, -1.889033, 0.8948743};


/*
		*bit stream 
*/

  int cbbits = 9, pointer, bitpointer, bitsum1, bitsum2;
  int mask[STREAMBITS], ssum, pstream[STREAMBITS]; 
  static int sbits[MAXNO] = {3, 4, 4, 4, 4, 3, 3, 3, 3, 3};
  short stream[STREAMBITS], savestream[STREAMBITS];
  char line[38];

/*
		*filter memories (should be maxno+1)
*/

  static float dhpf1[3], dhpf2[3], dsa[MAXNO+1], dss[MAXNO+1];
  static float dhpf1o[3], dhpf2o[3];
  static float dp1[MAXNO+1], dp2[MAXNO+1], dp3[2];
  static float ip, op, sumsnr, sumdm[10], sumdm2[10];

/*
		*error control coding parameters:
*/
  float ber = 0.0, realerror, syndavg = 0.0;
  int codeword[CODELENGTH1], hmatrix[CODELENGTH1];
  int syndrometable[CODELENGTH1], paritybit, twoerror, protect;
  int syndrome, eccbits = 5;	

  /* *load bit protection vector 				*/
  static int bitprotect[CODELENGTH2] = 
  {
#include "bitprot.h"
  };

  /* *load bit permutation vector				 */
  static int bitpermute[STREAMBITS] = 
  {
#include "bitperm.h"
  };

  char tempstr[82];

  static char ifile[82];
  static char ofile[82];
  static char stype[12]="kang";

  FILE *fopen(), *fp25;
  FILE  *fp125, *fp126, *fp127;

  int nrec9 = 1;

  /* *start CELP                                         */

//strcpy(ifile, *++argv);
//strcpy(ofile, *++argv);
strcpy(ifile, argv[1]);
strcpy(ofile, argv[2]);




  /* *intialize mask						*/

  for (i = 0; i < STREAMBITS; i++)
  {
    mask[i] = 0;
  }

  /* ********************* initialize********************	 */

  /* *number of codewords/LPC frame				 */

  nn = ll / l;

  /* *dimension of d1a and d1b???				 */

  idb = MMAX + MAXNP - 1 + l;
  plevel1 = 1 << pbits[0];

  /* *levels of delta tau					 */

  plevel2 = 1 << pbits[1];

  /* *number of bits per subframe				 */

  bitsum1 = cbbits + cbgbits + pbits[0] + pbits[2];
  bitsum2 = cbbits + cbgbits + pbits[1] + pbits[2];

  /* *enable/disable error control coding			 */

  protect = TRUE;

  /* *for double error detecting FEC codes (NOT USED)		*/

  twoerror = FALSE;

  /* *intialize arrays						*/

  for (i = 0; i < MAXLP; i++) h[i] = e0[i] = 0.0;
  for (i = 0; i < MAXLL; i++) sold[i] = 0.0;
  for (i = 0; i < STREAMBITS; i++) stream[i] = savestream[i] = 0;

  /* *start nseg at 0 to do pitch on odd segments 		*/
  /*   (nseg is incremented before csub) 			*/

  nseg = 0;

  /* *generate matrix for error control coding			 */

  matrixgen(CODELENGTH1, CODELENGTH2, hmatrix, syndrometable);


  /* *** open and define files					 */

  fp125 = fopen(strcat(strcpy(tempstr, ofile), ".spd"), "w");
  if (fp125 == NULL)
  {
    perror("celp: Error opening the output.spd file");
    exit(0);
  }

  fp126 = fopen(strcat(strcpy(tempstr, ofile), "npf.spd"), "w");
  if (fp126 == NULL)
  {
    perror("celp: Error opening the output.spd file");
    exit(0);
  }

  fp127 = fopen(strcat(strcpy(tempstr, ofile), "hpf.spd"), "w");
  if (fp127 == NULL)
  {
    perror("celp: Error opening the output.spd file");
    exit(0);
  }


  /* *bit stream channel file					*/
  fp25 = fopen(ifile, "r");
  if (fp25 == NULL)
  {
    perror("celp: Error opening the channel file");
    exit(0);
  }


  /* *generate pdtabi for delta delay coding			*/
  for (i = 0; i < MAXPD; i++)
  {
    pdtabi[pdencode[i]] = i;
  }

  /* ......................... m a i n  l o o p ........................ */

  /* *** CHANNEL ..................................................	 */

  /* *read in channel file (if synthesis only)				 */
  while (fscanf(fp25, "%s", line) != EOF)
  {
    pointer = -1; 
    gethex(STREAMBITS, pstream, line);
    frame++;

    /* *display a propeller (rotating bar) once per frame		 */

//    mark(0);

    /* *unpermute bitstream 						 */

    for (i = 0; i < STREAMBITS; i++)
      stream[bitpermute[i] - 1] = pstream[i];

    /* *** corrupt the channel with bit errors 				 */

    biterror(ber, mask, stream, STREAMBITS, &error, &total);



    /* *** SYNTHESIS ..........................................		 */

    /* *unpack parity bits						 */

    if (protect)
    {
      pointer = pointer - PARITYLENGTH - 2;

#ifndef ANALY
      pointer = 138;
#endif

      for (i = 0; i < PARITYLENGTH; i++)
	unpack(stream, 1, &codeword[CODELENGTH2 + i], &pointer);

      /* *extract code word from stream array				 */

      for (i = 0; i < CODELENGTH2; i++)
	codeword[i] = stream[bitprotect[i] - 1];

      /* repack Bisnu bit (remains constant for now)			 */

      codeword[10] = 0;

      /* *Hamming decode						 */

      decodeham(CODELENGTH1, hmatrix, syndrometable, paritybit, codeword,
		 &twoerror, &syndrome);

      /* *disable parity check (if parity not used)			 */
      twoerror = FALSE;

      /* *bit error rate estimator (running avg of bad syndromes)	 */

      if (syndrome != 0)
        syndrome = 1;
      syndavg = (1.0 - (1.0 / SYNDRUN)) * syndavg + (1.0 / SYNDRUN) * (float) syndrome;

      /* *repack protected bits						 */

      for (i = 0; i < CODELENGTH2; i++)
	stream[bitprotect[i] - 1] = codeword[i];

      /* *frame repeat if two errors detected in code word		 */

      if (twoerror)
	printf("celp: two errors have occured in frame %d\n", frame);

    }

    pointer = -1;

    /* *unpack data stream						 */

    for (i = 0; i < no; i++)
      unpack(stream, sbits[i], &findex[i], &pointer);

    /* *decode lsp's							 */

    lspdecode34(findex, no, newfreq);

    /* *interpolate spectrum lsp's for nn subframes			 */

    intsynth(newfreq, nn, lsp, twoerror, syndavg);


    /* *decode all code book and pitch parameters			 */

    bitpointer = pointer;
    dcodtau(pbits[0], pbits[1], bitsum1, bitsum2, &bitpointer, nn, stream, pddecode, pdtabi, taus);
    dcodpg(pbits[2], bitsum1, bitsum2, &bitpointer, nn, stream, pgs);
    dcodcbi(cbbits, bitsum1, bitsum2, &bitpointer, nn, stream, cbi);
    dcodcbg(cbgbits, bitsum1, bitsum2, &bitpointer, nn, stream, cbg);

    /* *** synthesize each subframe					 */

    k = 0;
    for (i = 0; i < nn; i++)
    {
      nseg++;


      /* *decode values for subframe					 */

      cbindex = cbi[i];
      decodedgain = cbg[i];
      if (protect)
	smoothcbgain(&decodedgain, twoerror, syndavg, cbg, i + 1);

      /* *code book synthesis						 */

      vdecode(decodedgain, l, &vdecoded[k]);

      if (protect)
	smoothtau(&taus[i], twoerror, syndavg, taus[2], i + 1);
      bb[0] = taus[i];
      bb[2] = pgs[i];
      if (protect)
	smoothpgain(&bb[2], twoerror, syndavg, pgs, i + 1);


      /* *pitch synthesis						 */

      pitchvq(&vdecoded[k], l, dps, idb, bb, "long");

      /* *pitch pre filter (synthesis)					 */

      if (prewt != 0.0) 
        prefilt(&vdecoded[k], l, dpps);

      /* convert lsp's to pc's 						 */

      lsptopc(&lsp[i][0], fci);	

      /* lpc synthesis	 						 */ 

      polefilt(fci, no, dss, &vdecoded[k], l);	



      /* *** write nonpostfiltered output speech disk files		 */

      for (j = 0; j < l; j++)
      {
        vdecoded[k + j] = descale * vdecoded[k + j];
	npf[k + j] = nint(mmax(-32768., mmin(32767., vdecoded[k + j])));
      }

      /* *write npf output speech file "ofilenpf"			 */

      if ( fwrite(&npf[k], sizeof(short), l, fp126)  != l)
      {
        fprintf(stderr, "celp: *** Error writing ofilenpf.spd\n");
        exit(1);
      }


      /* *** post filtering						 */

      postfilt(&vdecoded[k], l, ALPHA, BETA, &ip, &op, dp1, dp2, dp3);

      /* *** test for output speech clipping				 */

      while (clip(&vdecoded[k], l))
      {

      /* frame repeat & recall synthesizer? 				 */
      /* or scale vdecoded?						 */

	printf("celp: Clipping detected at frame %d\n", frame);
        for (j = 0; j < l; j++)
          vdecoded[k + j] = 0.05 * vdecoded[k + j]; 
      }

      /* *** write postfiltered output speech disk files		 */

      for (j = 0; j < l; j++)
	pf[k + j] = nint(mmax(-32768., mmin(32767., vdecoded[k + j])));

      /* *write output speech file "ofile"				 */

      if ( fwrite(&pf[k], sizeof(short), l, fp125)  != l)
      {
        fprintf(stderr, "celp: *** Error writing ofile.spd\n");
        exit(1);
      }


      /* *high pass filter output speech	 */

/*
      zerofilt_S(ahpfo, 2, dhpf1o, &vdecoded[k], l);
      polefilt_S(bhpfo, 2, dhpf2o, &vdecoded[k], l);

      for (j = 0; j < l; j++)
        pf[k + j] = nint(mmax(-32768., mmin(32767., vdecoded[k + j])));


      if ( fwrite(&pf[k], sizeof(short), l, fp127)  != l)
      {
        fprintf(stderr, "celp: *** Error writing ofilehpf.spd\n");
        exit(1);
      }
*/
      k += l;
    }

  } /* end main while loop; either the analyzer loop, analyzer and       */
    /* sungraph loop or the synthesizer only loop	 		 */


  /* ...........e n d  m a i n  l o o p ...............................  */


  fclose(fp25);
  fclose(fp125);
  fclose(fp126);
  fclose(fp127);
  exit(0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜精品网| 国产一区二区三区久久久| 欧美精品一区二区三| 91色porny| 国产老肥熟一区二区三区| 午夜伦理一区二区| 亚洲欧美另类小说视频| 久久久www免费人成精品| 欧美精品乱码久久久久久| av在线播放一区二区三区| 国产一区二区中文字幕| 日本大胆欧美人术艺术动态| 亚洲一区二区三区四区在线 | 在线免费观看日本欧美| 国产激情视频一区二区在线观看| 日韩高清不卡在线| 亚洲激情校园春色| 国产精品国产成人国产三级| 久久九九99视频| 精品噜噜噜噜久久久久久久久试看 | 久久精品国产秦先生| 亚洲成人av福利| 一区二区三区欧美日韩| 亚洲欧美日本韩国| 亚洲嫩草精品久久| 亚洲视频电影在线| 中文字幕日韩一区二区| 欧美国产丝袜视频| 欧美国产视频在线| 国产精品污www在线观看| 国产日韩高清在线| 中国色在线观看另类| 国产精品视频一二| 国产精品久线在线观看| 国产精品美女久久久久久久久久久| 久久久久久久久久久久久久久99 | 久久精品日产第一区二区三区高清版| 欧美成人精品1314www| 日韩精品一区二| 日韩久久精品一区| 久久这里只有精品首页| ww亚洲ww在线观看国产| 国产色产综合色产在线视频| 欧美极品xxx| 亚洲欧美一区二区三区极速播放| 国产精品视频在线看| 亚洲欧美另类久久久精品2019| 亚洲日本在线视频观看| 亚洲亚洲人成综合网络| 日日夜夜精品视频免费| 老司机午夜精品| 国产精品18久久久| 99re热视频精品| 欧美亚男人的天堂| 欧美电影一区二区| 久久亚洲影视婷婷| 亚洲欧洲精品一区二区三区 | 国产精品区一区二区三区| 亚洲丝袜美腿综合| 婷婷国产在线综合| 国产一区二区久久| 91在线无精精品入口| 欧美日本一区二区在线观看| 精品久久国产97色综合| 欧美高清在线视频| 亚洲国产成人高清精品| 精品在线免费观看| 色婷婷狠狠综合| 日韩欧美一二三区| 亚洲欧美综合另类在线卡通| 亚洲成人午夜影院| 国产原创一区二区| 91久久精品一区二区| 日韩视频在线你懂得| 国产精品国产自产拍在线| 偷拍日韩校园综合在线| 国产99久久久国产精品| 欧美私人免费视频| 久久久亚洲高清| 亚洲一级片在线观看| 精品一区二区三区在线观看| 色综合天天性综合| 亚洲精品一区二区在线观看| 亚洲视频每日更新| 黄色精品一二区| 欧美系列日韩一区| 亚洲国产经典视频| 日韩**一区毛片| 91蝌蚪porny| 久久精品视频一区| 日韩综合在线视频| 91老司机福利 在线| 久久久不卡网国产精品二区| 五月婷婷色综合| 色综合久久久久网| 国产日韩欧美a| 看电影不卡的网站| 欧美探花视频资源| ...xxx性欧美| 国产精品系列在线播放| 欧美一区二区视频观看视频 | 亚洲成人动漫在线观看| 成人av午夜电影| 久久伊人中文字幕| 美女诱惑一区二区| 欧美午夜视频网站| 亚洲欧美日本在线| 成人免费高清在线观看| 久久一区二区三区四区| 蜜桃精品视频在线| 69久久夜色精品国产69蝌蚪网| 亚洲狠狠丁香婷婷综合久久久| 成人网男人的天堂| 国产无人区一区二区三区| 免费在线观看精品| 欧美精品vⅰdeose4hd| 亚洲国产日韩在线一区模特| 91伊人久久大香线蕉| 国产精品乱人伦中文| 国产精品一区二区在线播放| 精品国产乱码久久久久久浪潮 | 国产精品福利一区| 成人午夜激情影院| 中文字幕国产精品一区二区| 国产伦精品一区二区三区在线观看| 日韩写真欧美这视频| 美女爽到高潮91| 日韩女优av电影| 九九久久精品视频| 精品福利视频一区二区三区| 激情综合色综合久久| 26uuu亚洲综合色欧美| 国产精品自拍网站| 国产农村妇女精品| 成人app软件下载大全免费| 国产精品丝袜一区| 91色婷婷久久久久合中文| 亚洲情趣在线观看| 在线亚洲高清视频| 丝袜美腿亚洲一区二区图片| 欧美一区二区成人| 久久爱另类一区二区小说| 精品成a人在线观看| 国产成人综合精品三级| 国产精品欧美久久久久无广告| 99免费精品视频| 亚洲精品久久嫩草网站秘色| 欧美日韩免费视频| 美日韩一区二区| 欧美高清在线一区| 色婷婷亚洲一区二区三区| 亚洲在线成人精品| 日韩写真欧美这视频| 高清不卡一区二区在线| 亚洲老妇xxxxxx| 欧美一区二区视频在线观看2022| 久久av中文字幕片| 国产精品久久久久婷婷| 在线国产亚洲欧美| 美女被吸乳得到大胸91| 国产女同性恋一区二区| 在线亚洲+欧美+日本专区| 日韩成人一级片| 中文字幕欧美日本乱码一线二线| 色一情一乱一乱一91av| 免费人成在线不卡| 国产欧美一区二区精品忘忧草| 色婷婷综合五月| 久久超碰97中文字幕| 亚洲婷婷在线视频| 日韩欧美国产成人一区二区| 国产69精品一区二区亚洲孕妇 | 成人18精品视频| 亚洲福利视频一区| 国产亚洲欧美激情| 欧美情侣在线播放| 国产成人亚洲精品狼色在线| 亚洲国产日韩a在线播放| 久久亚洲春色中文字幕久久久| 色综合天天综合给合国产| 精品一区二区综合| 亚洲综合激情小说| 国产欧美日韩卡一| 欧美一区二区三区成人| 不卡的av中国片| 久久国产精品色婷婷| 一区二区在线免费| 久久精品夜色噜噜亚洲aⅴ| 欧美另类变人与禽xxxxx| 不卡一区二区中文字幕| 久久99精品久久久久久动态图| 洋洋av久久久久久久一区| 国产日产欧产精品推荐色| 777午夜精品视频在线播放| 91麻豆视频网站| 高清国产一区二区| 国内精品国产三级国产a久久| 亚洲第一福利视频在线| 亚洲婷婷综合久久一本伊一区| 久久久精品国产免大香伊|