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

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

?? coder_sm_b.c

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

SM2 : send "significance map" then residual values

SM2 2 :

 code the sigmap as four symbols (0,1,2,other) and send signs raw

 code a quartet (with same parent) smashed together = 8 bits
	(advantage : a bit faster, and gathers implicitly the dependence on neighbors
	 disadvantage : larger alphabet thins statistics)

 neither of these helped; this coder is left in as a lesson

---
(btw using "scontext" for a 256-char alphabet is really inappropriate; we should
correctly use the normal "context" coder with an escape down to an order0)

******/

#include <stdio.h>
#include <stdlib.h>
#include <crblib/inc.h>
#include <crblib/arithc.h>
#include <crblib/scontext.h>
#include <crblib/o0coder.h>
#include <crblib/intmath.h>

extern int tune_param;

/*** some convenient debug routines:
** #define SEND_TAG()	if(0); else { arithEncode(ari,43,44,77); }
** #define GET_TAG()	if(0); else { int got; got = arithGet(ari,77); arithDecode(ari,43,44,77); if ( got != 43 ) errexit("tag failure"); }
********/

#define CNTX_CAP			4
#define SIGMAP_CONTEXTS		(CNTX_CAP+1)
#define SIGMAP_ALPHABET		256		/** 8 bits **/

#define SIGMAP_TOTMAX		15000
#define SIGMAP_INC			10

#define ORDER0_CNTXMAX		8
#define ORDER0_CONTEXTS		(ORDER0_CNTXMAX+1)
#define ORDER0_TOTMAX		500
#define ORDER0_ALPHABET		25
#define ORDER0_ESCAPE		(ORDER0_ALPHABET-1)

#define SIG_CNTX(val)	min(CNTX_CAP,intlog2(val+1))			/** min(CNTX_CAP,val) **/
#define O0_CNTX(val)	min(ORDER0_CNTXMAX, intlog2(val))

#include "coder.h"

void coderSM2_encodeBand(coder *me,int *band,int w,int h,int fullw,int *parent);
void coderSM2_decodeBand(coder *me,int *band,int w,int h,int fullw,int *parent);

typedef struct {
	ozero ** o0;
	scontext ** o1;
} myInfo;

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

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

	c->data = d;

	if ( (d->o0 = newarray(void *,ORDER0_CONTEXTS)) == NULL )
		errexit("Order0_Init failed!");

	for(i=0;i<ORDER0_CONTEXTS;i++)
		if ( (d->o0[i] = ozeroCreateMax(c->arith,ORDER0_ALPHABET,ORDER0_TOTMAX)) == NULL )
			errexit("ozero init failed");

	if ( (d->o1 = newarray(void *,SIGMAP_CONTEXTS)) == NULL )
		errexit("Order1_Init failed!");

	for(i=0;i<SIGMAP_CONTEXTS;i++)
		if ( (d->o1[i] = scontextCreate(c->arith,SIGMAP_ALPHABET,0,
				SIGMAP_TOTMAX,SIGMAP_INC,true)) == NULL )
			errexit("context creation failed!");

}

void coderSM2_free(coder *c)
{
	if ( c->data ) {
		myInfo *d;
		d = c->data;
		if ( d->o0 ) {
			int i;
			for(i=0;i<ORDER0_CONTEXTS;i++)
				if ( d->o0[i] ) ozeroFree(d->o0[i]);
			free(d->o0);
		}
		if ( d->o1 ) {
			int i;
			for(i=0;i<SIGMAP_CONTEXTS;i++) {
				if ( d->o1[i] ) scontextFree(d->o1[i]);
			}
		}
		free(d);
		c->data = NULL;
	}
}

coder coderSM2 = {
		"SigMap 2",
		coderSM2_init,
		coderSM2_free,
		coderSM2_encodeBand,
		coderSM2_decodeBand
	};

