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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cdfpred.c

?? 一個簡單而且快速的無損壓縮算法。包含源代碼實現(xiàn)
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "cdftypes.h"
#include "cdfpred.h"
#include "bppmask.h"
#include "assert.h"
#include <memory.h>


/* zwroc mediane */
#define MEDIAN(A, B, C)								\
		( (B)>=(C) ?								\
		  (C)>=(A) ? (C) : (A)>=(B) ? (B) : (A) :	\
		  (C)<=(A) ? (C) : (A)<=(B) ? (B) : (A)		\
		)											\


/* automatyczne tlumaczenie rozkladu U na L, wypelniane przez decorelateinit() dla 8bpp i mniej*/
static unsigned int xlatU2L[256]; 


/* kompresja kodu zrodlowego */
#define PIXEL_A ((unsigned int)currow[i-1])
#define PIXEL_B ((unsigned int)prevrow[i])
#define PIXEL_C ((unsigned int)prevrow[i-1])


/* pomocnicze do dekorelowania pojedynczych pikseli */
/*  0  */
static void decorelate_onepixel_0(const PIXEL * const currow, PIXEL * const decorelatedrow, 
		    					  const unsigned int pixelbitmask)
{
	const unsigned int s=*currow; 
		
	if (s<=(pixelbitmask>>1)) 
		*decorelatedrow=s<<1; 
	else 
		*decorelatedrow=((pixelbitmask-s)<<1)+1; 
}


static void decorelate_onepixel_0_8bpp(const BYTE * const currow, BYTE * const decorelatedrow, 
		    						   const unsigned int pixelbitmask)
{
	const unsigned int s=*currow; 
		
	*decorelatedrow=xlatU2L[s];
}


static void decorelate_onepixel_2(const PIXEL * const prevrow, const PIXEL * const currow, 
								  PIXEL * const decorelatedrow, const unsigned int pixelbitmask)
{
	const unsigned int s=(unsigned)( (int)(*currow) - (int)(*prevrow) ) & pixelbitmask; 
		
	if (s<=(pixelbitmask>>1)) 
		*decorelatedrow=s<<1; 
	else 
		*decorelatedrow=((pixelbitmask-s)<<1)+1; 
}


static void decorelate_onepixel_2_8bpp(const BYTE * const prevrow, const BYTE * const currow, 
									   BYTE * const decorelatedrow, const unsigned int pixelbitmask)
{
	const unsigned int s=(unsigned)( (int)(*currow) - (int)(*prevrow) ) & pixelbitmask; 
		
	*decorelatedrow=xlatU2L[s];
}


/* dekorelowanie calych wierszy */


/*  0  */
static void decorelate_0(const PIXEL currow[], const unsigned int rowlen, const int bpp,
						 PIXEL decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	for (i=0; i<rowlen; i++)
	{
		const unsigned int s=currow[i]; 
		
		if (s<=pixelbitmaskshr) 
			decorelatedrow[i]=s<<1; 
		else 
			decorelatedrow[i]=((pixelbitmask-s)<<1)+1; 
	}
}


static void decorelate_0_8bpp(const BYTE currow[], const unsigned int rowlen, const int bpp,
							  BYTE decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	for (i=0; i<rowlen; i++)
	{
		const unsigned int s=currow[i]; 
		
		decorelatedrow[i]=xlatU2L[s];
	}
}


/*  a  */
static void decorelate_1(const PIXEL currow[], const unsigned int rowlen, const int bpp,
						 PIXEL decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_0(currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		const unsigned int s=(unsigned)( (int)currow[i] - (int)PIXEL_A ) & pixelbitmask; 
		
		if (s<=pixelbitmaskshr) 
			decorelatedrow[i]=s<<1; 
		else 
			decorelatedrow[i]=((pixelbitmask-s)<<1)+1; 
	}
}


static void decorelate_1_8bpp(const BYTE currow[], const unsigned int rowlen, const int bpp,
							  BYTE decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_0_8bpp(currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		const unsigned int s=(unsigned)( (int)currow[i] - (int)PIXEL_A ) & pixelbitmask; 
		
		decorelatedrow[i]=xlatU2L[s];
	}
}


