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

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

?? decode.cpp

?? veterbi 編解碼程序
?? CPP
字號:
#include <windows.h>
#include <stdio.h>

#include "decode.h"

/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
const static int statustable[64][4]={	{0,1,1,0},{1,1,0,0},{1,0,0,1},{0,0,1,1},//64種狀態,每個當前狀態有兩個后續狀態
								{1,0,0,1},{0,0,1,1},{0,1,1,0},{1,1,0,0},//后續上狀態:  [0]:G1,[1]:G2;	后續下狀態: [2]:G1,[3]:G2;
								{0,1,1,0},{1,1,0,0},{1,0,0,1},{0,0,1,1},
								{1,0,0,1},{0,0,1,1},{0,1,1,0},{1,1,0,0},
								{0,0,1,1},{1,0,0,1},{1,1,0,0},{0,1,1,0},
								{1,1,0,0},{0,1,1,0},{0,0,1,1},{1,0,0,1},
								{0,0,1,1},{1,0,0,1},{1,1,0,0},{0,1,1,0},
								{1,1,0,0},{0,1,1,0},{0,0,1,1},{1,0,0,1},
								{1,0,0,1},{0,0,1,1},{0,1,1,0},{1,1,0,0},
								{0,1,1,0},{1,1,0,0},{1,0,0,1},{0,0,1,1},
								{1,0,0,1},{0,0,1,1},{0,1,1,0},{1,1,0,0},
								{0,1,1,0},{1,1,0,0},{1,0,0,1},{0,0,1,1},
								{1,1,0,0},{0,1,1,0},{0,0,1,1},{1,0,0,1},
								{0,0,1,1},{1,0,0,1},{1,1,0,0},{0,1,1,0},
								{1,1,0,0},{0,1,1,0},{0,0,1,1},{1,0,0,1},
								{0,0,1,1},{1,0,0,1},{1,1,0,0},{0,1,1,0}	};
////////////////////////////////////////////////////////////////////
static BYTE BV(BYTE i)//類似于avr中的_BV()函數
{
	BYTE out=0x01;
	return (out<<i);
}

static BYTE get(BYTE i,BYTE num)//獲得num比特的值
{
	return (i&BV(num))>>num;
}

static void set(PBYTE i,BYTE num,BYTE enset)
{
	if(enset)
		*i=*i|BV(num);//對num比特置位
	else
		*i=*i&(~BV(num));//對num比特復位
}

static int bmgup(int i,PBYTE data)
{
	int a,b;
	a=(statustable[i][0]==data[0])?0:1;
	b=(statustable[i][1]==data[1])?0:1;
	return (a+b);
}

static int bmgdown(int i,PBYTE data)
{
	int a,b;
	a=(statustable[i][2]==data[0])?0:1;
	b=(statustable[i][3]==data[1])?0:1;
	return (a+b);
}

static int judge(int *totalms)
{
	int a,b=0;
	int temp=totalms[0];

	for(a=1;a<64;a++)
	{
		if(totalms[a]<temp)
		{
			temp=totalms[a];b=a;
		}
	}
	return b;
}

