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

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

?? ezdct.c

?? easy discrete time transform implemented in C
?? C
?? 第 1 頁 / 共 2 頁
字號:

	free_coders();

	for(pnum=0;pnum<num_planes;pnum++) {
		MemClear(transout[pnum],rawsize*sizeof(uword));
	}

	init_coders_read();

	/* decode */
	/*#*/ {
	uword *transline,*transplane;
	int x,y,b;
	int context,block,parent,parent_sign;
	int bitpn,bitmask,donemask,nextmask,A,B,C,D;
	int trans_top,top_bitpn;

	top_bitpn = arithGet(FAI,TRANS_MAX_BPN);
	arithDecode(FAI,top_bitpn,top_bitpn+1,TRANS_MAX_BPN);
	trans_top = 1<<top_bitpn;

	nextmask=0; bitpn = top_bitpn;
	for(bitmask = trans_top;bitmask>=TRANS_LOWBIT;bitmask>>=1) {
		donemask = nextmask; bitpn--;
		nextmask = donemask + bitmask;
		for(b=0;b<16;b++) { /** 16 4x4 blocks **/
			for(pnum=0;pnum<num_planes;pnum++) {
				transplane = transout[pnum];
				for(y=0;y<height;y += DCTLINE) {
					transline = transplane + y*width;
					for(x=0;x<width;x += DCTLINE) {

						A = ZAG_INDEX(transline,x, (b<<2)+0 );
						B = ZAG_INDEX(transline,x, (b<<2)+1 );
						C = ZAG_INDEX(transline,x, (b<<2)+2 );
						D = ZAG_INDEX(transline,x, (b<<2)+3 );

						if ( b == 0 ) {
							parent = TRANS_MAX;
						} else {
							parent = ZAG_INDEX(transline,x,b);
						}

						MAKE_CONTEXT(context,(parent&nextmask),((A & donemask)?1:0),((B & donemask)?1:0),((C & donemask)?1:0),((D & donemask)?1:0));
						
						block = decode(context);

						 // only code from parent's sign if it has been sent
						if ( parent & nextmask )	parent_sign = parent & 1;
						else						parent_sign = 2;

						if ( block & 1 ) { A += bitmask; if ( !(A & donemask) ) A += decodeSign(parent_sign); }
						if ( block & 2 ) { B += bitmask; if ( !(B & donemask) ) B += decodeSign(parent_sign); }
						if ( block & 4 ) { C += bitmask; if ( !(C & donemask) ) C += decodeSign(parent_sign); }
						if ( block & 8 ) { D += bitmask; if ( !(D & donemask) ) D += decodeSign(parent_sign); }

						ZAG_INDEX(transline,x, (b<<2)+0 ) = A;
						ZAG_INDEX(transline,x, (b<<2)+1 ) = B;
						ZAG_INDEX(transline,x, (b<<2)+2 ) = C;
						ZAG_INDEX(transline,x, (b<<2)+3 ) = D;
					}

				if ( (BitIO_GetPos(BII)) > req_len )
					goto break_decoding; /** don't waste our time any more **/
				}
			}
		}
#ifdef BITPLANE_ADAPT
		coder_adapt();
#endif
	}

	break_decoding:
		/** push values up to midpoints **/

#ifdef DECODE_MIDPOINTS
		bitmask >>= 1; bitmask--;
		if ( bitmask >= TRANS_LOWBIT ) {
			for(pnum=0;pnum<num_planes;pnum++) { transline = trans[pnum];
				for(x=rawsize;x--;) {
					if ( *transline > 0 ) *transline += bitmask;
					transline++;
				}
			}
		}
#endif // DECODE_MIDPOINTS

#ifdef DPCM_TRANSFORM /** undo it **/
	/*#*/ {
	int val,pred; uword *prevline;
	for(pnum=0;pnum<num_planes;pnum++) {
		transplane = transout[pnum];
		for(y=0;y<height;y += DCTLINE) {
			transline = transplane + y*width;
			prevline  = transline - DCTLINE*width;
			for(x=0;x<width;x += DCTLINE) {
				val = trans_data(transline[x]);

				if ( x == 0 && y == 0 ) {	pred = 0;
				} else if ( y == 0 ) {		pred = trans_data(transline[x-DCTLINE]);
				} else if ( x == 0 ) {		pred = trans_data(prevline[x]);
				} else { int a,b;
					a = trans_data(transline[x-DCTLINE]);
					b = trans_data(prevline[x]);
					pred = (a + b)>>1;
				}

				val += pred;

				transline[x] = data_trans(val);
			}
		}
	}
	/*#*/ }
#endif //DPCM_TRANSFORM

	/*#*/ }

	free_coders();