static void encode_val(arithInfo *ari,ozero *o0,int val)
{
	if ( isneg(val) ) { arithBit(ari,1); val = -val; }
	else arithBit(ari,0);

	if ( val < 3 ) return;
	val -= 3;

	if ( val < ORDER0_ESCAPE ) ozeroEncode(o0,val);
	else {
		ozeroEncode(o0,ORDER0_ESCAPE);	
		encode_m1(ari,val - ORDER0_ESCAPE);
	}
}

static int decode_val(arithInfo *ari,ozero *o0)
{
int sign,val;
	if ( arithGetBit(ari) ) sign = -1;
	else sign = 1;

	val = ozeroDecode(o0);
	if( val == ORDER0_ESCAPE ) val += decode_m1(ari);

	val += 3;
return val*sign;
}

void coderSM2_encodeBand(coder *me,int *band,int width,int height,int fullw,int *parent)
{
int x,y,A,B,C,D,block;
int *dp,*pp,*dpn;
int par_val,par_sig,cntx;
ozero **o0 = ((myInfo *)me->data)->o0;
scontext **o1 = ((myInfo *)me->data)->o1;
arithInfo *ari = me->arith;

	dp = band;	pp = parent;
	for(y=0;y<height;y+=2) {
		if ( coder_timetostop(me) ) { coder_didstop(me,y); return; }
		dpn = dp + fullw;
		for(x=0;x<width;x+=2) {	/** x & y are the parent's location *2 **/
			par_val = abs(pp[x>>1]); par_sig = SIG_CNTX(par_val); cntx = O0_CNTX(par_val);

			A = dp[x];	B = dp[x+1];
			C = dpn[x];	D = dpn[x+1];

			block = 0;
			switch(abs(A)) { case 0: break; case 1: block += 1; break; case 2: block += 2; break; default: block +=3; break; } 
			block <<= 2;
			switch(abs(B)) { case 0: break; case 1: block += 1; break; case 2: block += 2; break; default: block +=3; break; }
			block <<= 2;
			switch(abs(C)) { case 0: break; case 1: block += 1; break; case 2: block += 2; break; default: block +=3; break; }
			block <<= 2;
			switch(abs(D)) { case 0: break; case 1: block += 1; break; case 2: block += 2; break; default: block +=3; break; }

			scontextEncode(o1[par_sig],block);

			if (D) encode_val(ari,o0[cntx],D);
			if (C) encode_val(ari,o0[cntx],C);
			if (B) encode_val(ari,o0[cntx],B);
			if (A) encode_val(ari,o0[cntx],A);
		}
		pp += fullw;
		dp += fullw + fullw;
	}
}

