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

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

?? coder_bp_zt.c

?? 好東西呢
?? C
字號:
/*****

coder_BP : 

	could get more speed out of arithc and scontext

*****/

#include <stdio.h>
#include <stdlib.h>
#include <crblib/inc.h>
#include <crblib/arithc.h>
#include <crblib/scontext.h>
#include "coder.h"

extern int tune_param;

#define bitModel(bit,P0,PT)		do { PT += INC; if (!(bit)) P0 += INC;  if ( PT > TOTMAX ) { PT >>= 1; P0 >>= 1; P0++; PT += 2; } } while(0)
#define bitEnc(bit,ari,P0,PT)	do { arithEncBit(ari,P0,PT,bit);	bitModel(bit,P0,PT); } while(0)
#define bitDec(bit,ari,P0,PT)	do { bit = arithDecBit(ari,P0,PT);	bitModel(bit,P0,PT); } while(0)

#define INC		20
#define TOTMAX	4000

#define ORDER1_CONTEXTS		5
#define ORDER1_ALPHABET		16	//4 bits

#define ORDER1_TOTMAX		15000
#define ORDER1_INC			30

void coderBPZT_encodeBandZT(coder *me,int *band,int width,int height,int bits,int fullw,int **rows);
void coderBPZT_decodeBandZT(coder *me,int *band,int width,int height,int bits,int fullw,int **rows);

typedef struct {
	scontext ** o1;
	int zeros_p0[ORDER1_CONTEXTS],zeros_pt[ORDER1_CONTEXTS];
} myInfo;

void coderBPZT_init(coder *c)
{
myInfo *d;
int i;

	if ( (d = new(myInfo)) == NULL )
		errexit("ozero init failed");

	c->data = d;

	if ( (d->o1 = newarray(void *,ORDER1_CONTEXTS)) == NULL )
		errexit("Order1_Init failed!");

	for(i=0;i<ORDER1_CONTEXTS;i++) {
		if ( (d->o1[i] = scontextCreate(c->arith,ORDER1_ALPHABET,0,
				ORDER1_TOTMAX,ORDER1_INC,true)) == NULL )
			errexit("context creation failed!");

		d->zeros_p0[i] = 1; d->zeros_pt[i] = 2;
	}
}

void coderBPZT_free(coder *c)
{
	if ( c->data ) {
		myInfo *d;
		d = c->data;
		if ( d->o1 ) {
			int i;
			for(i=0;i<ORDER1_CONTEXTS;i++) {
				if ( d->o1[i] ) scontextFree(d->o1[i]);
			}
		}
		free(d);
		c->data = NULL;
	}
}

coder coderBPZT = {
		"BP ZeroTree",
		coderBPZT_init,
		coderBPZT_free,
		NULL,NULL,NULL,NULL,
		coderBPZT_encodeBandZT,
		coderBPZT_decodeBandZT
	};