#endif // NO_CODING /*}*/

	idct_image(rawout,transout,width,height,num_planes,qtable);

return coded_len;
}

void coder_adapt(void)
{
int context;
	for(context=0;context<CODE_CONTEXTS;context++) {
		scontextHalve(order1[context]);
		scontextHalve(order1[context]);
	}
}

void encode(int sym,int context)
{
scontextEncode(order1[context],sym);
}

void encodeSign(bool sign,int parent)
{
#ifdef CODE_SIGNS
	scontextEncode(signorder0[parent],sign);
#else
	arithBit(FAI,sign);
#endif
}

int decode(int context)
{
return scontextDecode(order1[context]);
}
bool decodeSign(int prev)
{
#ifdef CODE_SIGNS
	return scontextDecode(signorder0[prev]);
#else
	return arithGetBit(FAI);
#endif
}

void ExitFunc(void)
{
int i;

free_coders();

smartfree(comp);

if ( raw ) {
	for(i=0;i<num_planes;i++) {
		smartfree(raw[i]);
	}
	free(raw);
}
if ( rawout ) {
	for(i=0;i<num_planes;i++) {
		smartfree(rawout[i]);
	}
	free(rawout);
}
if ( trans ) {
	for(i=0;i<num_planes;i++) {
		smartfree(trans[i]);
	}
	free(trans);
}
if ( transout ) {
	for(i=0;i<num_planes;i++) {
		smartfree(transout[i]);
	}
	free(transout);
}


if ( rawF ) fclose(rawF);

}

int mse_image(ubyte **original,ubyte **vs,int width,int height,int num_planes)
{
int diffs[256];
int diff,i,totsq,pnum;
int rawsize;

	rawsize = width*height;

	MemClear(diffs,256*sizeof(int));

	for(pnum=0;pnum<num_planes;pnum++) {
		ubyte *rptr,*vptr;
		rptr = original[pnum]; vptr = vs[pnum];
		for(i=rawsize;i--;) {
			diff = *rptr++ - *vptr++;
			if ( diff < 0 ) diff = -diff;
			diffs[diff] ++;
		}
	}

	totsq = 0;
	for(i=1;i<256;i++) {
		if ( diffs[i] > 0 ) {
			totsq += i*i*diffs[i];
		}
	}

return totsq;
}

void TheImageAnalyzer(ubyte **original,ubyte **im2,
					int num_planes,int width,int height,
					float ratio,FILE *sio)
{
int diffs[256];
int diff,i,tot,totsq,max,pnum,j;
int rawsize,totsize;
float mse,me,rmse,mse_percep;

rawsize = width*height;
totsize = width*height*num_planes;

	MemClear(diffs,256*sizeof(int));

	for(pnum=0;pnum<num_planes;pnum++) {
		ubyte *rptr,*vptr;
		rptr = original[pnum]; vptr = im2[pnum];
		for(i=rawsize;i--;) {
			diff = *rptr++ - *vptr++;
			if ( diff < 0 ) diff = -diff;
			diffs[diff] ++;
		}
	}

	tot = totsq = max = 0;
	for(i=1;i<256;i++) {
		if ( diffs[i] > 0 ) {
			max = i;
			tot += i * diffs[i];
			totsq += i*i * diffs[i];
		}
	}

	me = (float)tot/totsize;
	mse = (float)totsq/totsize;
	rmse = sqrt(mse);

	for(pnum=0;pnum<num_planes;pnum++) {
		int x,y,av1,av2;
		ulong totds;
		ubyte *line1,*pline1,*nline1;
		ubyte *line2,*pline2,*nline2;
		line1 = original[pnum]; nline1 = line1+width;
		line2 = im2[pnum]; nline2 = line2+width;
		totds = 0;
		for(y=1;y<(width-1);y++) {
			pline1 = line1; line1 = nline1; nline1 += width;
			pline2 = line2; line2 = nline2; nline2 += width;
			for(x=1;x<(width-1);x++) {
				av1 = line1[x] + line1[x-1] + line1[x+1] + pline1[x] + nline1[x];
				av2 = line2[x] + line2[x-1] + line2[x+1] + pline2[x] + nline2[x];
				diff = (av1 - av2); diff *= diff;
				if ( abs( line1[x-1] - line1[x+1] ) < 5 &&
 					 abs( pline1[x] - nline1[x] ) < 5 ) totds += diff + diff;
				else totds += diff;
			}
		}

		mse_percep = (float)totds/(25.0*totsize);
	}

#ifdef VERBOSE
	fprintf(sio,"error: av= %.2f,max= %d,mse= %.3f,rmse= %.2f,psnr= %.2f,perc= %.2f\n",me,max,mse,rmse,(PSNR_MAX - 10*log10(mse)),mse_percep);
	fprintf(sio,"performance: MSE = %f , RMSE = %f , percep = %f\n",(ratio/mse),(ratio/rmse),(ratio/mse_percep));
		/** use MSE in high error regime, RMS in low error **/
#else
	fprintf(sio,"RMSE=%f,PSNR=%f\n",rmse,(PSNR_MAX - 10*log10(mse)));;
#endif

}

