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

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

?? coder_zf.c

?? 好東西呢
?? C
字號:

/*****

ZeroFlag coder:

codes bytewise but only using binary arithcoders.

	sends "is byte == 0"	(conditioned on activity of N and W)
	then sign				(conditioned on signs of N and W)
	then (abs(byte)-1)	using a unary adaptive binary code

fast AND excellent compression

*****/

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

extern int tune_param;

#define	VAL_CONTEXTS		16
#define	VAL_CONTEXT_MAX		(VAL_CONTEXTS -1)
#define NUM_CONTEXTS		VAL_CONTEXTS
#define TAIL_CONTEXTS		VAL_CONTEXTS

#define SIGN_CONTEXTS		4

#define TOTMAX			4000
#define INC				30

#define P0_INIT			8
#define P1_INIT			0

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

void coderZF_encodeBand(coder *me,int *band,int w,int h,int fullw,int *parent);
void coderZF_decodeBand(coder *me,int *band,int w,int h,int fullw,int *parent);

typedef struct {
	int signs_p0[SIGN_CONTEXTS];
	int signs_pt[SIGN_CONTEXTS];
	int stats_p0[NUM_CONTEXTS];
	int stats_pt[NUM_CONTEXTS];
	int tails_p0[TAIL_CONTEXTS];
	int tails_pt[TAIL_CONTEXTS];
} myInfo;

void coderZF_init(coder *c)
{
myInfo *d;
int i;

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

	c->data = d;

	for(i=0;i<NUM_CONTEXTS;i++) {
		d->stats_p0[i] = P0_INIT+1; d->stats_pt[i] = 2+P0_INIT+P1_INIT;
	}

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

	for(i=0;i<TAIL_CONTEXTS;i++) {
		d->tails_p0[i] = 100;
		d->tails_pt[i] = 2000;
	}

}

void coderZF_free(coder *c)
{
	if ( c->data ) {
		myInfo *d;
		d = c->data;
		free(d);
		c->data = NULL;
	}
}

coder coderZF = {
		"ZeroFlag",
		coderZF_init,
		coderZF_free,
		coderZF_encodeBand,
		coderZF_decodeBand
	};

static int sign_context;	/** cheesy way to return two values **/

static int mcontext(int *dp,int x,int y,int fullw)
{
	if ( y == 0 ) {
		if ( x > 0 ) {
			int W;

			W = dp[-1];

			if ( isneg(W) ) { sign_context = 2; W = - W; }
			else sign_context =0;

			return min(VAL_CONTEXT_MAX, (W>>1));
		} else {
			 sign_context = 0 ;
			return 0;
		}
	} else if ( x == 0 ) {
		int N;

		N = dp[-fullw];

		if ( isneg(N) ) { sign_context = 1; N = - N; }
		else sign_context = 0;

		return min(VAL_CONTEXT_MAX, (N>>1));
	} else {
		int N,W;

		N = dp[-fullw];
		W = dp[-1];

		if ( isneg(N) ) { sign_context = 1; N = - N; }
		else sign_context = 0;
		if ( isneg(W) ) { sign_context += 2; W = - W; }

		return min(VAL_CONTEXT_MAX, ((N + W)>>2));
	}
}