/*  b  */
static void decorelate_2(const PIXEL prevrow[], const PIXEL currow[], const unsigned int rowlen, const int bpp,
						 PIXEL decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	for (i=0; i<rowlen; i++)
	{
		const unsigned int s=(unsigned)( (int)currow[i] - (int)PIXEL_B ) & pixelbitmask; 
		
		if (s<=pixelbitmaskshr) 
			decorelatedrow[i]=s<<1; 
		else 
			decorelatedrow[i]=((pixelbitmask-s)<<1)+1; 
	}
}


static void decorelate_2_8bpp(const BYTE prevrow[], const BYTE currow[], const unsigned int rowlen, const int bpp,
							  BYTE decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	for (i=0; i<rowlen; i++)
	{
		const unsigned int s=(unsigned)( (int)currow[i] - (int)PIXEL_B ) & pixelbitmask; 
		
		decorelatedrow[i]=xlatU2L[s];
	}
}


/*  c  */
static void decorelate_3(const PIXEL prevrow[], const PIXEL currow[], const unsigned int rowlen, const int bpp,
						 PIXEL decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_2(prevrow, currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		const unsigned int s=(unsigned)( (int)currow[i] - (int)PIXEL_C ) & pixelbitmask; 
		
		if (s<=pixelbitmaskshr) 
			decorelatedrow[i]=s<<1; 
		else 
			decorelatedrow[i]=((pixelbitmask-s)<<1)+1; 
	}
}


static void decorelate_3_8bpp(const BYTE prevrow[], const BYTE currow[], const unsigned int rowlen, const int bpp,
							  BYTE decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_2_8bpp(prevrow, currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		const unsigned int s=(unsigned)( (int)currow[i] - (int)PIXEL_C ) & pixelbitmask; 
		
		decorelatedrow[i]=xlatU2L[s];
	}
}


/*  a+b-c  */
static void decorelate_4(const PIXEL prevrow[], const PIXEL currow[], const unsigned int rowlen, const int bpp,
						 PIXEL decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_2(prevrow, currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		int p=((int)(PIXEL_A+PIXEL_B) - (int)PIXEL_C);

		if (p<0)
			p=0;
		else if ((unsigned)p>pixelbitmask)
			p=pixelbitmask;

		{
			const unsigned int s=(unsigned)( (int)currow[i] - p ) & pixelbitmask; 
			
			if (s<=pixelbitmaskshr) 
				decorelatedrow[i]=s<<1; 
			else 
				decorelatedrow[i]=((pixelbitmask-s)<<1)+1; 
		}
	}
}


static void decorelate_4_8bpp(const BYTE prevrow[], const BYTE currow[], const unsigned int rowlen, const int bpp,
						      BYTE decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_2_8bpp(prevrow, currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		int p=((int)(PIXEL_A+PIXEL_B) - (int)PIXEL_C);

		if (p<0)
			p=0;
		else if ((unsigned)p>pixelbitmask)
			p=pixelbitmask;

		{
			const unsigned int s=(unsigned)( (int)currow[i] - p ) & pixelbitmask; 
			
			decorelatedrow[i]=xlatU2L[s];
		}
	}
}


/*  a+(b-c)/2  */
static void decorelate_5(const PIXEL prevrow[], const PIXEL currow[], const unsigned int rowlen, const int bpp,
						 PIXEL decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_2(prevrow, currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		int p=( (int)PIXEL_A + (((int)PIXEL_B-(int)PIXEL_C)>>1) ) ;

		if (p<0)
			p=0;
		else if ((unsigned)p>pixelbitmask)
			p=pixelbitmask;

		{
			const unsigned int s=(unsigned)( (int)currow[i] - p ) & pixelbitmask; 
			
			if (s<=pixelbitmaskshr) 
				decorelatedrow[i]=s<<1; 
			else 
				decorelatedrow[i]=((pixelbitmask-s)<<1)+1; 
		}
	}
}