void viterbi_jbx(PBYTE data,PBYTE outdata,int *totalms1,int *totalms2,PBYTE route1,PBYTE route2,int *eninitial)//加比選單元
{
	static int routenum=0,outnum=0,outbyte=7;
	//routenum:用于譯碼深度,outnum:譯碼輸出數據的字節數,outbyte:當前譯碼輸出字節的比特數

	int upms1,upms2,downms1,downms2;//本次度量
	int i;//statusnum
	int j;

	if(*eninitial==1)//重新初始化
	{
		routenum=0,outnum=0,outbyte=7;
		//重新初始化完成
		*eninitial=0;
	}

	for(i=0;i<32;i++)//由狀態表的特點決定
	{
		upms1=bmgup(i,data);
		upms2=bmgup((i+32),data);
		downms1=bmgdown(i,data);
		downms2=bmgdown((i+32),data);
		
		if((totalms1[i]+upms1)<(totalms1[i+32]+upms2))
		{
			totalms2[2*i]=totalms1[i]+upms1;
			for(j=0;j<routenum;j++)
				*(route2+2*i*DEPTH+j)=*(route1+i*DEPTH+j);
			*(route2+2*i*DEPTH+routenum)=0;
		}
		else
		{
			totalms2[2*i]=totalms1[i+32]+upms2;
			for(j=0;j<routenum;j++)
				*(route2+2*i*DEPTH+j)=*(route1+(i+32)*DEPTH+j);
			*(route2+2*i*DEPTH+routenum)=0;
		}

		if((totalms1[i]+downms1)<(totalms1[i+32]+downms2))
		{
			totalms2[2*i+1]=totalms1[i]+downms1;
			for(j=0;j<routenum;j++)
				*(route2+(2*i+1)*DEPTH+j)=*(route1+i*DEPTH+j);
			*(route2+(2*i+1)*DEPTH+routenum)=1;
		}
		else
		{
			totalms2[2*i+1]=totalms1[i+32]+downms2;
			for(j=0;j<routenum;j++)
				*(route2+(2*i+1)*DEPTH+j)=*(route1+(i+32)*DEPTH+j);
			*(route2+(2*i+1)*DEPTH+routenum)=1;
		}
	}

	if(routenum==(DEPTH-1))//達到譯碼深度
	{
		set(&outdata[outnum],outbyte--,*route2);
		//set(&outdata[outnum],outbyte--,*(route2+judge(totalms2)*DEPTH));//可以judge(),結果差不多。
		
		for(i=0;i<64;i++)//把輸出的路徑刪了
			for(j=0;j<(DEPTH-1);j++)
				*(route2+i*DEPTH+j)=*(route2+i*DEPTH+j+1);

		if(outbyte<0)//error:outbyte==0
		{
			outbyte=7;
			outnum++;
		}
	}
	else
		routenum++;

}

void decode_once(PBYTE data,PBYTE outdata,int *eninitial)//一次譯碼
{
	static int totalms1[64]={	0,6,9,9,15,9,12,12,21,15,12,12,12,18,15,15,	//強制輸入6個0,使樹狀圖展開為64個節點,并保存相應的度量。
								21,27,18,18,18,12,15,15,18,12,21,21,15,21,	//這樣,在真實數據進來時,就不需要樹狀圖展開這一步了
								18,18,24,24,33,27,21,21,18,24,21,21,12,18,
								18,18,21,15,21,21,18,12,24,24,21,27,18,18,
								21,27,21,21,24,18						};

	static int totalms2[64]={	0,6,9,9,15,9,12,12,21,15,12,12,12,18,15,15,	//強制輸入6個0,使樹狀圖展開為64個節點,并保存相應的度量。
								21,27,18,18,18,12,15,15,18,12,21,21,15,21,	//這樣,在真實數據進來時,就不需要樹狀圖展開這一步了
								18,18,24,24,33,27,21,21,18,24,21,21,12,18,
								18,18,21,15,21,21,18,12,24,24,21,27,18,18,
								21,27,21,21,24,18						};
	static BYTE route1[64][DEPTH],route2[64][DEPTH];//保存路徑
	static int select=0;//改變route1與route2,totalms1與totalms2作用

	if(*eninitial==1)//重新初始化
	{
		int i,j;
		int totalms[64]={0,6,9,9,15,9,12,12,21,15,12,12,12,18,15,15,	//強制輸入6個0,使樹狀圖展開為64個節點,并保存相應的度量。
								21,27,18,18,18,12,15,15,18,12,21,21,15,21,	//這樣,在真實數據進來時,就不需要樹狀圖展開這一步了
								18,18,24,24,33,27,21,21,18,24,21,21,12,18,
								18,18,21,15,21,21,18,12,24,24,21,27,18,18,
								21,27,21,21,24,18						};
		for(i=0;i<64;i++)
		{	
			totalms1[i]=totalms[i];totalms2[i]=totalms[i];
		}
		for(i=0;i<64;i++)
			for(j=0;j<DEPTH;j++)
			{	route1[i][j]=0;route2[i][j]=0;	}
		select=0;
	}

	if(select==0)
	{
		viterbi_jbx(data,outdata,totalms1,totalms2,&route1[0][0],&route2[0][0],eninitial);
		select=1;
	}
	else
	{
		viterbi_jbx(data,outdata,totalms2,totalms1,&route2[0][0],&route1[0][0],eninitial);
		select=0;
	}
}