void coderBPZT_encodeBandZT(coder *me,int *band,int width,int height,int bits,int fullw,int **rows)
{
int x,y,context,block;
int *dp,*dpn;
scontext **o1 = ((myInfo *)me->data)->o1;
arithInfo *ari = me->arith;
int donemask,nextmask,bitmask;
int *zeros_p0,*zeros_pt;
bool bottom;

	zeros_p0 = ((myInfo *)me->data)->zeros_p0;
	zeros_pt = ((myInfo *)me->data)->zeros_pt;

	if ( width == (fullw>>1) ) bottom = true;
	else bottom = false;

	bitmask = 1<<bits;
	for(x=bitmask,nextmask=0; x<CODE_MAX_VAL ;x<<=1) nextmask += x;
	donemask = nextmask - bitmask;

	dp = band;
	for(y=0;y<height;y+=2) {
		dpn = dp + fullw;
		for(x=0;x<width;x+=2) {
			if ( dp[0] & FLAG_CHILD_ZERO ) { // the whole quartet is zero
				dp[0] -= FLAG_CHILD_ZERO;	// it's a zerotree child, don't code
#if 1
				dp[1] -= FLAG_CHILD_ZERO;	// undo the evil unnecessary work of FindZeroTrees
				dpn[0] -= FLAG_CHILD_ZERO;
				dpn[1] -= FLAG_CHILD_ZERO;
#endif
			} else {
				context = ((dp[0] & donemask)?1:0) + ((dp[1] & donemask)?1:0) + ((dpn[0] & donemask)?1:0) + ((dpn[1] & donemask)?1:0);

				block = 0; // 4 bits
				if ( dp[0]  & bitmask ) block += 1;
				if ( dp[1]  & bitmask ) block += 2;
				if ( dpn[0] & bitmask ) block += 4;
				if ( dpn[1] & bitmask ) block += 8;

				scontextEncode(o1[context],block);

				if ( ! bottom ) {
					/** code zerotree flags on any zero bits **/
					switch(block) {
						case 15:
							break;
						case 14:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 13:
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 12:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 11:
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 10:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 9:
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 8:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 7:
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 6:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 5:
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 4:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 3:
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 2:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 1:
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
						case 0:
							if ( dp[0] & FLAG_ISOLATED_ZERO ) {	dp[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dp[1] & FLAG_ISOLATED_ZERO ) {	dp[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[0] & FLAG_ISOLATED_ZERO ) { dpn[0] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							if ( dpn[1] & FLAG_ISOLATED_ZERO ) { dpn[1] -= FLAG_ISOLATED_ZERO; bitEnc(0,ari,zeros_p0[context],zeros_pt[context]); } else { bitEnc(1,ari,zeros_p0[context],zeros_pt[context]); }
							break;
					}
				}
			}
			dp += 2; dpn += 2;
		}
		dp += fullw + fullw - width;
	}

}

void coderBPZT_decodeBandZT(coder *me,int *band,int width,int height,int bits,int fullw,int **rows)
{
int x,y,context,block;
int *dp,*dpn;
scontext **o1 = ((myInfo *)me->data)->o1;
arithInfo *ari = me->arith;
int donemask,nextmask,bitmask;
int offwidth,offheight,*children;
int bit,tx,ty;
int *zeros_p0,*zeros_pt;
bool bottom;

	zeros_p0 = ((myInfo *)me->data)->zeros_p0;
	zeros_pt = ((myInfo *)me->data)->zeros_pt;

	if ( width == (fullw>>1) ) bottom = true;
	else bottom = false;

	bitmask = 1<<bits;
	for(x=bitmask,nextmask=0; x<CODE_MAX_VAL ;x<<=1) nextmask += x;
	donemask = nextmask - bitmask;

	offheight	= (band - rows[0])/fullw;
	offwidth	= (band - rows[0]) - fullw*offheight;

	dp = band;
	for(y=0;y<height;y+=2) {
		dpn = dp + fullw;
		for(x=0;x<width;x+=2) {
			if ( dp[0] & FLAG_ALREADY_DECODED ) {
				dp[0] -= FLAG_ALREADY_DECODED;

				if ( ! bottom ) {
					tx = (offwidth + x)<<1;
					ty = (offheight+ y)<<1;
					rows[ty  ][tx  ] += FLAG_ALREADY_DECODED;
					rows[ty  ][tx+2] += FLAG_ALREADY_DECODED;
					rows[ty+2][tx  ] += FLAG_ALREADY_DECODED;
					rows[ty+2][tx+2] += FLAG_ALREADY_DECODED;
				}
			} else {
				context = ((dp[0] & donemask)?1:0) + ((dp[1] & donemask)?1:0) + ((dpn[0] & donemask)?1:0) + ((dpn[1] & donemask)?1:0);

				block = scontextDecode(o1[context]);

				if ( ! bottom )
					children = rows[(offheight+ y)<<1] + ((offwidth + x)<<1);

				if ( block & 1 ) dp[0 ] += bitmask;
				else if ( ! bottom ) {
					bitDec(bit,ari,zeros_p0[context],zeros_pt[context]);
					if ( bit ) children[0] += FLAG_ALREADY_DECODED;
				}
				if ( block & 2 ) dp[1 ] += bitmask;
				else if ( ! bottom ) {
					bitDec(bit,ari,zeros_p0[context],zeros_pt[context]);
					if ( bit ) children[2] += FLAG_ALREADY_DECODED;
				}
				if ( block & 4 ) dpn[0] += bitmask;
				else if ( ! bottom ) {
					bitDec(bit,ari,zeros_p0[context],zeros_pt[context]);
					if ( bit ) children[fullw+fullw] += FLAG_ALREADY_DECODED;
				}
				if ( block & 8 ) dpn[1] += bitmask;
				else if ( ! bottom ) {
					bitDec(bit,ari,zeros_p0[context],zeros_pt[context]);
					if ( bit ) children[fullw+fullw+2] += FLAG_ALREADY_DECODED;
				}
			}
			dp += 2; dpn += 2;
		}
		dp += fullw + fullw - width;
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久精品| 欧美日韩一级二级三级| 一区二区三区免费观看| 日韩欧美在线网站| 99精品久久只有精品| 玖玖九九国产精品| 亚洲精品ww久久久久久p站| 精品人在线二区三区| 在线这里只有精品| 成人永久看片免费视频天堂| 日韩电影在线免费看| 中文字幕一区在线观看| 日韩免费视频一区| 欧美日韩国产高清一区二区| 成人app软件下载大全免费| 奇米精品一区二区三区四区| 一区二区在线免费观看| 国产精品三级久久久久三级| 91精品国产91久久久久久最新毛片| 99re66热这里只有精品3直播 | 蜜臀av亚洲一区中文字幕| 亚洲视频一区在线观看| 国产欧美一区二区精品仙草咪| 日韩欧美一卡二卡| 欧美一区二区女人| 欧美日韩一卡二卡三卡| 在线欧美日韩国产| 色综合久久中文字幕| 97超碰欧美中文字幕| 国产成人精品影院| 国产成人三级在线观看| 国产精品538一区二区在线| 麻豆精品一区二区| 老鸭窝一区二区久久精品| 视频一区视频二区中文| 天天操天天综合网| 午夜伦理一区二区| 天天影视色香欲综合网老头| 亚洲成在人线在线播放| 亚洲国产精品一区二区www在线| 亚洲欧美日韩中文播放| 国产精品成人午夜| 亚洲美女免费视频| 亚洲与欧洲av电影| 亚洲福利视频一区二区| 天天综合网 天天综合色| 亚洲电影在线播放| 日韩专区欧美专区| 久久er99热精品一区二区| 一区二区三区中文字幕精品精品| 国产精品私人自拍| 国产日韩欧美精品在线| 中文字幕av在线一区二区三区| 中文字幕日韩精品一区| 国产精品乱码人人做人人爱| 国产精品色哟哟| 亚洲精品乱码久久久久久| 亚洲在线视频一区| 免费成人美女在线观看| 国产在线精品一区在线观看麻豆| 国内精品第一页| 国产成人a级片| 色综合婷婷久久| 欧美日本不卡视频| 欧美电视剧在线观看完整版| 国产视频一区在线播放| 亚洲人成网站影音先锋播放| 亚洲成av人片www| 裸体健美xxxx欧美裸体表演| 国产成人综合自拍| 在线日韩av片| 精品国产不卡一区二区三区| 国产精品国产三级国产aⅴ入口 | 激情综合网天天干| 成人晚上爱看视频| 欧美午夜精品一区二区蜜桃| 91精品国产综合久久久久久久 | 色综合一区二区| 911精品国产一区二区在线| 欧美精品一区二区蜜臀亚洲| 亚洲欧洲日韩女同| 日韩精品欧美精品| 成人性生交大片| 欧美日韩国产影片| 久久精品视频在线看| 亚洲国产精品久久久久婷婷884| 日本v片在线高清不卡在线观看| 国产激情视频一区二区三区欧美 | www.在线成人| 欧美日韩精品欧美日韩精品一综合| 日韩精品一区二区三区中文不卡| 国产精品视频一区二区三区不卡| 五月婷婷久久丁香| 福利视频网站一区二区三区| 欧美在线不卡一区| 日本一区二区三区国色天香| 午夜成人在线视频| a在线播放不卡| 日韩视频一区二区| 一区二区三区四区亚洲| 国产乱子轮精品视频| 欧美日韩在线综合| **网站欧美大片在线观看| 麻豆成人91精品二区三区| 在线一区二区视频| 国产精品视频第一区| 精品亚洲成a人在线观看| 日韩欧美国产不卡| 亚洲理论在线观看| 成人动漫一区二区三区| 日韩精品一区二区三区四区| 亚洲欧美电影一区二区| 国产精品一二一区| 91精品国产91热久久久做人人| 久久久精品国产免大香伊 | 国产高清在线精品| 欧美xxxxx裸体时装秀| 亚洲国产一二三| 99re热视频精品| 国产精品欧美一级免费| 国产一区二区剧情av在线| 在线综合亚洲欧美在线视频| 一区二区三区欧美视频| 91小视频免费看| 国产精品成人一区二区艾草 | 免费av网站大全久久| 色综合视频在线观看| 国产精品美女一区二区三区 | 555www色欧美视频| 亚洲一区二区三区影院| 色诱亚洲精品久久久久久| 国产欧美一区二区三区网站| 国产精品一区二区黑丝| 精品国产一区二区三区久久久蜜月| 亚洲成a人v欧美综合天堂| 在线亚洲欧美专区二区| 亚洲老司机在线| 色婷婷久久久亚洲一区二区三区| 亚洲视频图片小说| 成人91在线观看| 国产精品福利一区二区三区| av一区二区不卡| 国产亚洲欧美色| 风间由美性色一区二区三区| 国产欧美在线观看一区| 风间由美一区二区av101 | 2023国产精品| 国产一区不卡视频| 国产亚洲一区二区三区| 国产精品影视在线观看| 久久久久久久精| 国产v综合v亚洲欧| 国产精品乱人伦一区二区| 91啪亚洲精品| 亚洲午夜久久久久久久久久久| 欧美日韩久久久久久| 日韩电影免费在线| 26uuu国产电影一区二区| 国产精品亚洲成人| 中文字幕一区二区三区在线不卡 | 亚洲6080在线| 日韩欧美在线观看一区二区三区| 日本aⅴ免费视频一区二区三区| 欧美电影精品一区二区| 国产91在线观看| 亚洲精品日韩综合观看成人91| 欧美曰成人黄网| 黑人巨大精品欧美一区| 国产精品美女www爽爽爽| 91免费在线播放| 婷婷亚洲久悠悠色悠在线播放| 日韩视频免费观看高清完整版在线观看 | 久久综合九色综合欧美98| 丰满亚洲少妇av| 亚洲福利视频导航| 久久久久国产一区二区三区四区 | 国产日韩精品视频一区| 色女孩综合影院| 喷白浆一区二区| 国产精品电影一区二区| 欧美日韩一区二区三区四区 | 国产盗摄一区二区| 玉足女爽爽91| 欧美精品一区二区三区在线播放| 成a人片亚洲日本久久| 亚洲bt欧美bt精品| 国产日韩高清在线| 欧美巨大另类极品videosbest | 欧美日韩亚洲综合在线| 国产资源精品在线观看| 亚洲黄色免费网站| 国产校园另类小说区| 欧洲中文字幕精品| 久久国产精品区| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲精品一区二区三区香蕉| 欧美性一级生活| 成人一区二区三区| 老鸭窝一区二区久久精品| 一区二区在线观看免费|