static void decorelate_5_8bpp(const BYTE prevrow[], const BYTE currow[], const unsigned int rowlen, const int bpp,
							  BYTE decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

	assert(rowlen);	// osobne wywolanie dla pierwszego piksela, bo on nie ma lewego sasiada i komplikowalby ponizsza petle - nie daloby sie zrobic unrolling
	decorelate_onepixel_2_8bpp(prevrow, currow, decorelatedrow, pixelbitmask);
	for (i=1; i<rowlen; i++)
	{
		int p=( (int)PIXEL_A + (((int)PIXEL_B-(int)PIXEL_C)>>1) ) ;

		if (p<0)
			p=0;
		else if ((unsigned)p>pixelbitmask)
			p=pixelbitmask;

		{
			const unsigned int s=(unsigned)( (int)currow[i] - p ) & pixelbitmask; 
			
			decorelatedrow[i]=xlatU2L[s];
		}
	}
}


/*  b+(a-c)/2  */
static void decorelate_6(const PIXEL prevrow[], const PIXEL currow[], const unsigned int rowlen, const int bpp,
						 PIXEL decorelatedrow[])
{
	const unsigned int pixelbitmask=bppmask[bpp];
	const unsigned int pixelbitmaskshr=pixelbitmask>>1;
	unsigned int i;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产凹凸在线观看一区二区| 亚洲成人免费电影| 国产成人综合视频| 久久这里只有精品视频网| 国产又粗又猛又爽又黄91精品| 日韩精品专区在线影院观看| 国产精品一区二区在线观看不卡 | 一区二区三区av电影| 91精品91久久久中77777| 亚洲午夜日本在线观看| 91精品国产一区二区三区香蕉| 蜜臀久久久99精品久久久久久| 久久久久国产精品麻豆ai换脸| 成人看片黄a免费看在线| 亚洲欧洲美洲综合色网| 欧美色爱综合网| 另类小说视频一区二区| 中文字幕中文字幕在线一区| 91九色02白丝porn| 精品系列免费在线观看| 1000精品久久久久久久久| 欧美日本乱大交xxxxx| 精品一区二区三区欧美| 国产精品国产三级国产普通话99| 91久久人澡人人添人人爽欧美 | 欧美一级视频精品观看| 国产成人免费在线| 亚洲一区二区三区四区中文字幕| 日韩精品一区二区三区视频在线观看| 国产白丝网站精品污在线入口| 亚洲自拍偷拍麻豆| 久久日一线二线三线suv| 91久久精品网| 粗大黑人巨茎大战欧美成人| 亚洲国产一区二区a毛片| 久久久久久亚洲综合影院红桃| 色偷偷一区二区三区| 韩国三级电影一区二区| 亚洲午夜久久久久中文字幕久| 久久久影视传媒| 欧美日韩国产a| 成人h动漫精品一区二区| 蜜臀精品一区二区三区在线观看| 中文字幕日韩精品一区 | 久久久高清一区二区三区| 在线免费观看日本欧美| 成人免费毛片a| 日韩电影一区二区三区四区| 国产精品久久久久aaaa| 26uuu国产日韩综合| 精品1区2区3区| 91小视频在线| 丁香啪啪综合成人亚洲小说| 激情五月激情综合网| 日日摸夜夜添夜夜添精品视频| 亚洲精品国产一区二区三区四区在线| 久久亚洲精精品中文字幕早川悠里| 欧美亚洲免费在线一区| 99免费精品在线| 高清成人在线观看| 国产在线一区二区综合免费视频| 天天综合色天天综合色h| 亚洲精品第1页| 中文字幕在线一区| 中文成人综合网| 亚洲国产精品精华液ab| 久久久久久电影| 久久一区二区三区四区| 精品国产污网站| 欧美刺激午夜性久久久久久久| 欧美精品777| 欧美伦理电影网| 欧美日本一区二区三区| 欧美精品三级日韩久久| 欧美日韩久久一区二区| 精品视频全国免费看| 欧美日韩国产综合久久| 在线电影欧美成精品| 91精品国产高清一区二区三区蜜臀| 欧美性生活一区| 欧美日韩在线播放三区四区| 欧美日韩你懂得| 7777精品伊人久久久大香线蕉| 欧美精品久久天天躁| 在线电影欧美成精品| 日韩欧美国产精品一区| 欧美成人国产一区二区| 久久久久综合网| 国产精品女同一区二区三区| 中文字幕在线观看一区二区| 亚洲女人小视频在线观看| 亚洲精品国产高清久久伦理二区| 一区二区三区四区视频精品免费| 亚洲一二三区视频在线观看| 视频一区二区三区入口| 麻豆精品视频在线| 国产成人在线视频免费播放| 不卡的电视剧免费网站有什么| 9久草视频在线视频精品| 欧美在线你懂的| 91精品国产免费| 国产视频一区二区三区在线观看| 国产精品福利一区| 亚洲超碰精品一区二区| 国产一区二区三区在线观看精品 | 一区二区激情小说| 三级成人在线视频| 国产九色sp调教91| 91免费国产在线| 91精品国产综合久久久久久久久久| 精品国产乱码久久久久久夜甘婷婷| 久久精品在这里| 亚洲国产综合91精品麻豆| 偷窥国产亚洲免费视频| 国产精品一区在线观看你懂的| 91视频免费播放| 日韩美女一区二区三区四区| 国产精品入口麻豆九色| 亚洲成人精品影院| 国产福利不卡视频| 欧美日韩不卡视频| 中文字幕欧美日韩一区| 午夜视频久久久久久| 成人综合在线观看| 欧美成人video| 亚洲一区二三区| 国产99久久久久| 欧美一区二区大片| 夜夜夜精品看看| 国产成人精品亚洲午夜麻豆| 欧美一区二区视频在线观看| 日韩美女视频一区| 国产美女精品在线| 91麻豆精品国产91久久久久久| 国产精品私房写真福利视频| 秋霞电影一区二区| 欧美在线观看一二区| 欧美激情一区二区三区不卡| 日韩成人一级大片| 在线观看国产精品网站| 中文字幕第一区第二区| 极品尤物av久久免费看| 欧美老肥妇做.爰bbww视频| 中文字幕亚洲不卡| 岛国精品一区二区| 久久久久久一二三区| 麻豆精品在线视频| 欧美一二三区在线观看| 午夜久久久久久电影| 欧美午夜片在线观看| 国产精品乱人伦| 国产·精品毛片| 久久综合丝袜日本网| 麻豆91小视频| 欧美一区二区三区电影| 午夜精品一区二区三区电影天堂| 91老司机福利 在线| 亚洲国产高清在线观看视频| 国产一区二区三区四| 久久无码av三级| 国产在线视频不卡二| 日韩精品一区二区三区中文精品| 日韩精品一区第一页| 777色狠狠一区二区三区| 图片区小说区国产精品视频| 欧美三级电影在线看| 丝袜诱惑亚洲看片| 91精品国产91久久久久久最新毛片| 伊人色综合久久天天人手人婷| 972aa.com艺术欧美| 亚洲精品亚洲人成人网在线播放| 色综合天天视频在线观看 | 午夜精品福利一区二区蜜股av| 91国产精品成人| 亚洲成av人片在线观看| 在线成人小视频| 毛片av中文字幕一区二区| 精品国产乱码久久久久久免费 | 久久国产精品99久久人人澡| 日韩视频在线你懂得| 国精品**一区二区三区在线蜜桃| 久久色在线视频| 成人理论电影网| 亚洲乱码国产乱码精品精可以看| 色综合天天综合网天天狠天天| 亚洲欧美日韩久久| 欧美色精品在线视频| 极品少妇一区二区三区精品视频 | 99国产精品久久久久久久久久久| 亚洲激情综合网| 91精品国产入口| 国产成人在线电影| 亚洲欧美一区二区三区久本道91| 欧美主播一区二区三区美女| 日韩**一区毛片| 欧美激情一区二区三区| 在线看日本不卡| 国产一区二三区好的| 亚洲情趣在线观看| 日韩你懂的在线观看|