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

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

?? viterbi.c

?? 從國外ECC網站上找到的
?? C
字號:
/* Viterbi decoder for arbitrary convolutional code
 * viterbi27 and viterbi37 for the r=1/2 and r=1/3 K=7 codes are faster
 * Copyright 1999 Phil Karn, KA9Q
 * May be used under the terms of the GNU Public License
 */

/* Select code here */
#define	K 15			/* Constraint length */
#define N 6			/* Number of symbols per data bit */
#define Polys	Poly615		/* Select polynomials here */

/* Rate 1/2 codes */
unsigned int Poly23[] = { 0x7, 0x5 };		/* K=3 */
unsigned int Poly24[] = { 0xf, 0xb };		/* k=4 */
unsigned int Poly25[] = { 0x17, 0x19 };		/* k=5 */
unsigned int Poly25a[] = { 0x13, 0x1b };	/* k=5, used in GSM?  */
unsigned int Poly26[] = { 0x2f, 0x35 };		/* k=6  */
unsigned int Poly27[] = { 0x6d, 0x4f };		/* k=7; very popular with NASA and industry  */
unsigned int Poly28[] = { 0x9f, 0xe5 };		/* k=8  */
unsigned int Poly29[] = { 0x1af, 0x11d };	/* k=9; used in IS-95 CDMA  */
unsigned int Poly215[] = { 0x45dd, 0x69e3 };	/* k = 15  */

/* Rate 1/3 codes */
unsigned int Poly33[] = { 0x7, 0x7, 0x5 };	/* k = 3 */
unsigned int Poly34[] = { 0xf, 0xb, 0xd };	/* k = 4 */
unsigned int Poly35[] = { 0x1f, 0x1b, 0x15 };	/* k = 5 */
unsigned int Poly36[] = { 0x2f, 0x35, 0x39 };	/* k = 6 */
unsigned int Poly37[] = { 0x4f, 0x57, 0x6d };	/* k = 7; also popular with NASA and industry  */
unsigned int Poly38[] = { 0xef, 0x9b, 0xa9 };	/* k = 8  */
unsigned int Poly39[] = { 0x1ed, 0x19b, 0x127 }; /* k = 9; used in IS-95 CDMA  */

/* Rate 1/6 code */
unsigned int Poly615[] = { 042631, 047245, 073363, 056507, 077267, 064537 }; /* k=15 on Mars Pathfinder */


#if (K>=6)
#define	D	(1 << (K-6))
#else
#define	D	1
#endif

#include <memory.h>
#define NULL ((void *)0)

extern unsigned char Partab[];	/* Parity lookup table */

int Rate = N;

int Syms[1 << K];
int VDInit;

inline int
parity(int x)
{
  x ^= (x >> 16);
  x ^= (x >> 8);
  return Partab[x & 0xff];
}

/* Convolutionally encode data into binary symbols */
encode(
unsigned char *symbols,
unsigned char *data,
unsigned int nbytes,
unsigned int startstate,
unsigned int endstate)
{
  int i,j;
  unsigned int encstate = startstate;

  while(nbytes-- != 0){
    for(i=7;i>=0;i--){
      encstate = (encstate << 1) | ((*data >> i) & 1);
      for(j=0;j<N;j++)
	*symbols++ = parity(encstate & Polys[j]);
    }
    data++;
  }
  /* Flush out tail */
  for(i=K-2;i>=0;i--){
    encstate = (encstate << 1) | ((endstate >> i) & 1);
    for(j=0;j<N;j++)
      *symbols++ = parity(encstate & Polys[j]);
  }
  return 0;
}

