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

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

?? coder_bp_sorted.c

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


/*****

same as the plain old EZ coder_bp.c but we send the quartets in order
of their parents' magnitude.

sorting usually HURTS compression !?

I thought it would help & mean that TOTMAX could be lower, and the
parent could be taken out of the context.

sorting *does* help some when we stop early, about 0.1 PSNR or 0.05 RMSE
	but even this isn't always the case (!)

happily the qsort() is blazing fast and hardly hurts time significantly

*****/

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

extern int tune_param;

#define ORDER1_CONTEXTS		10
#define ORDER1_ALPHABET		16	//4 bits

#define ORDER1_TOTMAX		14000
#define ORDER1_INC			30

#include "coder.h"

void coderBPsorted_encodeBandBP(coder *me,int *band,int w,int h,int fullw,int *parent,int);
void coderBPsorted_decodeBandBP(coder *me,int *band,int w,int h,int fullw,int *parent,int);

typedef struct {
	scontext ** o1;
} myInfo;

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

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

	c->data = d;

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

	for(i=0;i<ORDER1_CONTEXTS;i++) {
		if ( (d->o1[i] = scontextCreate(c->arith,ORDER1_ALPHABET,0,
				ORDER1_TOTMAX,ORDER1_INC,true)) == NULL )
			errexit("context creation failed!");
	}
}

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

coder coderBPsorted = {
		"BP sorted",
		coderBPsorted_init,
		coderBPsorted_free,
		NULL,NULL,
		coderBPsorted_encodeBandBP,
		coderBPsorted_decodeBandBP
	};

typedef struct {
	int parent;
	int *blockptr;
} sortType;

int sortTypeCmp(const void * s1,const void *s2)
{
int ret = (((sortType *)s2)->parent - ((sortType *)s1)->parent );
	if	( ret == 0 ) {
		ret = (int)(((sortType *)s2)->blockptr - ((sortType *)s1)->blockptr );
	}
return ret;
}

void coderBPsorted_encodeBandBP(coder *me,int *band,int width,int height,int fullw,int *parent,int bitmask)
{
int x,y; //,val,cntx;
int *dp,*pp,*dpn;
int context,block,A,B,C,D,nparents;
scontext **o1 = ((myInfo *)me->data)->o1;
arithInfo *ari = me->arith;
int donemask,nextmask;
sortType *sortBlock,*sortPtr;

	for(x= bitmask,nextmask=0; x<CODE_MAX_VAL ;x+=x) nextmask += x;
	donemask = nextmask - bitmask;

	// load in the sortBlock

	nparents = (height*width)>>2;

	if ( (sortBlock = newarray(sortType,nparents)) == NULL )
		{ coder_didstop(me,0); return; }

	sortPtr = sortBlock;
	for(y=0;y<height;y+=2) {
		dp = band + y*fullw;
		pp = parent + (y>>1)*fullw;
		for(x=0;x<width;x+=2) {	/** x & y are the parent's location *2 **/
			sortPtr->parent = abs(*pp) & nextmask;
			sortPtr->blockptr = dp;
			sortPtr++; pp++; dp += 2;
		}
	}

	qsort((void *)sortBlock,nparents,sizeof(sortType),sortTypeCmp);

	sortPtr = sortBlock;
	for(x=0;x<nparents;x++) {
		if ( coder_timetostop(me) ) { coder_didstop(me,x); return; }
		dp = sortPtr->blockptr;		dpn = dp + fullw;

		A = abs(dp[0]);		B = abs(dp[1]);
		C = abs(dpn[0]);	D = abs(dpn[1]);

		context = ((A & donemask)?1:0) + ((B & donemask)?1:0) + ((C & donemask)?1:0) + ((D & donemask)?1:0);
		if ( sortPtr->parent ) context += 5;

		block = 0; // 4 bits
		if ( A & bitmask ) block += 1;
		if ( B & bitmask ) block += 2;
		if ( C & bitmask ) block += 4;
		if ( D & bitmask ) block += 8;

		scontextEncode(o1[context],block);

		/** send signs when we see the first 'on' bit **/

		if ( (A & nextmask) == bitmask ) arithBit(ari, signbit(dp[0]) );
		if ( (B & nextmask) == bitmask ) arithBit(ari, signbit(dp[1]) );
		if ( (C & nextmask) == bitmask ) arithBit(ari, signbit(dpn[0]));
		if ( (D & nextmask) == bitmask ) arithBit(ari, signbit(dpn[1]));

		sortPtr++;	
	}

	free(sortBlock);
}