void dct_image(ubyte **raw,uword **trans,int width,int height,int num_planes,
		int * quant_table)
{
ubyte *plane,*line,*lptr;
uword *transline,*transplane,*tptr;
RAWDATA rawblock[DCTBLOCK],*rptr;
DCTDATA dctblock[DCTBLOCK],*bptr;
int x,y,pnum,i;

	dct_init(quant_table);

	for(pnum=0;pnum<num_planes;pnum++) {
		plane = raw[pnum];
		transplane = trans[pnum];
		for(y=0;y<height;y += DCTLINE) {
			line = plane + y*width;
			transline = transplane + y*width;
			for(x=0;x<width;x += DCTLINE) {

				rptr = rawblock;
				for(i=0;i<DCTLINE;i++) {
					lptr = line + x + i*width;
					unroll_dctline(*rptr++ = *lptr++);
				}
	
				dct(rawblock,dctblock);

				bptr = dctblock;
				for(i=0;i<DCTLINE;i++) {
					tptr = transline + x + i*width;
					unroll_dctline(*tptr++ = data_trans(*bptr); bptr++);
				}
			}
		}
	}


}


void idct_image(ubyte **rawout,uword **trans,int width,int height,int num_planes,
		int * quant_table)
{
ubyte *plane,*line,*lptr;
uword *transline,*transplane,*tptr;
RAWDATA rawblock[DCTBLOCK],*rptr;
DCTDATA dctblock[DCTBLOCK],*bptr;
int x,y,pnum,i;

	idct_init(quant_table);

	for(pnum=0;pnum<num_planes;pnum++) {
		plane = rawout[pnum];
		transplane = trans[pnum];
		for(y=0;y<height;y += DCTLINE) {
			line = plane + y*width;
			transline = transplane + y*width;
			for(x=0;x<width;x += DCTLINE) {

				bptr = dctblock;
				for(i=0;i<DCTLINE;i++) {
					tptr = transline + x + i*width;
					unroll_dctline(*bptr++ = trans_data(*tptr); tptr++;);
				}

				idct(dctblock,rawblock);

				rptr = rawblock;
				for(i=0;i<DCTLINE;i++) {
					lptr = line + x + i*width;
					unroll_dctline(*lptr++ = *rptr++);
				}
	
			}
		}
	}

}

void init_allocs(void)
{
int i;
	if ( (raw = malloc(sizeofpointer*num_planes)) == NULL )
		cleanup("malloc failed");
	if ( (rawout = malloc(sizeofpointer*num_planes)) == NULL )
		cleanup("malloc failed");
	if ( (trans = malloc(sizeofpointer*num_planes)) == NULL )
		cleanup("malloc failed");
	if ( (transout = malloc(sizeofpointer*num_planes)) == NULL )
		cleanup("malloc failed");

	for(i=0;i<num_planes;i++) {
		if ( (raw[i] = malloc(rawsize)) == NULL )
			cleanup("malloc failed");
		if ( (rawout[i] = malloc(rawsize)) == NULL )
			cleanup("malloc failed");
		if ( (trans[i] = newarray(uword,rawsize)) == NULL )
			cleanup("malloc failed");
		if ( (transout[i] = newarray(uword,rawsize)) == NULL )
			cleanup("malloc failed");
	}

	if ( (comp = malloc(complen)) == NULL )
		cleanup("malloc failed");
}

void init_coders_write(void)
{
	MemClear(comp,complen);

	init_coders();

	FastArithEncodeCInit(FAI);
}

void init_coders_read(void)
{
	init_coders();

	BitIO_InitRead(BII);

	FastArithDecodeCInit(FAI);
}

