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

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

?? codezt.c

?? 小波變換算法
?? C
字號:

// <> "stop" functionality needed

//#define WRITE_ZT
#define WRITE_ZT_PLANE 7

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

#define SIGN_CONTEXTS		4

#define TOTMAX			4000
#define INC				30

#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)

typedef struct {
	arithInfo *ari;
	int signs_p0[SIGN_CONTEXTS],signs_pt[SIGN_CONTEXTS];
} signInfo;

void * initSigns(arithInfo *ari);
void freeSigns(void *sign_coder);

void encodeSigns(signInfo *me,int *band,int w,int h,int fullw,int *parent);
void decodeSigns(signInfo *me,int *band,int w,int h,int fullw,int *parent);

void * initSigns(arithInfo *ari)
{
signInfo *d;
int i;

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

	d->ari = ari;

	for(i=0;i<SIGN_CONTEXTS;i++) {
		d->signs_p0[i] = 100;
		d->signs_pt[i] = 200;
	}
return d;
}

void freeSigns(signInfo *d)
{
	if ( d ) {
		free(d);
	}
}

void encodeSigns(signInfo *me,int *band,int width,int height,int fullw,int *parent)
{
int x,y,context,V;
int *dp;
arithInfo *ari;
int *signs_p0,*signs_pt;

	ari = me->ari;
	signs_p0 = me->signs_p0;
	signs_pt = me->signs_pt;

	dp = band;

	for(x=0;x<width;x++) {
		if ( *dp == 0 ) { dp++; continue; }
		if ( x == 0 ) context = 0;
		else context = (dp[-1]&1);
		bitEnc((*dp&1),ari,signs_p0[context],signs_pt[context]);
		dp++;
	}
	dp += fullw - width;

	for(y=1;y<height;y++) {
		if ( *dp == 0 ) dp++;
		else {
			context = ((dp[-fullw]&1)<<1);
			bitEnc((*dp&1),ari,signs_p0[context],signs_pt[context]);
			dp++;
		}

		for(x=1;x<width;x++) {
			if ( *dp == 0 ) { dp++; continue; }
			context = (dp[-1]&1) + ((dp[-fullw]&1)<<1);

			bitEnc((*dp&1),ari,signs_p0[context],signs_pt[context]);
			dp++;
		}
		dp += fullw - width;
	}
}

void decodeSigns(signInfo *me,int *band,int width,int height,int fullw,int *parent)
{
int x,y,sign,context,V;
int *dp;
arithInfo *ari;
int *signs_p0,*signs_pt;

	ari = me->ari;
	signs_p0 = me->signs_p0;
	signs_pt = me->signs_pt;

	dp = band;

	for(x=0;x<width;x++) {
		if ( *dp == 0 ) { dp++; continue; }
		if ( x == 0 ) context = 0;
		else context = (dp[-1]&1);
		bitDec(sign,ari,signs_p0[context],signs_pt[context]);
		*dp++ += sign;
	}
	dp += fullw - width;

	for(y=1;y<height;y++) {

		if ( *dp == 0 ) dp++;
		else {
			context = ((dp[-fullw]&1)<<1);
			bitDec(sign,ari,signs_p0[context],signs_pt[context]);
			*dp++ += sign;
		}

		for(x=1;x<width;x++) {
			if ( *dp == 0 ) { dp++; continue; }
			context = (dp[-1]&1) + ((dp[-fullw]&1)<<1);

			bitDec(sign,ari,signs_p0[context],signs_pt[context]);
			*dp++ += sign;
		}
		dp += fullw - width;
	}
}


void findZeroTrees(image *im,int bits,int levels,int offx,int offy)
{
int *fmband,*toband,*fmp,*top;
int x,y,l,w,h,wt,ht,fullw,p;
int bitmask;

	bitmask = (1<<bits) + FLAG_ISOLATED_ZERO;

	fullw = im->width;
	for(p=0;p<im->planes;p++) {

		for(l=1;l<levels;l++) {	//** don't do very top level, cuz that would use the LL as parents

			w = (im->width) >>l;
			h = (im->height)>>l;
			wt = w>>1;
			ht = h>>1;
			fmband = im->data[p][h *offy] + w *offx;
			toband = im->data[p][ht*offy] + wt*offx;

			fmp = fmband; top = toband;
			for(y=0;y<ht;y++) {
				for(x=0;x<wt;x++) {
					if ( (*top&bitmask) == 0 ) {	// *top might be a zerotree, (if not, nothing to do)
						if ( ((fmp[0]&bitmask) + (fmp[1]&bitmask) + (fmp[fullw]&bitmask) + (fmp[fullw+1]&bitmask)) == 0 ) { // all kids zero
							// if *top is zero, it can stay zero to be a zero-tree
							// change kids of zerotree roots to children
							fmp[0] |= FLAG_CHILD_ZERO;
							fmp[1] |= FLAG_CHILD_ZERO;
							fmp[fullw  ] |= FLAG_CHILD_ZERO;
							fmp[fullw+1] |= FLAG_CHILD_ZERO;
						} else {
							*top |= FLAG_ISOLATED_ZERO; // label as an isolated zero
						}
					}
					top ++;
					fmp += 2;
				}
				top += fullw - wt;
				fmp += fullw + fullw - w;
			}
		}
	}
}


