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

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

?? arcode.c

?? 此代碼是C編的EWZ的測試程序,大家可以嘗試對這個包里lena.pgm進行圖像壓縮處理.
?? C
?? 第 1 頁 / 共 2 頁
字號:
		ar->Low = (ar->Low<<1);  
		ar->High = (ar->High<<1) + 1; 
	}
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderOpenFile(AREncoder *ar, char *filename)
{
	if (!ar->Closed){
		ARCoderError("File already opened.");
	}

	ar->f = fopen(filename, "wb");
	if (ar->f == NULL){
		ARCoderError("Fail to open file");
	}
	ar->Closed = 0;
	ar->ByteCounter = 0;
  	ar->SymbolCounter = ar->Low = ar->BitsToFollow = ar->BitBuffer = 0;
	ar->BitIndex = 8;  
	ar->High = TopValue;
	
	return;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderOpenAppendFile(AREncoder *ar, char * filename)
{
	if (!ar->Closed){
		ARCoderError("File already opened.");
	}

	ar->f = fopen(filename, "a+b");
   if (ar->f == NULL){
		ARCoderError("Fail to open file");
	}

	ar->Closed = 0;
	ar->ByteCounter = 0;
	ar->SymbolCounter = ar->Low = ar->BitsToFollow = ar->BitBuffer = ar->Closed = 0;
	ar->BitIndex = 8;  
	ar->High = TopValue;

	return;
}


/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderCloseFile(AREncoder *ar)
{
	if (ar->Closed){
		return;
	}

	AREncoderFlush(ar);

	if (fclose(ar->f)==EOF){
		ARCoderError("Fail to close.");
	}

	ar->Closed = 1;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderFlush(AREncoder *ar)
{
	if (ar->Closed){
		return;
	}
	
	ar->BitsToFollow++;
	AREncoderBitPlusFollow(ar, ar->Low >= FirstQtr);

	//if (ar->BitIndex<8){
		if (putc(ar->BitBuffer >> ar->BitIndex, ar->f) == EOF){
			ARCoderError("Fail to write.");
		}
		ar->ByteCounter++;  
	//}

	return;	
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderEncodeBit(AREncoder *ar, int bit)
{
	long lm1 = ar->Low-1;
	long range = ar->High-lm1;
	if (bit){
		ar->Low += (range >> 1);
	}
	else{
		ar->High = lm1 +(range>>1);
	}

	AREncoderUpdateInterval(ar);

	return;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderEncodeSymbol(AREncoder *ar, int bit, HistoBi *h)
{
	long lm1 = ar->Low -1;
	long range = (ar->High-lm1) * h->c0 / (h->c0+h->c1);

	if (bit){
		ar->Low += range;
	}
	else{
		ar->High = lm1 + range;
	}

	HistoBiUpdate(h, bit);
	AREncoderUpdateInterval(ar);

	return;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderEncodeMSymbol(AREncoder *ar, int s, Histo *h)
{
	long range = ar->High - ar->Low + 1;
	long countLeft = HistoGetCumul(h, s-1);
	long count = HistoGetCumul(h, s);
	
	ar->High= ar->Low+(range*count)/h->TotalFreq - 1;
	ar->Low = ar->Low+(range*countLeft)/h->TotalFreq;
	
	HistoUpdate(h, 1, s);
	
	AREncoderUpdateInterval(ar);
	
	return;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderEncodeBits(AREncoder *ar, int bits, int word)
{
	int i, t;

	unsigned int mask=1<<(bits-1);
	
	for (i=bits-1; i>=0; i--){
		t = (word & mask ? 1 : 0);
		AREncoderEncodeBit(ar, (word & mask ? 1 : 0));		
		mask >>= 1;
	}
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
int AREncoderBitsOutput(AREncoder *ar)
{
	return (ar->ByteCounter<<3) + 10 + ar->BitsToFollow - ar->BitIndex;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
AREncoder* AREncoderAlloc(void)
{
	AREncoder *ar;

	if ((ar=(AREncoder *)malloc(sizeof(AREncoder)))==NULL){
		return NULL;
	}
	ar->Closed = 1;
	return ar;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void AREncoderDealloc(AREncoder *ar)
{
	if (!ar->Closed){
		ARCoderWarning("File not closed.");
		AREncoderCloseFile(ar);
	}
	free(ar);
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
/* Arithmetic Decoder Functions */

void ARDecoderInputByte(ARDecoder *ar)
{
	if ((ar->BitBuffer = getc(ar->f)) == EOF){
		if (++ar->ExtraBits > CodeValueBits - 2){
			ARCoderError("End of file reached");
		}		
	}
	else{
		ar->BitIndex = 8;  	
		++ar->ByteCounter;
	}
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void ARDecoderUpdateInterval(ARDecoder *ar)
{
	++ar->SymbolCounter;

	for (;;){
		if (ar->High < Half){
			/* nothing */
		}
		else if (ar->Low >= Half) {
			ar->Value -= Half;
			ar->Low -= Half;  
			ar->High -= Half; 
		}
		else if ((ar->Low >= FirstQtr) && (ar->High < ThirdQtr)){
			ar->Value -= FirstQtr;  
			ar->Low -= FirstQtr;  
			ar->High -= FirstQtr; 
		}
		else{
			break;
		}
		
		ar->Low <<= 1;  
		ar->High += ar->High + 1;
		ar->Value <<= 1;

		if (!ar->BitIndex){
			ARDecoderInputByte(ar);
		}
		if (ar->BitBuffer & 1){
			ar->Value++;
		}
		ar->BitBuffer>>=1;
		ar->BitIndex--;
	}
}


/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void ARDecoderOpenFile(ARDecoder *ar, char* filename)
{
	int i;

	if (!ar->Closed){
		ARCoderError("File already opened.");
	}
	
	ar->f = fopen(filename, "rb");
	if (ar->f == NULL){
		ARCoderError("Fail to open file");
	}
	
	ar->Closed = 0;
	ar->ByteCounter = 0;
	ar->SymbolCounter = ar->Low = ar->Value = ar->BitIndex = ar->ExtraBits = 0;
	ar->High = TopValue;

	for (i=0; i<CodeValueBits; i++){
		if (!ar->BitIndex){
			ARDecoderInputByte(ar);
		}
		ar->Value += ar->Value + (ar->BitBuffer & 1);
		ar->BitBuffer >>=1;
		ar->BitIndex--;
	}
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void ARDecoderOpenFileOffset(ARDecoder *ar, char* filename, int OffsetBytes)
{
	int i;

	if (!ar->Closed){
		ARCoderError("File already opened.");
	}

	ar->f = fopen(filename, "rb");
	if (ar->f == NULL){
		ARCoderError("Fail to open file");
	}

	fseek(ar->f, OffsetBytes, SEEK_SET);
	
	ar->Closed = 0;
	ar->ByteCounter = 0;
	ar->SymbolCounter = ar->Low = ar->Value = ar->BitIndex = ar->ExtraBits = 0;
	ar->High = TopValue;

	for (i=0; i<CodeValueBits; i++){
		if (!ar->BitIndex){
			ARDecoderInputByte(ar);
		}
		ar->Value += ar->Value + (ar->BitBuffer & 1);
		ar->BitBuffer >>=1;
		ar->BitIndex--;
	}
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void ARDecoderCloseFile(ARDecoder *ar)
{
	if (ar->Closed){
		return;
	}

	if (fclose(ar->f)==EOF){
		ARCoderError("Fail to close.");
	}

	ar->Closed = 1;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
int ARDecoderDecodeBit(ARDecoder *ar)
{
	long lm1 = ar->Low - 1;
	long range = ar->High - lm1;
	int bit = (int) (((( ar->Value - lm1) << 1) - 1) / range);
	
	if (bit){
		ar->Low += (range >> 1); 
	}
	else{
		ar->High = lm1 + (range >> 1);
	}

	ARDecoderUpdateInterval(ar);

	return bit;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
int ARDecoderDecodeSymbol(ARDecoder *ar, HistoBi *h)
{
	long lm1 = ar->Low - 1;
	long range = ar->High - lm1;

	int cum = (int)(((ar->Value - lm1) * (h->c0+h->c1) - 1) / range);

	int bit = (cum >= h->c0);
	range =  range * h->c0 / (h->c0+h->c1);

	if (bit){
		ar->Low += range;
	}
	else{
		ar->High = lm1 + range;
	}
	
	HistoBiUpdate(h, bit);
	ARDecoderUpdateInterval(ar);
	
	return bit;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
int ARDecoderDecodeMSymbol(ARDecoder *ar, Histo *h)
{
	long range, target, countLeft, count;
   int s;

   range = ar->High - ar->Low + 1;
   
   target = ((int)(ar->Value-ar->Low+1)*h->TotalFreq-1)/(range);
	
   s = HistoGetSymbol(h, target);
	
   countLeft = HistoGetCumul(h, s-1);
   count = HistoGetCumul(h, s);

	ar->High = ar->Low+(range*count)/h->TotalFreq-1;
	ar->Low = ar->Low+(range*countLeft)/h->TotalFreq;
   	
	HistoUpdate(h, 1, s);

	ARDecoderUpdateInterval(ar);
	
	return s;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
int ARDecoderDecodeBits(ARDecoder *ar, int bits)
{
	int val=0, i;
	
	for (i=bits-1; i>=0; i--){
		val = (val<<1) + ARDecoderDecodeBit(ar);
	}

	return val;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
int ARDecoderBitsInput(ARDecoder *ar)
{
	return (ar->ByteCounter<<3) - ar->BitIndex + 8;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
ARDecoder* ARDecoderAlloc(void)
{
	ARDecoder *ar;

	if ((ar=(ARDecoder *)malloc(sizeof(ARDecoder)))==NULL){
		return NULL;
	}
	ar->Closed = 1;
	return ar;
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void ARDecoderDealloc(ARDecoder *ar)
{
	if (!ar->Closed){
		ARCoderWarning("File not closed.");
		ARDecoderCloseFile(ar);
	}
	free(ar);
}


/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void ARCoderWarning(char *fmt, ...)
{
	va_list argptr;
	
	va_start( argptr, fmt );
	printf( "ARCoderWarning: " );
	vprintf( fmt, argptr );
	va_end( argptr );
	exit( -1 );
}

/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
void ARCoderError(char *fmt, ...)
{
	va_list argptr;
	
	va_start( argptr, fmt );
	printf( "ARCoderError: " );
	vprintf( fmt, argptr );
	va_end( argptr );
	exit( -1 );
}
/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品嫩模私拍在线| 国产精品久久久久久一区二区三区 | 欧美日韩精品欧美日韩精品一综合| 麻豆成人av在线| 日本不卡的三区四区五区| 午夜欧美在线一二页| 亚洲国产精品一区二区www在线 | 国产日韩欧美精品在线| 久久久精品免费观看| 久久女同互慰一区二区三区| 久久奇米777| 国产偷国产偷精品高清尤物| 国产亚洲欧美在线| 久久久精品综合| 国产午夜精品一区二区三区嫩草 | 另类成人小视频在线| 99精品视频在线观看免费| 成人夜色视频网站在线观看| 成人激情综合网站| 色婷婷精品久久二区二区蜜臂av| 色一情一伦一子一伦一区| 欧美亚洲自拍偷拍| 欧美一区二区三区免费大片| 亚洲精品在线观看视频| 国产午夜精品美女毛片视频| 最新国产の精品合集bt伙计| 亚洲主播在线播放| 麻豆一区二区99久久久久| 国产a视频精品免费观看| 99国产精品久久| 欧美精品99久久久**| 精品国产乱码久久久久久久| 久久久久国产免费免费| 亚洲免费大片在线观看| 丝袜亚洲另类丝袜在线| 国产精品18久久久久久久久 | 色狠狠av一区二区三区| 欧美乱妇23p| 国产午夜精品一区二区三区视频| 亚洲美腿欧美偷拍| 毛片av一区二区三区| 91一区二区三区在线观看| 欧美一区二区三区白人| 18成人在线观看| 久久99国产精品久久| 色噜噜偷拍精品综合在线| 欧美不卡123| 亚洲精品老司机| 国产乱码精品一品二品| 欧美午夜精品久久久久久超碰 | 一区二区免费在线| 国产在线不卡视频| 欧美另类一区二区三区| 中文字幕一区不卡| 国产一区二三区| 欧美久久久久免费| 亚洲欧美视频在线观看| 国产尤物一区二区在线| 欧美精品久久99| 亚洲狼人国产精品| 成人黄色在线网站| 精品国产区一区| 日本中文字幕一区二区视频| 日本乱码高清不卡字幕| 亚洲欧洲韩国日本视频| 国产一区二区0| 日韩免费看的电影| 肉丝袜脚交视频一区二区| 色美美综合视频| 国产酒店精品激情| 日韩欧美国产一区在线观看| 亚洲国产欧美在线| 在线一区二区视频| 一区二区三区在线视频播放 | 国产精品久久久久永久免费观看| 精品亚洲成av人在线观看| 91精品国产综合久久久蜜臀粉嫩 | 欧美浪妇xxxx高跟鞋交| 亚洲一区二区三区国产| 色综合色综合色综合 | av一区二区三区在线| 国产精品素人一区二区| 国产成人av一区| 欧美国产一区视频在线观看| 国产成人午夜片在线观看高清观看| 2022国产精品视频| 国产精品自拍网站| 国产精品亲子乱子伦xxxx裸| 高清免费成人av| 自拍偷在线精品自拍偷无码专区| 9色porny自拍视频一区二区| 中文字幕中文字幕中文字幕亚洲无线| 成人app软件下载大全免费| 国产精品女同一区二区三区| 91麻豆高清视频| 亚洲电影激情视频网站| 欧美一区二区私人影院日本| 国产一区二区电影| 中文字幕一区二区日韩精品绯色| 色88888久久久久久影院野外| 亚洲成人精品影院| 精品精品国产高清a毛片牛牛| 国产精品亚洲午夜一区二区三区 | 91在线视频观看| 亚洲五码中文字幕| 日韩欧美黄色影院| 波多野结衣的一区二区三区| 亚洲制服丝袜av| 亚洲图片自拍偷拍| 精品免费国产二区三区| 成人午夜激情片| 亚洲成人激情av| 精品国产免费一区二区三区香蕉| 成人免费视频一区| 亚洲国产aⅴ天堂久久| 久久综合网色—综合色88| eeuss国产一区二区三区| 亚洲成a人v欧美综合天堂| 26uuu精品一区二区三区四区在线| 成人动漫视频在线| 日韩国产欧美视频| 国产精品理论在线观看| 91精品国产综合久久精品| 成人黄色777网| 天天综合色天天| 欧美激情艳妇裸体舞| 欧美伦理电影网| 91在线一区二区| 国产主播一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 久久九九国产精品| 欧美一区午夜精品| 国产日韩欧美精品电影三级在线| 欧美亚日韩国产aⅴ精品中极品| 狠狠色狠狠色综合| 日韩主播视频在线| 亚洲精品国产无天堂网2021| 精品国产不卡一区二区三区| 欧美色图在线观看| a4yy欧美一区二区三区| 国产美女一区二区| 奇米影视一区二区三区| 亚洲福利一区二区三区| 亚洲欧美一区二区三区国产精品 | 一区精品在线播放| 国产清纯白嫩初高生在线观看91| 7777精品伊人久久久大香线蕉经典版下载| 成人国产在线观看| 成人性生交大片免费看中文网站| 激情文学综合网| 狂野欧美性猛交blacked| 成人美女在线观看| 国产在线精品一区二区三区不卡| 日韩激情视频网站| 日韩精彩视频在线观看| 午夜精品视频在线观看| 亚洲国产精品一区二区久久恐怖片| 亚洲精品视频在线观看网站| 亚洲欧洲成人精品av97| 亚洲欧洲日韩在线| 亚洲欧美日韩在线不卡| 中文字幕中文字幕中文字幕亚洲无线| 亚洲国产精品二十页| 中文字幕精品在线不卡| 国产精品亲子乱子伦xxxx裸| 国产精品美女久久久久aⅴ| 国产人妖乱国产精品人妖| 欧美激情中文不卡| 国产精品久久久久影院老司| 18成人在线观看| 亚洲国产va精品久久久不卡综合| 亚洲成人av福利| 久久成人免费网站| 国产精品综合视频| 99久久精品国产一区二区三区| aaa欧美色吧激情视频| 色综合久久久久综合99| 欧美日韩www| 日韩女优电影在线观看| 国产欧美日韩中文久久| 日韩美女视频一区| 亚瑟在线精品视频| 紧缚捆绑精品一区二区| 成人网在线播放| 欧美在线小视频| 欧美不卡一区二区三区四区| 国产午夜久久久久| 一区二区三区日韩精品| 日本不卡1234视频| 成人av电影在线播放| 欧美日韩日日夜夜| 久久久亚洲国产美女国产盗摄| 亚洲视频在线观看一区| 日韩精品乱码免费| 成人永久aaa| 欧美亚日韩国产aⅴ精品中极品| 欧美成人一级视频| 亚洲美女淫视频| 韩国精品久久久| 91丝袜美腿高跟国产极品老师|