void coderSM2_decodeBand(coder *me,int *band,int width,int height,int fullw,int *parent)
{
int x,y,block,val;
int *dp,*pp,*dpn;
int par_val,par_sig,cntx;
ozero **o0 = ((myInfo *)me->data)->o0;
scontext **o1 = ((myInfo *)me->data)->o1;
arithInfo *ari = me->arith;

	dp = band;	pp = parent;
	for(y=0;y<height;y+=2) {
		if ( coder_timetostopd(me,y) ) return;
		dpn = dp + fullw;
		for(x=0;x<width;x+=2) {	/** x & y are the parent's location *2 **/
			par_val = abs(pp[x>>1]); par_sig = SIG_CNTX(par_val); cntx = O0_CNTX(par_val);

			block = scontextDecode(o1[par_sig]);

			/** go backwards, D,C,B,A **/

			switch(block&3) {	case 0: val=0; break;
								case 1: if(arithGetBit(ari)) val=-1; else val=1; break;
								case 2: if(arithGetBit(ari)) val=-2; else val=2; break;
								case 3: val = decode_val(ari,o0[cntx]); break; }
			dpn[x+1] = val; block >>= 2;
			switch(block&3) {	case 0: val=0; break;
								case 1: if(arithGetBit(ari)) val=-1; else val=1; break;
								case 2: if(arithGetBit(ari)) val=-2; else val=2; break;
								case 3: val = decode_val(ari,o0[cntx]); break; }
			dpn[x] = val; block >>= 2;
			switch(block&3) {	case 0: val=0; break;
								case 1: if(arithGetBit(ari)) val=-1; else val=1; break;
								case 2: if(arithGetBit(ari)) val=-2; else val=2; break;
								case 3: val = decode_val(ari,o0[cntx]); break; }
			dp[x+1] = val; block >>= 2;
			switch(block&3) {	case 0: val=0; break;
								case 1: if(arithGetBit(ari)) val=-1; else val=1; break;
								case 2: if(arithGetBit(ari)) val=-2; else val=2; break;
								case 3: val = decode_val(ari,o0[cntx]); break; }
			dp[x] = val; block >>= 2;
		}
		pp += fullw;
		dp += fullw + fullw;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品91久久久久久清纯| 国产激情视频一区二区在线观看 | 国产亚洲女人久久久久毛片| a级高清视频欧美日韩| 日韩精品一卡二卡三卡四卡无卡| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲综合一区二区三区| 久久综合999| 4438亚洲最大| 欧美亚洲自拍偷拍| 国产91在线看| 国产在线精品一区二区不卡了 | 久久er精品视频| 亚洲一区在线观看视频| 成人欧美一区二区三区白人 | 色偷偷久久一区二区三区| 精品一区二区三区久久久| 亚洲午夜在线视频| 中文字幕亚洲一区二区va在线| 欧美成人video| 91精品国产全国免费观看| 91久久精品一区二区三区| 国产成人免费网站| 日本丰满少妇一区二区三区| 国产成人精品一区二| 国产一区二区三区高清播放| 免费在线观看不卡| 午夜视频一区二区| 亚洲综合在线第一页| 亚洲欧美偷拍另类a∨色屁股| 国产精品素人视频| 亚洲国产精品成人综合色在线婷婷 | 亚洲成av人片在www色猫咪| 自拍偷自拍亚洲精品播放| 国产精品全国免费观看高清| 久久日韩粉嫩一区二区三区| 精品剧情在线观看| 2020国产精品自拍| 久久亚洲精品国产精品紫薇| 久久日一线二线三线suv| 2欧美一区二区三区在线观看视频| 在线不卡a资源高清| 日韩视频在线一区二区| 日韩你懂的在线观看| 久久亚洲春色中文字幕久久久| 欧美精品一区二区久久婷婷| 精品国产露脸精彩对白 | 欧美极品另类videosde| 国产精品久久久久毛片软件| 国产精品久久久久aaaa| 国产精品白丝在线| 亚洲福利一二三区| 日韩有码一区二区三区| 精品一区二区三区影院在线午夜| 国内精品伊人久久久久av一坑 | 亚洲一级二级在线| 日韩综合在线视频| 国产精品正在播放| 91免费在线视频观看| 欧美午夜精品久久久| 欧美一区二区三区四区视频| 久久久www成人免费无遮挡大片| 国产日韩亚洲欧美综合| 亚洲欧美国产三级| 日本中文在线一区| 国产成人a级片| 色狠狠一区二区三区香蕉| 在线不卡中文字幕| 国产精品欧美一区二区三区| 一区二区三区欧美日韩| 日韩电影在线免费看| 丁香六月久久综合狠狠色| 日本精品一区二区三区四区的功能| 欧美日韩一区高清| 国产伦精一区二区三区| 国产美女主播视频一区| 91色porny蝌蚪| 91精品国产麻豆国产自产在线| 欧美精品一区二区三区在线播放| 日韩美女啊v在线免费观看| 日本视频中文字幕一区二区三区| 国产成人av在线影院| 91精品欧美综合在线观看最新| 久久久久国产精品麻豆| 一区二区免费视频| 国产精品综合视频| 欧美日韩美女一区二区| 国产精品美女视频| 日本不卡免费在线视频| av电影一区二区| 欧美一区二区三区视频免费播放 | 色综合久久中文综合久久97| 日韩精品在线一区| 亚洲自拍偷拍图区| 国产成人在线电影| 日韩一区二区不卡| 亚洲最色的网站| 成人一区二区三区视频在线观看| 欧美高清视频www夜色资源网| 国产区在线观看成人精品| 石原莉奈在线亚洲二区| av中文字幕不卡| 久久久久久久久久美女| 香蕉加勒比综合久久| 91性感美女视频| 国产午夜三级一区二区三| 五月天久久比比资源色| 色94色欧美sute亚洲13| 国产精品毛片大码女人| 韩国精品在线观看| 欧美肥妇毛茸茸| 一区二区三区四区国产精品| 丰满亚洲少妇av| 日韩女优制服丝袜电影| 日本aⅴ亚洲精品中文乱码| 欧美在线三级电影| 亚洲日本在线a| 成人午夜电影小说| 亚洲精品在线电影| 欧美aa在线视频| 欧美精品18+| 亚洲一区二区三区国产| 色乱码一区二区三区88 | 久久精品二区亚洲w码| 欧美日韩国产bt| 午夜电影一区二区三区| 欧美性大战久久久久久久蜜臀| 亚洲精品国产一区二区精华液| 成人一级黄色片| 亚洲国产激情av| 不卡电影一区二区三区| 国产精品久久国产精麻豆99网站 | 国产成人免费xxxxxxxx| 99久久国产综合精品女不卡| 国产精品麻豆视频| 成人激情av网| 亚洲视频 欧洲视频| 日本高清成人免费播放| 一区二区三区免费看视频| 91精品福利视频| 亚洲一区二区三区四区不卡| 欧美性xxxxx极品少妇| 亚洲高清免费在线| 欧美一区二区三区免费| 久久av资源站| 日本一区二区电影| 91在线视频观看| 亚洲午夜久久久久久久久久久| 欧美性生活一区| 日本伊人午夜精品| 精品国产在天天线2019| 丰满白嫩尤物一区二区| 亚洲精品中文在线影院| 欧美日韩国产另类一区| 蜜臀av一区二区在线免费观看| 欧美精品一区二区三区在线| 成人高清av在线| 亚洲午夜精品一区二区三区他趣| 欧美日韩日日夜夜| 久久国产麻豆精品| 中文字幕精品一区二区三区精品| 91影院在线免费观看| 日韩高清中文字幕一区| 国产欧美一区二区三区网站| 99久久99久久久精品齐齐| 亚洲国产美国国产综合一区二区| 欧美一级片在线看| 成人精品电影在线观看| 亚洲无线码一区二区三区| 欧美本精品男人aⅴ天堂| 成人app网站| 日本中文字幕一区二区视频| 国产女人水真多18毛片18精品视频 | 亚洲精品综合在线| 欧美精品日韩一本| 成人网页在线观看| 偷窥国产亚洲免费视频| 欧美精品一区二区三区久久久| 91香蕉视频在线| 美美哒免费高清在线观看视频一区二区 | 精品国产sm最大网站免费看| 国产99精品国产| 五月综合激情婷婷六月色窝| 久久综合狠狠综合| 欧美性生活久久| 国产精品主播直播| 日韩高清欧美激情| 中文字幕一区二区在线观看| 日韩视频一区二区在线观看| 91丨九色丨蝌蚪富婆spa| 久久66热re国产| 亚洲一二三四区| 国产精品网站在线观看| 欧美电视剧在线看免费| 色哦色哦哦色天天综合| 极品少妇一区二区三区精品视频 | 久久精品免费观看| 亚洲人成网站影音先锋播放| 久久你懂得1024| 欧美日韩精品专区|