void encodeImageZT(coder * encoder,image *im,int levels)
{
int val,top_val,top_bitpn,bits;
int *dp,x,y,**rows;
int p,l,sizeX,sizeY;
void *sign_coder;

	if ( ! encoder->encodeBandZT ) errexit("don't call imageZT unless you mean it!");

	top_val = 0;

	for(p=0;p<im->planes;p++) {
		rows = im->data[p];

		/** global pre-pass : remove signs & find top_val **/

		sizeX = (im->width) >> levels;
		sizeY = (im->height) >> levels;
		for(y=0;y<(im->height);y++) {
			dp = rows[y];
			if ( y < sizeY ) { x = sizeX; dp += sizeX; }
			else x = 0;
			for(;x<(im->width);x++) {
				if ( isneg(*dp) ) *dp = 1 - (*dp + *dp);
				else *dp += *dp;
				if ( *dp > top_val ) top_val = *dp;
				dp++;
			}
		}
	}

	for(top_bitpn=0;(1<<(top_bitpn+1))<=top_val;top_bitpn++) ;

	cu_putExpanding_ari(top_bitpn,encoder->arith,16,8);

	for(bits = top_bitpn;bits>=1;bits--) {
		findZeroTrees(im,bits,levels,1,0);
		findZeroTrees(im,bits,levels,0,1);
		findZeroTrees(im,bits,levels,1,1);

#ifdef WRITE_ZT
		if ( bits == WRITE_ZT_PLANE ) {	/** write out a zero tree map **/
			image *zt_im;
			int r,*ptr,bitmask;
			zt_im = copyImage(im);

			for(p=0;p>im->planes;p++) {
				ptr = zt_im->data[p][0][0]; bitmask = 1<<bits;
				for(r=zt_im->plane_size;r--;) {
					if ( *ptr & bitmask ) *ptr++ = 255;
					else { 
						*ptr = ((*ptr>>(CODE_MAX_BPN+1))<<6); ptr++; 
					}
					/** 256 is on
						128	is isolated
						 64 is child
						  0 is root
					****/

					ptr[-1] -= 0x80;
				}
			}

			writeImageFile("zerotree.raw",zt_im);

			freeImage(zt_im);
		}
#endif			/** end zero-tree writing **/

		for (l = levels; l > 0; l--) {
			sizeX = (im->width) >> l;
			sizeY = (im->height) >> l;

			for(p=0;p<im->planes;p++) {
				rows = im->data[p];

				encoder->encodeBandZT(encoder,rows[0] + sizeX,	sizeX, sizeY,bits,im->width,rows); 
				encoder->encodeBandZT(encoder,rows[sizeY],		sizeX, sizeY,bits,im->width,rows); 
				encoder->encodeBandZT(encoder,rows[sizeY]+sizeX,sizeX, sizeY,bits,im->width,rows); 
			}
		}
	}

	sign_coder = initSigns(encoder->arith);			
	for(p=0;p<im->planes;p++) {
		rows = im->data[p];
		for (l = levels; l > 0; l--) {
			sizeX = (im->width) >> l;
			sizeY = (im->height) >> l;
			encodeSigns(sign_coder,rows[0] + sizeX	,	sizeX, sizeY, im->width,rows[0] + (sizeX>>1));
			encodeSigns(sign_coder,rows[sizeY]		,	sizeX, sizeY, im->width,rows[(sizeY>>1)]);
			encodeSigns(sign_coder,rows[sizeY]+sizeX,	sizeX, sizeY, im->width,rows[(sizeY>>1)]+ (sizeX>>1));
		}
	}
	freeSigns(sign_coder);
}