void init_coders(void)
{
int i;
	if ( (BII = BitIO_Init(comp)) == NULL )
		cleanup("BitIOInit failed!");
	if ( (FAI = FastArithInit(BII)) == NULL )
		cleanup("FastArithInit failed!");

	if ( (order1 = AllocMem(CODE_CONTEXTS*sizeofpointer,MEMF_CLEAR)) == NULL )
		cleanup("Order1_Init failed!");

	for(i=0;i<CODE_CONTEXTS;i++) {
		if ( (order1[i] = scontextCreate(FAI,CODE_ALPHABET,0,
				ORDER1_TOTMAX,ORDER1_INC,true)) == NULL )
			cleanup("context creation failed!");
	}

#ifdef CODE_SIGNS
	if ( (signorder0 = AllocMem(SIGN_CONTEXTS*sizeofpointer,MEMF_CLEAR)) == NULL )
		cleanup("Order1_Init failed!");
	for(i=0;i<SIGN_CONTEXTS;i++) {
		if ( (signorder0[i] = scontextCreate(FAI,2,
				0,SIGNORDER0_TOTMAX,SIGNORDER0_INC, true)) == NULL )
			cleanup("Order0_Init failed!");
	}
#endif
}

int done_coders(void)
{
int complen;
	FastArithEncodeCDone(FAI);
	complen = 0;
	complen += BitIO_FlushWrite(BII) - 2;
return complen;
}