/* Viterbi decoder */
int
viterbi(
unsigned long *metric,	/* Final path metric (returned value) */
unsigned char *data,	/* Decoded output data */
unsigned char *symbols,	/* Raw deinterleaved input symbols */
unsigned int nbits,	/* Number of output bits */
int mettab[2][256],	/* Metric table, [sent sym][rx symbol] */
unsigned int startstate,         /* Encoder starting state */
unsigned int endstate            /* Encoder ending state */
){
  int bitcnt = -(K-1);
  long m0,m1;
  int i,j,sym;
  int mets[1 << N];
  unsigned long paths[(nbits+K-1)*D],*pp,mask;
  long cmetric[1 << (K-1)],nmetric[1 << (K-1)];
  
  memset(paths,0,sizeof(paths));

  if(!VDInit){
    for(i=0;i<(1<<K);i++){
      sym = 0;
      for(j=0;j<N;j++)
	sym = (sym << 1) + parity(i & Polys[j]);
      Syms[i] = sym;
    }
    VDInit++;
  }

  startstate &= ~((1<<(K-1)) - 1);
  endstate &= ~((1<<(K-1)) - 1);

  /* Initialize starting metrics */
  for(i=0;i< 1<<(K-1);i++)
    cmetric[i] = -999999;
  cmetric[startstate] = 0;

  pp = paths;
  for(;;){ /* For each data bit */
    /* Read input symbols and compute branch metrics */
    for(i=0;i< 1<<N;i++){
      mets[i] = 0;
      for(j=0;j<N;j++){
	mets[i] += mettab[(i >> (N-j-1)) & 1][symbols[j]];
      }
    }
    symbols += N;
    /* Run the add-compare-select operations */
    mask = 1;
    for(i=0;i< 1 << (K-1);i+=2){
      int b1,b2;
      
      b1 = mets[Syms[i]];
      nmetric[i] = m0 = cmetric[i/2] + b1; 
      b2 = mets[Syms[i+1]];
      b1 -= b2;
      m1 = cmetric[(i/2) + (1<<(K-2))] + b2;
      if(m1 > m0){
	nmetric[i] = m1;
	*pp |= mask;
      }
      m0 -= b1;
      nmetric[i+1] = m0;
      m1 += b1;
      if(m1 > m0){
	nmetric[i+1] = m1;
	*pp |= mask << 1;
      }
      mask <<= 2;
      if(mask == 0){
	mask = 1;
	pp++;
      }
    }
    if(mask != 1){
      pp++;
    }
    if(++bitcnt == nbits){
      *metric = nmetric[endstate];
      break;
    }
    memcpy(cmetric,nmetric,sizeof(cmetric));
  }

  /* Chain back from terminal state to produce decoded data */
  if(data == NULL)
    return 0;/* Discard output */
  memset(data,0,(nbits+7)/8); /* round up in case nbits % 8 != 0 */

  for(i=nbits-1;i >= 0;i--){
    pp -= D;
    if(pp[endstate >> 5] & (1 << (endstate & 31))){
      endstate |= (1 << (K-1));
      data[i>>3] |= 0x80 >> (i&7);
    }
    endstate >>= 1;
  }
  return 0;
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品亚洲专区| 免费在线看成人av| 天使萌一区二区三区免费观看| 麻豆精品国产91久久久久久| 99久久精品免费看| 日韩美女在线视频| 亚洲综合在线电影| 成人中文字幕电影| 日韩久久免费av| 性做久久久久久| 色综合久久久久久久久| 精品国产网站在线观看| 亚州成人在线电影| 91女人视频在线观看| 久久久噜噜噜久噜久久综合| 亚洲丶国产丶欧美一区二区三区| 成人综合婷婷国产精品久久 | 天堂在线一区二区| www.日韩在线| 亚洲国产激情av| 蜜桃av噜噜一区二区三区小说| 在线观看亚洲专区| 亚洲女同一区二区| av在线播放一区二区三区| 国产亚洲一区二区在线观看| 男女性色大片免费观看一区二区| 欧美日韩在线三级| 亚洲综合自拍偷拍| 欧美日韩精品福利| 香蕉av福利精品导航| 在线一区二区三区四区| 亚洲精品videosex极品| 99re6这里只有精品视频在线观看| 久久精品视频在线看| 国产美女在线精品| 久久影院午夜论| 精品在线亚洲视频| 久久久精品tv| 国产成人免费视频| 中文字幕乱码久久午夜不卡| 成人免费看的视频| 亚洲天堂av老司机| 在线一区二区观看| 天天色天天爱天天射综合| 欧美日韩三级一区| 日本aⅴ免费视频一区二区三区| 欧美精品aⅴ在线视频| 免费观看在线综合| 久久人人超碰精品| 成人av免费在线观看| 亚洲欧美日韩电影| 欧美日韩一卡二卡| 久草中文综合在线| 国产精品久久久久aaaa樱花| 99久久精品费精品国产一区二区| 亚洲一区二区3| 91麻豆精品国产自产在线| 久久精品国产亚洲a| 久久香蕉国产线看观看99| 成人一区二区三区| 亚洲精品国产无天堂网2021 | 婷婷中文字幕综合| 日韩免费性生活视频播放| 国产精品一级在线| 亚洲素人一区二区| 欧美一区二区三区视频免费| 国产综合久久久久久鬼色| 中文字幕亚洲不卡| 日韩欧美一级二级三级| 成人永久看片免费视频天堂| 亚洲福中文字幕伊人影院| 久久久久国产精品麻豆| 色综合av在线| 国产精品一区在线观看乱码| 依依成人精品视频| 精品999在线播放| 成人午夜视频在线观看| 亚洲成人免费在线观看| 久久色在线观看| 欧美美女黄视频| 国产成人av影院| 亚洲bdsm女犯bdsm网站| 美日韩一级片在线观看| 欧美一区二区在线不卡| av一本久道久久综合久久鬼色| 日韩精彩视频在线观看| 日韩精品亚洲专区| 亚洲精品免费视频| 久久嫩草精品久久久久| 欧美精品在线一区二区| 成人av中文字幕| 美女任你摸久久| 夜夜精品视频一区二区| 欧美—级在线免费片| 欧美sm美女调教| 精品视频资源站| 色综合久久久久| 成人国产精品免费网站| 国产毛片精品视频| 免费观看成人av| 天涯成人国产亚洲精品一区av| 亚洲少妇屁股交4| 国产精品久久久久久久久免费丝袜 | 亚洲女人****多毛耸耸8| 国产偷国产偷亚洲高清人白洁| 日韩一级片在线观看| 91成人免费在线| 色综合久久久久网| 99精品欧美一区二区蜜桃免费| 国产·精品毛片| 国产福利一区二区三区视频| 精品亚洲免费视频| 久久精品国产免费| 精品一区精品二区高清| 免费成人美女在线观看| 免费观看30秒视频久久| 欧美少妇xxx| 91久久免费观看| 欧美自拍丝袜亚洲| 在线视频一区二区三| 欧美色图免费看| 欧美亚洲图片小说| 在线精品视频免费播放| 欧美私人免费视频| 欧美精品粉嫩高潮一区二区| 欧美日韩1234| 精品国产乱码久久久久久蜜臀| 日韩免费电影网站| 久久众筹精品私拍模特| 欧美国产欧美综合| 国产精品成人免费在线| 亚洲欧美欧美一区二区三区| 一个色综合av| 天天综合网 天天综合色| 久久99精品国产.久久久久久| 久久99久久精品欧美| 国产精品综合一区二区三区| 成人激情小说网站| 欧美自拍偷拍一区| 欧美精品一卡两卡| www国产精品av| 国产精品丝袜一区| 亚洲综合在线免费观看| 美女网站一区二区| 国产.精品.日韩.另类.中文.在线.播放| 国产福利视频一区二区三区| 成人激情免费网站| 欧美精品成人一区二区三区四区| 精品少妇一区二区| 日韩理论片网站| 日韩电影一二三区| 国产盗摄一区二区| 欧美午夜精品一区二区三区| 日韩精品一区二区三区视频播放 | 亚洲欧美日韩国产另类专区| 亚洲成a天堂v人片| 国产福利精品一区二区| 欧美网站一区二区| 久久中文字幕电影| 亚洲mv在线观看| 国产91在线看| 91精品国产综合久久小美女| 国产精品二三区| 老色鬼精品视频在线观看播放| 播五月开心婷婷综合| 日韩限制级电影在线观看| 国产精品久久三| 青青草国产成人av片免费| 成人18视频日本| 精品伦理精品一区| 亚洲一区免费在线观看| 国产激情精品久久久第一区二区| 欧美色精品天天在线观看视频| 久久久久久免费毛片精品| 亚洲高清免费观看 | 亚洲天堂2016| 国产激情一区二区三区四区| 欧美人与禽zozo性伦| 亚洲欧美在线aaa| 国产乱对白刺激视频不卡| 欧美日韩国产综合一区二区三区| 国产精品丝袜黑色高跟| 九九在线精品视频| 欧美日韩一区二区三区视频| 国产精品你懂的在线| 久久99这里只有精品| 555夜色666亚洲国产免| 一区二区成人在线视频| 91在线观看成人| 国产精品青草综合久久久久99| 久久99国内精品| 日韩欧美黄色影院| 青草av.久久免费一区| 欧美乱妇15p| 亚洲高清视频中文字幕| 欧美日韩一区中文字幕| 亚洲一区二区三区小说| 在线观看视频一区二区| 一级日本不卡的影视| 欧洲一区在线电影|