void decodeImageZT(coder * decoder,image *im,int levels)
{
int l,sizeX,sizeY,x,y,*dp;
int **rows;
int top_bitpn,bits,p;
void *sign_coder;

	top_bitpn = cu_getExpanding_ari(decoder->arith,16,8);

	for(bits = top_bitpn;bits>=1;bits--) {
		for (l = levels; l > 0; l--) {
			for(p=0;p<im->planes;p++) {
				rows = im->data[p];

				sizeX = (im->width) >> l;
				sizeY = (im->height) >> l;

				decoder->decodeBandZT(decoder,rows[0] + sizeX,	sizeX, sizeY,bits,im->width,rows); 
				decoder->decodeBandZT(decoder,rows[sizeY],		sizeX, sizeY,bits,im->width,rows);
				decoder->decodeBandZT(decoder,rows[sizeY]+sizeX,sizeX, sizeY,bits,im->width,rows);
			}
		}
	}

	sign_coder = initSigns(decoder->arith);
	for(p=0;p<im->planes;p++) {
		rows = im->data[p];
		for (l = levels; l > 0; l--) {
			sizeX = (im->width) >> l;
			sizeY = (im->height) >> l;

			decodeSigns(sign_coder,rows[0] + sizeX	,	sizeX, sizeY, im->width,rows[0] + (sizeX>>1));
			decodeSigns(sign_coder,rows[sizeY]		,	sizeX, sizeY, im->width,rows[(sizeY>>1)]);
			decodeSigns(sign_coder,rows[sizeY]+sizeX,	sizeX, sizeY, im->width,rows[(sizeY>>1)]+ (sizeX>>1));
		}
	}
	freeSigns(sign_coder);

		/** global post-pass : restore signs 
		*	(<> decodeSigns could do this for us, but that would require him to
		*		do an if() when he builds contexts) 
		**/
	
	for(p=0;p<im->planes;p++) {
		rows = im->data[p];
		sizeX = (im->width) >> levels;
		sizeY = (im->height) >> levels;
		for(y=0;y<im->height;y++) {
			dp = rows[y];
			if ( y < sizeY ) { x = sizeX; dp += sizeX; }
			else x = 0;
			for(;x<im->width;x++) {
				if ( *dp & 1 ) *dp++ = - ((*dp)>>1);
				else *dp++ >>= 1;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品免费观看视频| 天天影视网天天综合色在线播放| 亚洲欧美电影一区二区| 蜜臀a∨国产成人精品| 色综合久久精品| 国产亚洲一区二区三区| 亚洲大片一区二区三区| jlzzjlzz欧美大全| 久久一区二区三区国产精品| 亚洲va欧美va人人爽| heyzo一本久久综合| 精品国产1区2区3区| 亚洲成av人片在线观看无码| 97se亚洲国产综合自在线| 久久网站最新地址| 另类小说图片综合网| 欧美日韩1234| 亚洲国产精品综合小说图片区| av中文字幕不卡| 久久久国产一区二区三区四区小说 | 欧美成人一区二区三区片免费| 亚洲一区在线观看视频| 91丝袜美女网| 国产精品电影院| 99视频精品全部免费在线| 国产欧美一区二区精品性色| 韩国成人福利片在线播放| 欧美大尺度电影在线| 首页欧美精品中文字幕| 在线观看视频欧美| 亚洲国产精品天堂| 欧美精选在线播放| 奇米在线7777在线精品| 制服丝袜日韩国产| 麻豆91免费观看| 国产午夜精品久久久久久久| 国产美女精品人人做人人爽| 国产亚洲一区二区三区在线观看| 国产成人午夜99999| 欧美国产激情二区三区| 国产精品综合久久| 国产嫩草影院久久久久| 不卡影院免费观看| 亚洲国产视频直播| 日韩欧美精品在线| 国产精品99久久久久久久vr| 亚洲国产成人一区二区三区| 99国产麻豆精品| 日韩成人免费电影| 久久精品亚洲精品国产欧美 | 国产91综合一区在线观看| 欧美极品xxx| 91女神在线视频| 五月激情综合网| 久久婷婷国产综合国色天香| 99久久99久久精品国产片果冻| 亚洲最大色网站| 精品国产乱码久久久久久久| 成人国产精品视频| 五月天中文字幕一区二区| 久久久亚洲精华液精华液精华液| 94色蜜桃网一区二区三区| 午夜精品久久久久久久99樱桃| 日韩欧美国产高清| 99re8在线精品视频免费播放| 亚洲成av人片观看| 国产日韩一级二级三级| 欧美日韩国产一区二区三区地区| 国内精品嫩模私拍在线| 一区二区在线观看免费| 精品国产伦一区二区三区观看体验| av色综合久久天堂av综合| 日韩国产在线观看| 亚洲欧洲日韩在线| 精品国产乱码久久久久久蜜臀| 在线视频国内一区二区| 国产精品一区二区果冻传媒| 亚洲va国产天堂va久久en| 国产精品久久免费看| 欧美一三区三区四区免费在线看| 粉嫩欧美一区二区三区高清影视 | 欧美色欧美亚洲另类二区| 国内不卡的二区三区中文字幕| 亚洲欧美视频在线观看视频| 久久综合九色综合欧美就去吻| 在线观看av不卡| 不卡一区在线观看| 国产精品自在欧美一区| 热久久一区二区| 五月天一区二区| 一区二区三区日韩在线观看| 欧美激情一区二区三区在线| 欧美mv和日韩mv国产网站| 欧美日韩色综合| 色噜噜狠狠色综合中国| 高清不卡一二三区| 国产在线看一区| 久久精品国内一区二区三区| 五月天精品一区二区三区| 亚洲在线一区二区三区| 亚洲天堂a在线| 亚洲欧洲成人av每日更新| 久久精品一二三| 久久久99精品久久| 久久精品夜色噜噜亚洲a∨| 日韩欧美区一区二| 日韩亚洲欧美中文三级| 欧美视频一区二区三区四区 | 欧美欧美午夜aⅴ在线观看| 日本精品免费观看高清观看| 91天堂素人约啪| 一本高清dvd不卡在线观看| 成人免费毛片a| 成人av动漫在线| 94-欧美-setu| 在线免费观看日本欧美| 欧美最猛黑人xxxxx猛交| 欧美在线高清视频| 欧美日韩激情一区二区三区| 欧美日韩一区二区三区不卡| 欧美久久久久久久久久| 日韩欧美在线网站| 日韩美一区二区三区| 精品va天堂亚洲国产| 国产亚洲精久久久久久| 中文字幕一区二区三区四区不卡 | 欧美zozozo| 久久精品水蜜桃av综合天堂| 国产欧美精品一区| 国产精品久久毛片| 亚洲第一综合色| 免费在线观看不卡| 国产综合一区二区| 成人午夜伦理影院| 91久久免费观看| 日韩片之四级片| 国产欧美日韩久久| 亚洲午夜免费电影| 久久成人免费电影| av在线播放不卡| 欧美人妇做爰xxxⅹ性高电影| 亚洲精品在线电影| 专区另类欧美日韩| 男人的天堂亚洲一区| 国产精品99久久久久久宅男| 色成人在线视频| 精品精品欲导航| 亚洲摸摸操操av| 免费看日韩a级影片| 国产91精品欧美| 日本乱人伦aⅴ精品| 精品成a人在线观看| 一区二区国产盗摄色噜噜| 韩国毛片一区二区三区| 色系网站成人免费| 久久综合一区二区| 亚洲最新视频在线播放| 国产成人av资源| 日韩视频一区二区三区| 最新久久zyz资源站| 久久av中文字幕片| 欧美日韩精品免费观看视频 | 精品日韩欧美在线| 亚洲精品乱码久久久久久黑人| 九九国产精品视频| 在线中文字幕不卡| 国产精品免费观看视频| 轻轻草成人在线| 在线精品视频一区二区三四| 久久青草欧美一区二区三区| 图片区小说区区亚洲影院| 成人免费黄色在线| 精品国产一二三区| 午夜伦欧美伦电影理论片| 99re这里只有精品视频首页| 久久久久国产精品人| 免费高清不卡av| 777奇米成人网| 亚洲国产精品一区二区久久恐怖片 | 日产国产欧美视频一区精品| 一本久久a久久免费精品不卡| 久久精品亚洲精品国产欧美| 久久91精品国产91久久小草| 制服丝袜中文字幕亚洲| 亚洲国产精品一区二区www在线| av网站一区二区三区| 欧美激情一区不卡| 国产一区二区在线影院| 日韩一区二区精品| 青青青爽久久午夜综合久久午夜| 在线观看三级视频欧美| 亚洲免费视频成人| 91久久久免费一区二区| 亚洲精选在线视频| 色综合天天性综合| 日韩美女精品在线| 色综合av在线| 艳妇臀荡乳欲伦亚洲一区| 欧日韩精品视频| 亚洲国产精品久久一线不卡|