void decode_byte(BYTE inbyte,PBYTE outdata,int *eninitial)//譯碼一個比特(8bit)
{
	int i;
	BYTE data[2];
	for(i=3;i>-1;i--)//error is:	for(i=3;i<-1;i--)
	{
		data[0]=get(inbyte,2*i+1);//G1
		data[1]=get(inbyte,2*i);//G2
		decode_once(data,outdata,eninitial);
	}
	//實際中還需要防止累計度量溢出
}

//當前采用硬判決??筛臑檐浥袥Q。
//inData:	7	6	5	4	3	2	1	0
//編碼順序:0	1	2	3	4	5	6	7

//outData[0]:	7	6	5	4	3	2	1	0
//				G1	G2  G1	G2	G1	G2	G1	G2
//編碼結果順序:   0	   1	   2	   3
	
//outData[1]:	7	6	5	4	3	2	1	0
//				G1	G2  G1	G2	G1	G2	G1	G2
//編碼結果順序:   4	   5	   6	   7

void decode(PBYTE indata,PBYTE outdata,int count,int initial)//采用(2,1,7)卷積碼
{
	static int eninitial;//是否重新初始化

	int i;

	eninitial=initial;
	for(i=0;i<count;i++)
	{	
		decode_byte(indata[i],outdata,&eninitial);
	}
	for(i=0;i<10;i++)
	{
		decode_byte(0x00,outdata,&eninitial);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频观看| 3d动漫精品啪啪一区二区竹菊| 欧美一区二区三区视频免费播放| 亚洲成人精品影院| 欧美精品乱人伦久久久久久| 一区二区三区高清不卡| 欧美在线一区二区| 日韩电影在线一区二区| 精品久久国产老人久久综合| 国产一区二区三区免费播放| 久久久久久久国产精品影院| 成人aaaa免费全部观看| 一区二区三区精品视频| 欧美电影一区二区三区| 国内精品伊人久久久久影院对白| 久久免费视频色| 99re这里只有精品6| 亚洲国产精品综合小说图片区| 日韩一级大片在线| 国产69精品久久777的优势| 亚洲精品国产第一综合99久久 | 亚洲视频 欧洲视频| 在线视频你懂得一区| 日日摸夜夜添夜夜添亚洲女人| 久久这里只有精品首页| 91在线看国产| 久久精品国产99久久6| 国产精品第一页第二页第三页| 欧美性感一类影片在线播放| 精品一区二区三区的国产在线播放| 中文字幕不卡一区| 在线播放亚洲一区| av成人动漫在线观看| 美女一区二区三区| 亚洲乱码精品一二三四区日韩在线 | 91精品国产色综合久久不卡电影| 国产乱码一区二区三区| 一区二区三区免费在线观看| 国产视频视频一区| 欧美高清性hdvideosex| 99久久99精品久久久久久| 久久精品久久综合| 亚洲福利视频三区| 中国av一区二区三区| 欧美一区二区三区的| 91美女在线视频| 国产福利一区二区三区| 日韩高清一级片| 亚洲精品视频一区二区| 中文字幕 久热精品 视频在线| 91精品国产综合久久久久久久久久| 成人av影院在线| 国产伦理精品不卡| 美女视频第一区二区三区免费观看网站 | 在线不卡免费欧美| 色综合色综合色综合| 国产成人亚洲综合a∨婷婷图片 | av动漫一区二区| 国产精品自产自拍| 日本不卡的三区四区五区| 一区二区三区四区不卡在线| 久久精品免视看| 欧美tk—视频vk| 91精品国产一区二区三区香蕉| 欧日韩精品视频| 一本大道av伊人久久综合| 成人免费高清在线观看| 国内精品免费在线观看| 久久精品国产秦先生| 日韩激情中文字幕| 午夜精品久久久久久久久久| 亚洲色图欧美激情| 中文无字幕一区二区三区| 毛片一区二区三区| 亚洲网友自拍偷拍| 亚洲成av人片观看| 日韩中文字幕区一区有砖一区 | 亚洲国产美女搞黄色| 成人精品一区二区三区四区 | 欧美乱妇23p| 欧美私人免费视频| 欧美老女人第四色| 欧美一区二区在线视频| 欧美一级高清片在线观看| 欧美一级免费大片| 精品乱人伦小说| 国产天堂亚洲国产碰碰| 欧美国产一区在线| 综合分类小说区另类春色亚洲小说欧美| 欧美韩国日本不卡| 亚洲嫩草精品久久| 一区二区在线电影| 五月婷婷欧美视频| 久久精品国产亚洲aⅴ| 国产乱码精品一区二区三| 成人午夜视频网站| 日本国产一区二区| 91精品国产一区二区三区| 2023国产精品| 最新中文字幕一区二区三区| 亚洲黄色免费电影| 日本欧美加勒比视频| 韩国成人在线视频| 99久久99久久精品免费看蜜桃 | 91精品国产综合久久婷婷香蕉| 正在播放一区二区| 久久久九九九九| 亚洲精品视频免费看| 另类小说综合欧美亚洲| 成人av高清在线| 8x福利精品第一导航| 久久婷婷国产综合精品青草| 成人免费一区二区三区在线观看| 亚洲图片一区二区| 国产精品主播直播| 欧洲视频一区二区| 久久女同精品一区二区| 亚洲综合久久久久| 国产电影一区在线| 欧美日韩大陆在线| 国产精品视频免费| 日韩福利视频网| 91亚洲午夜精品久久久久久| 欧美一级艳片视频免费观看| 久久精品在线观看| 午夜婷婷国产麻豆精品| 国产69精品久久777的优势| 91精品在线一区二区| 国产精品国产三级国产aⅴ中文| 婷婷成人综合网| 99久久99久久免费精品蜜臀| 日韩三级视频在线观看| 亚洲免费观看高清完整版在线观看熊 | 国产在线视视频有精品| 色综合视频在线观看| 精品电影一区二区| 亚洲一区二区三区四区在线| 国产精品综合av一区二区国产馆| 欧美日韩免费视频| 国产欧美日韩不卡| 奇米888四色在线精品| 色综合中文字幕国产| 久久理论电影网| 免费成人在线观看视频| 在线观看国产91| 日韩理论在线观看| 国产成人午夜精品5599| 欧美mv日韩mv国产网站app| 亚洲成a人在线观看| 色激情天天射综合网| 国产精品福利影院| 粉嫩aⅴ一区二区三区四区| 精品欧美久久久| 久久精品国产一区二区| 6080yy午夜一二三区久久| 亚洲自拍偷拍av| 欧美在线一二三四区| 中文字幕一区二区三区在线观看 | 精品88久久久久88久久久| 三级一区在线视频先锋| 欧美日韩一卡二卡三卡| 亚洲麻豆国产自偷在线| 91在线视频网址| 亚洲私人影院在线观看| 99久久免费国产| 亚洲欧美激情小说另类| 91一区一区三区| 亚洲激情校园春色| 色哟哟一区二区在线观看| 亚洲摸摸操操av| 精品视频在线免费| 亚洲成人手机在线| 7777女厕盗摄久久久| 日本最新不卡在线| 欧美不卡在线视频| 韩国av一区二区| 国产精品情趣视频| 日本精品一区二区三区四区的功能| 国产精品二三区| 91久久久免费一区二区| 亚洲成在人线在线播放| 欧美一区二区三区成人| 精品一区二区三区在线播放| 久久蜜臀精品av| 高清成人在线观看| 一区二区欧美国产| 欧美一区二区成人| 国产福利一区在线观看| 中文字幕一区二区三区不卡 | 国产精品1区二区.| 国产精品午夜久久| 色欧美乱欧美15图片| 无吗不卡中文字幕| 久久夜色精品一区| aaa亚洲精品一二三区| 亚洲夂夂婷婷色拍ww47| 日韩一区二区三区电影| 国产成人av资源| 亚洲天堂a在线| 日韩欧美成人一区|