void coderZF_encodeBand(coder *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;
int *tails_p0,*tails_pt;
int *stats_p0,*stats_pt;

	ari = me->arith;
	stats_p0 = ((myInfo *)me->data)->stats_p0;
	stats_pt = ((myInfo *)me->data)->stats_pt;
	signs_p0 = ((myInfo *)me->data)->signs_p0;
	signs_pt = ((myInfo *)me->data)->signs_pt;
	tails_p0 = ((myInfo *)me->data)->tails_p0;
	tails_pt = ((myInfo *)me->data)->tails_pt;

	dp = band;
	for(y=0;y<height;y++) {
		if ( coder_timetostop(me) ) { coder_didstop(me,y); return; }
		for(x=0;x<width;x++) {

			context = mcontext(dp+x,x,y,fullw);

			if ( (V=dp[x]) == 0 ) {
				bitEnc(0,ari,stats_p0[context],stats_pt[context]);
			} else {
				bitEnc(1,ari,stats_p0[context],stats_pt[context]);

				switch(V) {
					case 4:
						bitEnc(0,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;
					case 3:
						bitEnc(0,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;
					case 2:
						bitEnc(0,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;
					case 1:
						bitEnc(0,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;
					case 0:
						break;
					case -1:
						bitEnc(1,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;
					case -2:
						bitEnc(1,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;
					case -3:
						bitEnc(1,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;
					case -4:
						bitEnc(1,ari,signs_p0[sign_context],signs_pt[sign_context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);
						break;

					default:
						if ( V > 0 ) {
							bitEnc(0,ari,signs_p0[sign_context],signs_pt[sign_context]);
							V--;
						} else {
							bitEnc(1,ari,signs_p0[sign_context],signs_pt[sign_context]);
							V = - V -1;
						}

						/* send remainder */
						while(V--) bitEnc(1,ari,tails_p0[context],tails_pt[context]);
						bitEnc(0,ari,tails_p0[context],tails_pt[context]);

						break;
				}

			}
		}
		dp += fullw;
	}
}

void coderZF_decodeBand(coder *me,int *band,int width,int height,int fullw,int *parent)
{
int x,y,bit,sign,context,V;
int *dp;
arithInfo *ari;
int *signs_p0,*signs_pt;
int *stats_p0,*stats_pt;
int *tails_p0,*tails_pt;

	ari = me->arith;
	stats_p0 = ((myInfo *)me->data)->stats_p0;
	stats_pt = ((myInfo *)me->data)->stats_pt;
	signs_p0 = ((myInfo *)me->data)->signs_p0;
	signs_pt = ((myInfo *)me->data)->signs_pt;
	tails_p0 = ((myInfo *)me->data)->tails_p0;
	tails_pt = ((myInfo *)me->data)->tails_pt;

	dp = band;
	for(y=0;y<height;y++) {
		if ( coder_timetostopd(me,y) ) return;
		for(x=0;x<width;x++) {

			context = mcontext(dp+x,x,y,fullw);

			bitDec(bit,ari,stats_p0[context],stats_pt[context]);

			if ( bit == 0 ) {
				dp[x] = 0;
			} else {
				bitDec(sign,ari,signs_p0[sign_context],signs_pt[sign_context]);

				bitDec(bit,ari,tails_p0[context],tails_pt[context]);
				if ( !bit ) {
					dp[x] = (1 - sign - sign);
				} else {
					bitDec(bit,ari,tails_p0[context],tails_pt[context]);
					if ( !bit ) {
						if ( sign ) dp[x] = -2; else dp[x] = 2;
					} else {
						bitDec(bit,ari,tails_p0[context],tails_pt[context]);
						if ( !bit ) {
							if ( sign ) dp[x] = -3; else dp[x] = 3;
						} else {
							bitDec(bit,ari,tails_p0[context],tails_pt[context]);
							if ( !bit ) {
								if ( sign ) dp[x] = -4; else dp[x] = 4;
							} else {
								V = 4;
								do {
									V++;
									bitDec(bit,ari,tails_p0[context],tails_pt[context]);
								} while( bit == 1 );

								if ( sign ) dp[x] = -V; else dp[x] = V;
							}
						}
					}
				}
			}
		}
		dp += fullw;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产蜜臀av在线一区二区三区| 3d成人动漫网站| 国产不卡视频一区二区三区| 亚洲激情图片一区| 中文字幕国产精品一区二区| 国产日韩v精品一区二区| 国产视频不卡一区| 亚洲国产精品国自产拍av| 欧美激情在线免费观看| 国产精品久久久久久亚洲毛片| 欧美激情一区二区三区全黄| 亚洲欧洲三级电影| 亚洲卡通动漫在线| 午夜a成v人精品| 蜜桃久久av一区| 国产成a人亚洲| 91国偷自产一区二区使用方法| 在线观看av不卡| 欧美精品一卡二卡| 精品国产露脸精彩对白| 日本一区二区三级电影在线观看| 中文字幕精品一区| 一区二区三区在线视频播放 | 另类小说色综合网站| 奇米影视7777精品一区二区| 国产毛片一区二区| 91香蕉视频黄| 制服视频三区第一页精品| 久久久三级国产网站| 国产精品久久久久久久久果冻传媒| 亚洲成人午夜影院| 老司机精品视频在线| 99精品久久久久久| 制服丝袜成人动漫| 最新国产成人在线观看| 蜜桃av一区二区| 94-欧美-setu| 久久久噜噜噜久噜久久综合| 亚洲一卡二卡三卡四卡无卡久久| 毛片av一区二区三区| 91麻豆精东视频| 国产精品理伦片| 日本成人在线不卡视频| 成人综合在线观看| 日韩亚洲电影在线| 亚洲视频图片小说| 九九**精品视频免费播放| 一本色道久久加勒比精品| 26uuu国产电影一区二区| 亚洲国产中文字幕在线视频综合| 精品系列免费在线观看| 欧美麻豆精品久久久久久| 国产精品另类一区| 青青草国产成人99久久| 91久久精品一区二区三| 国产欧美一区二区三区在线老狼| 午夜欧美2019年伦理| av色综合久久天堂av综合| 久久人人爽爽爽人久久久| 日本中文在线一区| 56国语精品自产拍在线观看| 亚洲一区二区三区视频在线播放 | 中文字幕一区免费在线观看| 六月婷婷色综合| 欧美精品乱码久久久久久按摩| 亚洲欧美日韩在线播放| 国产精品影视网| 精品国产凹凸成av人导航| 日本女优在线视频一区二区| 欧美性受极品xxxx喷水| 亚洲精品亚洲人成人网| 欧美一区二区三区视频在线观看| 亚洲视频香蕉人妖| 91黄色在线观看| 亚洲一区二区三区激情| 在线一区二区三区| 亚洲激情图片小说视频| 欧美日韩一区高清| 日韩电影免费一区| 欧美xxx久久| 国产精品538一区二区在线| 久久久久久久精| 国产成人亚洲综合a∨婷婷图片| 久久精品水蜜桃av综合天堂| 成人深夜福利app| 亚洲天堂免费在线观看视频| 色婷婷综合久久久| 亚洲成人1区2区| 日韩欧美国产一区二区在线播放| 男人的天堂久久精品| 久久婷婷一区二区三区| 成人永久免费视频| 亚洲综合免费观看高清完整版在线| 色综合夜色一区| 日日夜夜一区二区| 久久青草国产手机看片福利盒子 | 国产一区二区三区在线看麻豆| 精品福利在线导航| av午夜精品一区二区三区| 亚洲综合网站在线观看| 欧美一区二区播放| 从欧美一区二区三区| 亚洲在线观看免费视频| 日韩久久精品一区| 91网页版在线| 麻豆精品一二三| 亚洲免费观看高清完整版在线观看| 欧美狂野另类xxxxoooo| 国产一区二区三区电影在线观看| 亚洲欧美日韩小说| 日韩欧美一二三区| 一本久道中文字幕精品亚洲嫩| 日韩精品视频网| **网站欧美大片在线观看| 欧美日韩国产成人在线91| 国产成人免费在线视频| 亚洲午夜影视影院在线观看| 久久影院午夜片一区| 欧美专区日韩专区| 国产不卡一区视频| 免播放器亚洲一区| 亚洲黄色片在线观看| 久久天天做天天爱综合色| 欧美三级日本三级少妇99| 国产suv精品一区二区883| 欧美aⅴ一区二区三区视频| 一区二区三区国产豹纹内裤在线| 久久久久久99精品| 欧美一区二区三区四区五区| 色婷婷激情久久| 国产91丝袜在线播放九色| 久久成人av少妇免费| 亚洲小说春色综合另类电影| 欧美激情在线看| 国产日本欧洲亚洲| 日韩一区二区在线观看| 欧美日韩欧美一区二区| 91丨九色丨蝌蚪富婆spa| 国产激情视频一区二区三区欧美 | 最新久久zyz资源站| 久久久噜噜噜久久中文字幕色伊伊| 欧美另类一区二区三区| 91美女福利视频| 99re视频精品| 91丝袜美腿高跟国产极品老师| 精品一区二区免费看| 精品影视av免费| 六月丁香婷婷久久| 美腿丝袜亚洲综合| 精品中文av资源站在线观看| 蜜桃视频一区二区三区在线观看| 日韩精品亚洲一区二区三区免费| 天天操天天干天天综合网| 中文字幕制服丝袜一区二区三区 | 精彩视频一区二区| 国模一区二区三区白浆| 激情五月激情综合网| 国产酒店精品激情| 不卡一区二区中文字幕| 成人免费福利片| 色伊人久久综合中文字幕| 日本精品视频一区二区三区| 欧美综合一区二区| 欧美在线一区二区| 91精品国模一区二区三区| 色88888久久久久久影院按摩| 欧洲精品中文字幕| 91麻豆精品国产91久久久久久| 日韩一区二区精品葵司在线| 欧美变态tickling挠脚心| 国产调教视频一区| 国产精品国产成人国产三级| 亚洲欧美中日韩| 丝袜美腿亚洲色图| 韩日欧美一区二区三区| 成人三级在线视频| 欧洲另类一二三四区| 日韩欧美国产三级电影视频| 久久一夜天堂av一区二区三区| 亚洲国产精品国自产拍av| 亚洲在线观看免费视频| 久久国产夜色精品鲁鲁99| 国产+成+人+亚洲欧洲自线| 欧美亚洲国产一卡| 精品久久久久久久久久久院品网 | 亚洲黄色录像片| 日韩二区在线观看| 成人av网站免费观看| 欧美视频日韩视频在线观看| 精品久久久久久久一区二区蜜臀| 国产精品久久毛片av大全日韩| 亚洲国产裸拍裸体视频在线观看乱了| 麻豆成人av在线| 色婷婷国产精品| 国产亚洲精品免费| 午夜a成v人精品| 97久久久精品综合88久久| 精品日产卡一卡二卡麻豆| 亚洲一区二区三区在线播放| 国产精品资源站在线|