void coderBPsorted_decodeBandBP(coder *me,int *band,int width,int height,int fullw,int *parent,int bitmask)
{
int x,y; //,val,cntx,sign;
int *dp,*pp,*dpn;
//int top_val,top_bitpn;
int context,block,A,B,C,D;
scontext **o1 = ((myInfo *)me->data)->o1;
arithInfo *ari = me->arith;
int donemask,nextmask,nparents;
sortType *sortBlock,*sortPtr;

	for(x= bitmask,nextmask=0; x<CODE_MAX_VAL ;x+=x) nextmask += x;
	donemask = nextmask - bitmask;

	// load in the sortBlock

	nparents = (height*width)>>2;

	if ( (sortBlock = newarray(sortType,nparents)) == NULL )
		return;

	sortPtr = sortBlock;
	for(y=0;y<height;y+=2) {
		dp = band + y*fullw;
		pp = parent + (y>>1)*fullw;
		for(x=0;x<width;x+=2) {	/** x & y are the parent's location *2 **/
			sortPtr->parent = abs(*pp) & nextmask;
			sortPtr->blockptr = dp;
			sortPtr++; pp++; dp += 2;
		}
	}

	qsort((void *)sortBlock,nparents,sizeof(sortType),sortTypeCmp);

	// read it out

	sortPtr = sortBlock;
	for(x=0;x<nparents;x++) {
		if ( coder_timetostopd(me,x) ) return;
		dp = sortPtr->blockptr;		dpn = dp + fullw;

		A = abs(dp[0]);		B = abs(dp[1]);
		C = abs(dpn[0]);	D = abs(dpn[1]);
		context = ((A & donemask)?1:0) + ((B & donemask)?1:0) + ((C & donemask)?1:0) + ((D & donemask)?1:0);
		if ( sortPtr->parent ) context += 5;

		block = scontextDecode(o1[context]);

		if ( block & 1 ) { 
			if ( !A ) dp[0] = arithGetBit(ari)? -bitmask: bitmask;
			else if ( isneg(dp[0]) ) dp[0] -= bitmask; else dp[0] += bitmask;
		}
		if ( block & 2 ) { 
			if ( !B ) dp[1] = arithGetBit(ari)? -bitmask: bitmask;
			else if ( isneg(dp[1]) ) dp[1] -= bitmask; else dp[1] += bitmask;
		}
		if ( block & 4 ) { 
			if ( !C ) dpn[0] = arithGetBit(ari)? -bitmask: bitmask;
			else if ( isneg(dpn[0]) ) dpn[0] -= bitmask; else dpn[0] += bitmask;
		}
		if ( block & 8 ) { 
			if ( !D ) dpn[1] = arithGetBit(ari)? -bitmask: bitmask;
			else if ( isneg(dpn[1]) ) dpn[1] -= bitmask; else dpn[1] += bitmask;
		}

		sortPtr++;
	}

	free(sortBlock);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清视频在线观看| 亚洲成人三级小说| 一区二区三区四区在线免费观看| 日韩高清不卡一区二区三区| 国产99久久久久| 91精品国产麻豆国产自产在线 | 国产亚洲精品久| 日韩高清欧美激情| 欧美视频在线观看一区| 中文字幕一区二区三区不卡| 久久精工是国产品牌吗| 91久久精品一区二区二区| 久久免费看少妇高潮| 日韩电影在线观看一区| 色噜噜狠狠色综合中国| 国产精品第五页| 国产69精品久久久久毛片| 日韩精品一区二区三区视频播放 | 精品一区二区三区影院在线午夜| 欧美色老头old∨ideo| 日韩理论电影院| 99re66热这里只有精品3直播 | 欧美另类变人与禽xxxxx| 日韩一区有码在线| 成人手机电影网| 中国av一区二区三区| 国内欧美视频一区二区| 精品国产亚洲在线| 久久99精品国产.久久久久久| 884aa四虎影成人精品一区| 亚洲午夜精品一区二区三区他趣| 一本一道久久a久久精品综合蜜臀| 国产精品色在线| 97精品久久久午夜一区二区三区| 国产精品久久午夜| 成人国产视频在线观看| 国产精品色一区二区三区| fc2成人免费人成在线观看播放| 国产精品麻豆网站| 99re这里只有精品视频首页| 亚洲视频一区在线观看| 在线观看免费亚洲| 首页国产欧美日韩丝袜| 91精品国产综合久久精品app| 爽好多水快深点欧美视频| 91精品啪在线观看国产60岁| 秋霞电影网一区二区| 精品国产三级a在线观看| 激情五月婷婷综合网| 久久在线观看免费| 成人深夜视频在线观看| 一区二区三区在线观看视频 | 亚洲国产中文字幕在线视频综合| 精品视频在线免费| 麻豆精品国产传媒mv男同 | 亚洲成人资源网| 欧美成人乱码一区二区三区| 国产精品亚洲专一区二区三区| 中文在线免费一区三区高中清不卡| 不卡视频一二三| 午夜国产精品一区| 精品精品欲导航| 91网页版在线| 麻豆久久久久久久| 日韩一区有码在线| 日韩精品一区二区三区视频播放 | 亚洲激情校园春色| 7777精品伊人久久久大香线蕉完整版 | 国产成人午夜片在线观看高清观看| 国产精品无圣光一区二区| 一本色道综合亚洲| 日韩av不卡一区二区| 国产精品久久久久久久久果冻传媒| 色噜噜狠狠色综合中国| 狠狠色丁香婷综合久久| 亚洲色图欧美偷拍| 日韩一区二区麻豆国产| 97aⅴ精品视频一二三区| 另类欧美日韩国产在线| 亚洲欧美精品午睡沙发| 欧美精品一区二区三区一线天视频 | 亚洲精品日韩综合观看成人91| 3atv一区二区三区| 99国产欧美另类久久久精品 | 久久久美女毛片| 欧美精品一二三| 成人黄色电影在线 | av一区二区三区在线| 精品一区二区三区欧美| 亚洲国产欧美日韩另类综合 | 国产精品夜夜嗨| 日本一不卡视频| 一区二区三区欧美亚洲| 欧美国产精品久久| 精品va天堂亚洲国产| 91.麻豆视频| 欧美视频一区在线观看| 不卡av电影在线播放| 国产一区二区在线免费观看| 午夜av区久久| 亚洲一区二区三区四区五区黄| 国产精品视频免费看| 久久午夜羞羞影院免费观看| 91精品国产欧美一区二区18 | 国产精品456| 国精产品一区一区三区mba桃花 | 亚洲主播在线播放| 伊人色综合久久天天人手人婷| 国产精品人成在线观看免费| 国产亚洲人成网站| 国产欧美综合在线观看第十页| 欧美白人最猛性xxxxx69交| 欧美一级日韩免费不卡| 欧美精品黑人性xxxx| 欧美日韩极品在线观看一区| 欧美日韩一卡二卡三卡| 欧美日韩精品一区二区三区四区| 色94色欧美sute亚洲13| 欧美在线你懂的| 欧美伦理电影网| 日韩亚洲欧美一区二区三区| 欧美一区二区三区播放老司机| 欧美日韩精品一区二区三区四区| 欧美精品1区2区| 日韩手机在线导航| 精品va天堂亚洲国产| 国产日产欧美一区| 综合久久综合久久| 亚洲sss视频在线视频| 日本aⅴ亚洲精品中文乱码| 另类人妖一区二区av| 国产成人综合自拍| 色婷婷综合久久| 欧美一区二区三区思思人| 精品少妇一区二区三区免费观看| 国产亚洲精品久| 一区二区欧美国产| 美国av一区二区| 99久久久精品| 欧美日韩电影一区| 精品国产电影一区二区| 欧美极品aⅴ影院| 亚洲一区二区三区视频在线播放| 日韩和欧美一区二区三区| 极品少妇xxxx精品少妇| 成人毛片老司机大片| 欧美挠脚心视频网站| 久久九九影视网| 一区二区三区精密机械公司| 亚洲大片在线观看| 丰满放荡岳乱妇91ww| 欧美性受xxxx黑人xyx性爽| 精品成人私密视频| 亚洲国产精品久久艾草纯爱| 国产麻豆欧美日韩一区| 欧洲日韩一区二区三区| 久久综合视频网| 亚洲一区二区四区蜜桃| 国产一区二区精品久久| 在线视频一区二区免费| 久久久久久99久久久精品网站| 亚洲视频 欧洲视频| 久久99深爱久久99精品| 欧美在线免费观看亚洲| 国产日产欧美一区二区视频| 日韩专区欧美专区| 色偷偷成人一区二区三区91| 精品欧美一区二区三区精品久久| 亚洲自拍都市欧美小说| 国产美女一区二区三区| 欧美欧美欧美欧美| 亚洲免费在线视频| 成人精品gif动图一区| 欧美va天堂va视频va在线| 亚洲成av人片在www色猫咪| 成人精品视频网站| 久久综合九色综合97_久久久| 午夜电影一区二区三区| 在线观看中文字幕不卡| 国产精品国产三级国产aⅴ入口| 久久精品国产99国产| 宅男在线国产精品| 亚洲电影欧美电影有声小说| 成人18视频在线播放| 久久综合一区二区| 激情图片小说一区| 欧美成人在线直播| 蜜臀av性久久久久蜜臀av麻豆| 欧美图区在线视频| 亚洲va中文字幕| 欧美三级在线视频| 亚洲一区二区三区在线播放| 色综合久久天天| 亚洲视频一二三区| 99re热视频这里只精品| 中文字幕佐山爱一区二区免费| av在线一区二区| 一区二区三区在线不卡| 欧美在线观看禁18| 亚州成人在线电影|