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

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

?? compress.c

?? 圖像處理圖像集 壓縮源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
///////////////////////////////////////////////////////////////////////////////
void StoreBuffer()
{
	short i,j;
	unsigned char  *lpbmp;
	unsigned char R,G,B;
	int y,u,v,rr,gg,bb;

	for(i=0;i<SampRate_Y_V*8;i++){
		if((sizei+i)<ImgHeight){
			lpbmp=((unsigned char *)lpPtr+(DWORD)(ImgHeight-sizei-i-1)*LineBytes+sizej*3);
			for(j=0;j<SampRate_Y_H*8;j++){
				if((sizej+j)<ImgWidth){
					y=Y[i*8*SampRate_Y_H+j];
					u=U[(i/V_YtoU)*8*SampRate_Y_H+j/H_YtoU];
					v=V[(i/V_YtoV)*8*SampRate_Y_H+j/H_YtoV];
					rr=((y<<8)+18*u+367*v)>>8;
					gg=((y<<8)-159*u-220*v)>>8;
					bb=((y<<8)+411*u-29*v)>>8;
					R=(unsigned char)rr;
					G=(unsigned char)gg;
					B=(unsigned char)bb;
					if (rr&0xffffff00) if (rr>255) R=255; else if (rr<0) R=0;
					if (gg&0xffffff00) if (gg>255) G=255; else if (gg<0) G=0;
					if (bb&0xffffff00) if (bb>255) B=255; else if (bb<0) B=0;
					*lpbmp++=B;
					*lpbmp++=G;
					*lpbmp++=R;
				}
				else  break;
			}
		}
		else break;
	}
}
///////////////////////////////////////////////////////////////////////////////
int DecodeMCUBlock()
{
	short *lpMCUBuffer;
	short i,j;
	int funcret;

	if (IntervalFlag){
		lp+=2;
		ycoef=ucoef=vcoef=0;
		BitPos=0;
		CurByte=0;
	}
	switch(comp_num){
	case 3:
		lpMCUBuffer=MCUBuffer;
		for (i=0;i<SampRate_Y_H*SampRate_Y_V;i++)  //Y
		{
			funcret=HufBlock(YDcIndex,YAcIndex);
			if (funcret!=FUNC_OK)
				return funcret;
			BlockBuffer[0]=BlockBuffer[0]+ycoef;
			ycoef=BlockBuffer[0];
			for (j=0;j<64;j++)
				*lpMCUBuffer++=BlockBuffer[j];
		}
		for (i=0;i<SampRate_U_H*SampRate_U_V;i++)  //U
		{
			funcret=HufBlock(UVDcIndex,UVAcIndex);
			if (funcret!=FUNC_OK)
				return funcret;
			BlockBuffer[0]=BlockBuffer[0]+ucoef;
			ucoef=BlockBuffer[0];
			for (j=0;j<64;j++)
				*lpMCUBuffer++=BlockBuffer[j];
		}
		for (i=0;i<SampRate_V_H*SampRate_V_V;i++)  //V
		{
			funcret=HufBlock(UVDcIndex,UVAcIndex);
			if (funcret!=FUNC_OK)
				return funcret;
			BlockBuffer[0]=BlockBuffer[0]+vcoef;
			vcoef=BlockBuffer[0];
			for (j=0;j<64;j++)
				*lpMCUBuffer++=BlockBuffer[j];
		}
		break;
	case 1:
		lpMCUBuffer=MCUBuffer;
		funcret=HufBlock(YDcIndex,YAcIndex);
		if (funcret!=FUNC_OK)
			return funcret;
		BlockBuffer[0]=BlockBuffer[0]+ycoef;
		ycoef=BlockBuffer[0];
		for (j=0;j<64;j++)
			*lpMCUBuffer++=BlockBuffer[j];
		for (i=0;i<128;i++)
			*lpMCUBuffer++=0;
		break;
	default:
		return FUNC_FORMAT_ERROR;
	}
	return FUNC_OK;
}
//////////////////////////////////////////////////////////////////
int HufBlock(BYTE dchufindex,BYTE achufindex)
{
	short count=0;
	short i;
	int funcret;

	//dc
	HufTabIndex=dchufindex;
	funcret=DecodeElement();
	if(funcret!=FUNC_OK)
		return funcret;

	BlockBuffer[count++]=vvalue;
	//ac
	HufTabIndex=achufindex;
	while (count<64){
		funcret=DecodeElement();
		if(funcret!=FUNC_OK)
			return funcret;
		if ((rrun==0)&&(vvalue==0)){
			for (i=count;i<64;i++)
				BlockBuffer[i]=0;
			count=64;
		}
		else{
			for (i=0;i<rrun;i++)
				BlockBuffer[count++]=0;
			BlockBuffer[count++]=vvalue;
		}
	}
	return FUNC_OK;
}
//////////////////////////////////////////////////////////////////////////////
int DecodeElement()
{
	int thiscode,tempcode;
	unsigned short temp,valueex;
	short codelen;
	BYTE hufexbyte,runsize,tempsize,sign;
	BYTE newbyte,lastbyte;

	if(BitPos>=1){
		BitPos--;
		thiscode=(BYTE)CurByte>>BitPos;
		CurByte=CurByte&And[BitPos];
	}
	else{
		lastbyte=ReadByte();
		BitPos--;
		newbyte=CurByte&And[BitPos];
		thiscode=lastbyte>>7;
		CurByte=newbyte;
	}
	codelen=1;
	while ((thiscode<huf_min_value[HufTabIndex][codelen-1])||
		  (code_len_table[HufTabIndex][codelen-1]==0)||
		  (thiscode>huf_max_value[HufTabIndex][codelen-1]))
	{
		if(BitPos>=1){
			BitPos--;
			tempcode=(BYTE)CurByte>>BitPos;
			CurByte=CurByte&And[BitPos];
		}
		else{
			lastbyte=ReadByte();
			BitPos--;
			newbyte=CurByte&And[BitPos];
			tempcode=(BYTE)lastbyte>>7;
			CurByte=newbyte;
		}
		thiscode=(thiscode<<1)+tempcode;
		codelen++;
		if(codelen>16)
			return FUNC_FORMAT_ERROR;
	}  //while
	temp=thiscode-huf_min_value[HufTabIndex][codelen-1]+code_pos_table[HufTabIndex][codelen-1];
	hufexbyte=(BYTE)code_value_table[HufTabIndex][temp];
	rrun=(short)(hufexbyte>>4);
	runsize=hufexbyte&0x0f;
	if(runsize==0){
		vvalue=0;
		return FUNC_OK;
	}
	tempsize=runsize;
	if(BitPos>=runsize){
		BitPos-=runsize;
		valueex=(BYTE)CurByte>>BitPos;
		CurByte=CurByte&And[BitPos];
	}
	else{
		valueex=CurByte;
		tempsize-=BitPos;
		while(tempsize>8){
			lastbyte=ReadByte();
			valueex=(valueex<<8)+(BYTE)lastbyte;
			tempsize-=8;
		}  //while
		lastbyte=ReadByte();
		BitPos-=tempsize;
		valueex=(valueex<<tempsize)+(lastbyte>>BitPos);
		CurByte=lastbyte&And[BitPos];
	}  //else
	sign=valueex>>(runsize-1);
	if(sign)
		vvalue=valueex;
	else{
		valueex=valueex^0xffff;
		temp=0xffff<<runsize;
		vvalue=-(short)(valueex^temp);
	}
	return FUNC_OK;
}
/////////////////////////////////////////////////////////////////////////////////////
void IQtIZzMCUComponent(short flag)
{
	short H,VV;
	short i,j;
	int *pQtZzMCUBuffer;
	short  *pMCUBuffer;

	switch(flag){
	case 0:
		H=SampRate_Y_H;
		VV=SampRate_Y_V;
		pMCUBuffer=MCUBuffer;
		pQtZzMCUBuffer=QtZzMCUBuffer;
		break;
	case 1:
		H=SampRate_U_H;
		VV=SampRate_U_V;
		pMCUBuffer=MCUBuffer+Y_in_MCU*64;
		pQtZzMCUBuffer=QtZzMCUBuffer+Y_in_MCU*64;
		break;
	case 2:
		H=SampRate_V_H;
		VV=SampRate_V_V;
		pMCUBuffer=MCUBuffer+(Y_in_MCU+U_in_MCU)*64;
		pQtZzMCUBuffer=QtZzMCUBuffer+(Y_in_MCU+U_in_MCU)*64;
		break;
	}
	for(i=0;i<VV;i++)
		for (j=0;j<H;j++)
			IQtIZzBlock(pMCUBuffer+(i*H+j)*64,pQtZzMCUBuffer+(i*H+j)*64,flag);
}
//////////////////////////////////////////////////////////////////////////////////////////
void IQtIZzBlock(short  *s ,int * d,short flag)
{
	short i,j;
	short tag;
	short *pQt;
	int buffer2[8][8];
	int *buffer1;
	short offset;

	switch(flag){
	case 0:
		pQt=YQtTable;
		offset=128;
		break;
	case 1:
		pQt=UQtTable;
		offset=0;
		break;
	case 2:
		pQt=VQtTable;
		offset=0;
		break;
	}

	for(i=0;i<8;i++)
		for(j=0;j<8;j++){
			tag=Zig_Zag[i][j];
			buffer2[i][j]=(int)s[tag]*(int)pQt[tag];
		}
	buffer1=(int *)buffer2;
	Fast_IDCT(buffer1);
	for(i=0;i<8;i++)
		for(j=0;j<8;j++)
			d[i*8+j]=buffer2[i][j]+offset;
}
///////////////////////////////////////////////////////////////////////////////
void Fast_IDCT(int * block)
{
	short i;

	for (i=0; i<8; i++)
		idctrow(block+8*i);

	for (i=0; i<8; i++)
		idctcol(block+i);
}
///////////////////////////////////////////////////////////////////////////////
BYTE  ReadByte()
{
	BYTE  i;

	i=*(lp++);
	if(i==0xff)
		lp++;
	BitPos=8;
	CurByte=i;
	return i;
}
///////////////////////////////////////////////////////////////////////
void Initialize_Fast_IDCT()
{
	short i;

	iclp = iclip+512;
	for (i= -512; i<512; i++)
		iclp[i] = (i<-256) ? -256 : ((i>255) ? 255 : i);
}
////////////////////////////////////////////////////////////////////////
void idctrow(int * blk)
{
	int x0, x1, x2, x3, x4, x5, x6, x7, x8;
	//intcut
	if (!((x1 = blk[4]<<11) | (x2 = blk[6]) | (x3 = blk[2]) |
		(x4 = blk[1]) | (x5 = blk[7]) | (x6 = blk[5]) | (x7 = blk[3])))
	{
		blk[0]=blk[1]=blk[2]=blk[3]=blk[4]=blk[5]=blk[6]=blk[7]=blk[0]<<3;
		return;
	}
	x0 = (blk[0]<<11) + 128; // for proper rounding in the fourth stage 
	//first stage
	x8 = W7*(x4+x5);
	x4 = x8 + (W1-W7)*x4;
	x5 = x8 - (W1+W7)*x5;
	x8 = W3*(x6+x7);
	x6 = x8 - (W3-W5)*x6;
	x7 = x8 - (W3+W5)*x7;
	//second stage
	x8 = x0 + x1;
	x0 -= x1;
	x1 = W6*(x3+x2);
	x2 = x1 - (W2+W6)*x2;
	x3 = x1 + (W2-W6)*x3;
	x1 = x4 + x6;
	x4 -= x6;
	x6 = x5 + x7;
	x5 -= x7;
	//third stage
	x7 = x8 + x3;
	x8 -= x3;
	x3 = x0 + x2;
	x0 -= x2;
	x2 = (181*(x4+x5)+128)>>8;
	x4 = (181*(x4-x5)+128)>>8;
	//fourth stage
	blk[0] = (x7+x1)>>8;
	blk[1] = (x3+x2)>>8;
	blk[2] = (x0+x4)>>8;
	blk[3] = (x8+x6)>>8;
	blk[4] = (x8-x6)>>8;
	blk[5] = (x0-x4)>>8;
	blk[6] = (x3-x2)>>8;
	blk[7] = (x7-x1)>>8;
}
//////////////////////////////////////////////////////////////////////////////
void idctcol(int * blk)
{
	int x0, x1, x2, x3, x4, x5, x6, x7, x8;
	//intcut
	if (!((x1 = (blk[8*4]<<8)) | (x2 = blk[8*6]) | (x3 = blk[8*2]) |
		(x4 = blk[8*1]) | (x5 = blk[8*7]) | (x6 = blk[8*5]) | (x7 = blk[8*3])))
	{
		blk[8*0]=blk[8*1]=blk[8*2]=blk[8*3]=blk[8*4]=blk[8*5]
			=blk[8*6]=blk[8*7]=iclp[(blk[8*0]+32)>>6];
		return;
	}
	x0 = (blk[8*0]<<8) + 8192;
	//first stage
	x8 = W7*(x4+x5) + 4;
	x4 = (x8+(W1-W7)*x4)>>3;
	x5 = (x8-(W1+W7)*x5)>>3;
	x8 = W3*(x6+x7) + 4;
	x6 = (x8-(W3-W5)*x6)>>3;
	x7 = (x8-(W3+W5)*x7)>>3;
	//second stage
	x8 = x0 + x1;
	x0 -= x1;
	x1 = W6*(x3+x2) + 4;
	x2 = (x1-(W2+W6)*x2)>>3;
	x3 = (x1+(W2-W6)*x3)>>3;
	x1 = x4 + x6;
	x4 -= x6;
	x6 = x5 + x7;
	x5 -= x7;
	//third stage
	x7 = x8 + x3;
	x8 -= x3;
	x3 = x0 + x2;
	x0 -= x2;
	x2 = (181*(x4+x5)+128)>>8;
	x4 = (181*(x4-x5)+128)>>8;
	//fourth stage
	blk[8*0] = iclp[(x7+x1)>>14];
	blk[8*1] = iclp[(x3+x2)>>14];
	blk[8*2] = iclp[(x0+x4)>>14];
	blk[8*3] = iclp[(x8+x6)>>14];
	blk[8*4] = iclp[(x8-x6)>>14];
	blk[8*5] = iclp[(x0-x4)>>14];
	blk[8*6] = iclp[(x3-x2)>>14];
	blk[8*7] = iclp[(x7-x1)>>14];
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产欧美亚州国产日韩mv天天看完整 | 久久精品人人爽人人爽| 亚洲国产综合人成综合网站| 91蜜桃在线免费视频| 亚洲欧美视频一区| 精品污污网站免费看| 亚洲一级二级在线| 91精品福利在线一区二区三区| 日韩精品一区第一页| 国产精品理论片| 色呦呦网站一区| 婷婷开心激情综合| 久久综合久久99| 不卡影院免费观看| 亚洲在线观看免费视频| 在线播放/欧美激情| 国产一区欧美一区| 亚洲女女做受ⅹxx高潮| 欧美日韩精品一区二区| 国产一区二区调教| 日韩毛片在线免费观看| 欧美在线观看一区| 国产在线精品国自产拍免费| 国产精品国产成人国产三级| 欧美精品粉嫩高潮一区二区| 国内成人免费视频| 亚洲美女在线国产| 精品国产青草久久久久福利| 不卡免费追剧大全电视剧网站| 亚洲国产精品久久久久婷婷884| 在线不卡欧美精品一区二区三区| 国产精品亚洲成人| 亚洲一二三区在线观看| 久久一日本道色综合| 在线免费观看日本欧美| 精品一区二区三区在线观看国产| 亚洲欧洲成人精品av97| 欧美一区二区性放荡片| 97se亚洲国产综合自在线不卡| 蜜桃视频在线观看一区| 亚洲欧美一区二区三区极速播放| 精品国产伦理网| 色老综合老女人久久久| 国产成人午夜片在线观看高清观看| 亚洲中国最大av网站| 精品成人一区二区三区| 欧美色综合天天久久综合精品| 高清国产一区二区三区| 日韩中文字幕1| 亚洲女同一区二区| 国产日韩欧美一区二区三区乱码| 欧美日韩mp4| 色欧美乱欧美15图片| 国产成人在线视频免费播放| 青草国产精品久久久久久| 亚洲精品日日夜夜| 国产精品天美传媒| www精品美女久久久tv| 在线电影国产精品| 欧美午夜不卡在线观看免费| 成人美女在线观看| 东方aⅴ免费观看久久av| 美女视频一区二区三区| 亚洲福利国产精品| 一区二区国产盗摄色噜噜| 国产精品三级电影| 久久精品日韩一区二区三区| 日韩欧美激情四射| 8v天堂国产在线一区二区| 在线免费精品视频| 在线观看www91| 色婷婷精品久久二区二区蜜臂av| 国产成人免费xxxxxxxx| 国产一区二区精品久久99| 久久精品国产一区二区| 麻豆精品一区二区三区| 蜜臀av性久久久久蜜臀av麻豆 | 亚洲一二三四在线| 亚洲天堂免费在线观看视频| 国产精品久线观看视频| 亚洲日本va午夜在线影院| 国产精品久久久久7777按摩| 久久精品人人做| 国产精品久久久久aaaa樱花 | 亚洲国产日日夜夜| 一区二区三区日韩欧美精品| 亚洲午夜影视影院在线观看| 亚洲一级二级三级在线免费观看| 亚洲成人综合网站| 秋霞影院一区二区| 精品中文字幕一区二区| 国产一区啦啦啦在线观看| 国产精品一区二区免费不卡| 国产成人免费高清| 色先锋久久av资源部| 欧美午夜视频网站| 日韩免费观看高清完整版在线观看| 日韩欧美一二三| 国产午夜亚洲精品不卡| 亚洲图片激情小说| 午夜视频在线观看一区二区| 美女国产一区二区| 懂色av一区二区在线播放| 一本大道av伊人久久综合| 欧美日韩成人综合天天影院| 欧美成人a在线| 国产精品视频一区二区三区不卡| 亚洲精品日日夜夜| 麻豆专区一区二区三区四区五区| 成人国产精品视频| 欧美日本高清视频在线观看| 欧美va亚洲va在线观看蝴蝶网| 欧美激情一区三区| 亚洲丶国产丶欧美一区二区三区| 精品一区二区免费看| 成人av免费观看| 欧美一区二区三区四区久久| 久久精品视频免费| 午夜视频在线观看一区| 国产成人aaa| 欧美日韩精品一区二区| 国产目拍亚洲精品99久久精品| 亚洲综合区在线| 国内成人精品2018免费看| 色婷婷久久久综合中文字幕 | 中文字幕在线不卡国产视频| 午夜精品123| 97国产精品videossex| 日韩亚洲欧美一区二区三区| 亚洲欧美综合色| 蓝色福利精品导航| 在线视频一区二区三区| 久久午夜色播影院免费高清| 五月婷婷久久丁香| 91香蕉国产在线观看软件| 欧美大片一区二区| 亚洲韩国精品一区| 99麻豆久久久国产精品免费优播| 精品日韩av一区二区| 亚洲午夜精品网| 成人a免费在线看| 久久天堂av综合合色蜜桃网| 亚洲宅男天堂在线观看无病毒| 国产99精品国产| 精品国产免费一区二区三区四区| 婷婷六月综合网| 欧美性猛交xxxxxx富婆| |精品福利一区二区三区| 国产精品系列在线播放| 日韩视频免费观看高清完整版在线观看 | 成人激情视频网站| 久久伊人中文字幕| 久久国产日韩欧美精品| 91精品国产综合久久久久久久久久 | 亚洲欧洲日韩一区二区三区| 麻豆91小视频| 欧美一区二区三区免费大片 | 日本精品一区二区三区高清| 国产欧美日韩视频在线观看| 国产精品888| 久久久噜噜噜久噜久久综合| 美国av一区二区| 日韩三级电影网址| 免费美女久久99| 欧美一区二区二区| 日本va欧美va瓶| 欧美一区二区三区白人| 日日噜噜夜夜狠狠视频欧美人| 欧美日韩aaaaaa| 日本中文在线一区| 日韩视频免费直播| 美女免费视频一区二区| 欧美精品一区二区不卡| 精品亚洲欧美一区| 久久久国产精品午夜一区ai换脸| 精品一区二区三区视频| 精品理论电影在线观看 | 日韩欧美一区在线观看| 蜜臀av在线播放一区二区三区 | 成人午夜精品在线| 亚洲国产精品激情在线观看| 菠萝蜜视频在线观看一区| 国产精品久久久久久久午夜片| av电影天堂一区二区在线| 国产精品麻豆网站| 欧美性生活久久| 美女mm1313爽爽久久久蜜臀| 久久久不卡网国产精品一区| 国产91丝袜在线播放九色| 国产精品国产自产拍高清av王其| 色激情天天射综合网| 三级久久三级久久| 国产色综合一区| 色域天天综合网| 午夜久久久影院| 精品少妇一区二区三区免费观看 | 日韩不卡一区二区三区 | 欧美乱妇一区二区三区不卡视频| 视频一区视频二区中文| 久久久综合精品|