void free_coders(void)
{
int i;

if ( order1 ) {
	for(i=0;i<CODE_CONTEXTS;i++)
		if ( order1[i] ) scontextFree(order1[i]);
	free(order1);
	order1 = NULL;
}
#ifdef CODE_SIGNS
if ( signorder0 ) {
	for(i=0;i<SIGN_CONTEXTS;i++)
		if ( signorder0[i] ) scontextFree(signorder0[i]);
	free(signorder0);
	signorder0 = NULL;
}
#endif

if ( FAI ) FastArithCleanUp(FAI); FAI = NULL;
if ( BII ) BitIO_CleanUp(BII); BII = NULL;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美三区| 国产精品久久久久久久蜜臀| 久久久久亚洲蜜桃| 五月婷婷色综合| 99国内精品久久| 26uuu亚洲| 久久精品国产一区二区三区免费看| 91美女精品福利| 日韩欧美成人一区| 日韩在线观看一区二区| 色诱亚洲精品久久久久久| 亚洲国产精品高清| 色av成人天堂桃色av| 国产精品午夜久久| 五月婷婷另类国产| 久久精工是国产品牌吗| 在线观看免费一区| 国产精品毛片无遮挡高清| caoporm超碰国产精品| 不卡av电影在线播放| 欧美一区二区三区在线电影| 韩国毛片一区二区三区| 亚洲激情图片一区| 中文字幕第一页久久| 亚洲精品一区二区三区影院| 欧美一区欧美二区| 欧美午夜精品理论片a级按摩| 91天堂素人约啪| 成人福利电影精品一区二区在线观看| 久久www免费人成看片高清| 亚洲国产综合在线| 亚洲图片自拍偷拍| 夜夜嗨av一区二区三区中文字幕 | 高清在线观看日韩| 精品夜夜嗨av一区二区三区| 亚洲成人免费电影| 亚洲成a人片在线观看中文| 日韩美女啊v在线免费观看| 国产精品你懂的| 久久久亚洲午夜电影| 久久婷婷久久一区二区三区| 精品人在线二区三区| 日韩欧美一二三| 欧美mv日韩mv亚洲| 久久综合一区二区| 久久精品在这里| 国产目拍亚洲精品99久久精品| 国产女同互慰高潮91漫画| 国产精品色眯眯| 中文字幕日韩精品一区| 亚洲天堂2016| 亚洲成人免费影院| 秋霞国产午夜精品免费视频| 美女免费视频一区二区| 激情五月婷婷综合| 国产成人亚洲综合色影视| av在线不卡电影| 在线精品亚洲一区二区不卡| 欧美区一区二区三区| 日韩三级在线观看| 久久久久成人黄色影片| 国产精品色哟哟网站| 一区二区三区四区蜜桃| 午夜私人影院久久久久| 捆绑调教一区二区三区| 福利91精品一区二区三区| 91丨porny丨户外露出| 在线观看91视频| 欧美一卡二卡在线| 欧美国产禁国产网站cc| 亚洲永久免费视频| 久久精工是国产品牌吗| eeuss鲁片一区二区三区在线看| 91成人看片片| 精品国产一区二区在线观看| 国产精品人妖ts系列视频| 一区av在线播放| 久久99精品国产麻豆婷婷洗澡| 欧美成人性战久久| 国产精品成人在线观看| 午夜精品123| 国产激情视频一区二区三区欧美 | 欧美性猛交xxxx乱大交退制版 | 午夜精品久久久久影视| 精品一区二区三区影院在线午夜| eeuss鲁片一区二区三区| 91麻豆精品国产91久久久使用方法 | 国产视频一区二区在线观看| 一区二区三区四区蜜桃| 日韩电影在线看| 97久久人人超碰| 91精品国产日韩91久久久久久| 日韩免费在线观看| 国产精品久久二区二区| 天天av天天翘天天综合网 | 欧美亚洲一区三区| 欧美精品tushy高清| 国产精品久久久久久久浪潮网站| 性做久久久久久| 东方aⅴ免费观看久久av| 欧美一区二区三区思思人| 国产欧美视频在线观看| 日日夜夜精品视频免费| 色呦呦一区二区三区| 国产精品电影一区二区三区| 日韩经典一区二区| 2021中文字幕一区亚洲| 日韩精品91亚洲二区在线观看| 成人综合婷婷国产精品久久蜜臀| www国产成人| 经典三级一区二区| 日韩一区二区免费视频| 欧美日韩视频一区二区| 久久综合狠狠综合久久综合88| 亚洲欧美日韩国产综合| 麻豆成人久久精品二区三区红 | 国产又粗又猛又爽又黄91精品| 成人av网址在线观看| 日韩精品中午字幕| 性久久久久久久| 99久久99久久综合| 亚洲国产精品成人综合 | 91福利在线导航| 欧美高清在线一区二区| 激情六月婷婷综合| 欧美一区二区三区系列电影| 亚洲高清久久久| 在线观看一区二区精品视频| 亚洲区小说区图片区qvod| 成人av网址在线| 国产精品色婷婷久久58| 不卡在线视频中文字幕| 国产精品家庭影院| 99久久er热在这里只有精品66| 国产精品区一区二区三区| 国产精品99久久久久久久女警 | 亚洲一区在线观看免费| 91成人网在线| 亚洲福利电影网| 欧美卡1卡2卡| 免费观看成人av| 日韩精品一区二区三区三区免费 | 1区2区3区精品视频| 成人国产一区二区三区精品| 国产精品视频免费看| 91偷拍与自偷拍精品| 一区二区三区四区蜜桃| 欧美日韩精品福利| 无吗不卡中文字幕| 欧美一区二区人人喊爽| 国内成人自拍视频| 国产欧美一区二区精品秋霞影院 | 欧美电影免费观看高清完整版在线观看| 午夜精品福利在线| 日韩视频一区二区三区在线播放| 久久综合综合久久综合| 久久久久久麻豆| 成人午夜在线视频| 亚洲欧美另类小说视频| 欧美日韩一区二区三区在线看| 日本vs亚洲vs韩国一区三区| 2021中文字幕一区亚洲| 9i在线看片成人免费| 洋洋av久久久久久久一区| 欧美高清一级片在线| 韩国成人精品a∨在线观看| 中文字幕+乱码+中文字幕一区| 97se狠狠狠综合亚洲狠狠| 午夜精品久久久久久久99水蜜桃 | 亚洲成a人在线观看| 日韩欧美aaaaaa| a级精品国产片在线观看| 天天综合色天天综合色h| 久久久亚洲高清| 国产嫩草影院久久久久| 欧美优质美女网站| 蜜臀99久久精品久久久久久软件| 久久精品亚洲精品国产欧美kt∨| 色婷婷综合激情| 久久精品国产77777蜜臀| 亚洲天堂2014| 欧美xxx久久| 色综合久久中文综合久久牛| 男女男精品网站| 亚洲柠檬福利资源导航| 欧美精品一区二区三区很污很色的 | 国产一区二区三区电影在线观看| 国产精品盗摄一区二区三区| 91精品国产一区二区三区 | 精品日韩在线观看| 91蝌蚪porny| 国产在线一区观看| 午夜久久久久久| 欧美在线啊v一区| 91精品国产综合久久精品app| 日韩三级伦理片妻子的秘密按摩| 久久午夜羞羞影院免费观看| 亚洲私人黄色宅男| 日韩黄色免费网站| 9l国产精品久久久久麻豆|