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

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

?? lossless_e.c

?? 實現圖像的jpeg無損壓縮
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* SPMG/JPEG-LS IMPLEMENTATION V.2.1   =====================================   These programs are Copyright (c) University of British Columbia. All rights reserved.   They may be freely redistributed in their entirety provided that this copyright   notice is not removed. THEY MAY NOT BE SOLD FOR PROFIT OR INCORPORATED IN   COMMERCIAL PROGRAMS WITHOUT THE WRITTEN PERMISSION OF THE COPYRIGHT HOLDER.   Each program is provided as is, without any express or implied warranty,   without even the warranty of fitness for a particular purpose.   =========================================================   THIS SOFTWARE IS BASED ON HP's implementation of jpeg-ls:   =========================================================   LOCO-I/JPEG-LS IMPLEMENTATION V.0.90   -------------------------------------------------------------------------------   (c) COPYRIGHT HEWLETT-PACKARD COMPANY, 1995-1999.        HEWLETT-PACKARD COMPANY ("HP") DOES NOT WARRANT THE ACCURACY OR   COMPLETENESS OF THE INFORMATION GIVEN HERE.  ANY USE MADE OF, OR   RELIANCE ON, SUCH INFORMATION IS ENTIRELY AT USER'S OWN RISK.        BY DOWNLOADING THE LOCO-I/JPEG-LS COMPRESSORS/DECOMPRESSORS   ("THE SOFTWARE") YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS   OF THIS LICENSING AGREEMENT.        YOU MAY DOWNLOAD AND USE THE SOFTWARE FOR NON-COMMERCIAL PURPOSES   FREE OF CHARGE OR FURTHER OBLIGATION.  YOU MAY NOT, DIRECTLY OR   INDIRECTLY, DISTRIBUTE THE SOFTWARE FOR A FEE, INCORPORATE THIS   SOFTWARE INTO ANY PRODUCT OFFERED FOR SALE, OR USE THE SOFTWARE   TO PROVIDE A SERVICE FOR WHICH A FEE IS CHARGED.        YOU MAY MAKE COPIES OF THE SOFTWARE AND DISTRIBUTE SUCH COPIES TO   OTHER PERSONS PROVIDED THAT SUCH COPIES ARE ACCOMPANIED BY   HEWLETT-PACKARD'S COPYRIGHT NOTICE AND THIS AGREEMENT AND THAT   SUCH OTHER PERSONS AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT.        THE SOFTWARE IS NOT OF PRODUCT QUALITY AND MAY HAVE ERRORS OR DEFECTS.   THE JPEG-LS STANDARD IS STILL UNDER DEVELOPMENT. THE SOFTWARE IS NOT A   FINAL OR FULL IMPLEMENTATION OF THE STANDARD.  HP GIVES NO EXPRESS OR   IMPLIED WARRANTY OF ANY KIND AND ANY IMPLIED WARRANTIES OF   MERCHANTABILITY AND FITNESS FOR PURPOSE ARE DISCLAIMED.        HP SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL,   OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE.   -------------------------------------------------------------------------------*//* lossless_e.c --- the main pipeline which processes a scanline by doing *                prediction, context computation, context quantization, *                and statistics gathering. * * Initial code by Alex Jakulin,  Aug. 1995 * * Modified and optimized: Gadiel Seroussi, October 1995 * * Modified and added Restart marker and input tables by: * David Cheng-Hsiu Chu, and Ismail R. Ismail march 1999 */#include <stdio.h>#include <math.h>#include "global.h"#include "bitio.h"/*byte getk[65][3000];*//*byte clipPx[510];*/static int eor_limit;/* Do Golomb statistics and ENCODING for LOSS-LESS images */__inline void lossless_regular_mode(int Q, int SIGN, int Px, pixel *xp){	int At, Nt, Bt, absErrval, Errval, MErrval,	    Ix = *xp;	/* current pixel */	int	unary;	int temp;	byte k;	Nt = N[Q];    At = A[Q];			/* Prediction correction (A.4.2), compute prediction error (A.4.3)	   , and error quantization (A.4.4) */	Px = Px + (SIGN) * C[Q];/*Px = clipPx[Px+127];*/	clip(Px,alpha);	Errval = SIGN * (Ix - Px);	/* Modulo reduction of predication error (A.4.5) */	if (Errval < 0)		Errval += alpha;     /* Errval is now in [0.. alpha-1] */		/* Estimate k - Golomb coding variable computation (A.5.1) */	{	    register nst = Nt;		for(k=0; nst < At; nst<<=1, k++);	}/*k=getk[Nt][At];*/	/* Do Rice mapping and compute magnitude of Errval */	Bt = B[Q];	/* Error Mapping (A.5.2) */	temp = ( k==0 && ((Bt<<1) <= -Nt) );	if (Errval >= ceil_half_alpha) {		Errval -= alpha;		absErrval = -Errval;		MErrval = (absErrval<<1) - 1 - temp;	} else {		absErrval = Errval;		MErrval = (Errval<<1) + temp;	}				/* update bias stats (after correction of the difference) (A.6.1) */	B[Q] = (Bt += Errval);	/* update Golomb stats */	A[Q] += absErrval;	/* check for reset */	if (Nt == reset) {	/* reset for Golomb and bias cancelation at the same time */		N[Q] = (Nt >>= 1);		A[Q] >>= 1;		B[Q] = (Bt >>= 1);	}	N[Q] = (++Nt);	/* Do bias estimation for NEXT pixel */	/* Bias cancelation tries to put error in (-1,0] (A.6.2)*/		if  ( Bt <= -Nt ) {	    if (C[Q] > MIN_C)			--C[Q];	    if ( (B[Q] += Nt) <= -Nt ) 			B[Q] = -Nt+1;	} else if ( Bt > 0 ) {	    	    if (C[Q] < MAX_C)			++C[Q];				if ( (B[Q] -= Nt) > 0 )			B[Q] = 0;	}		/* Actually output the code: Mapped Error Encoding (Appendix G) */	unary = MErrval >> k;	if ( unary < limit ) {	    put_zeros(unary);		putbits((1 << k) + (MErrval & ((1 << k) - 1)), k + 1);	}	else {	    put_zeros(limit);	    putbits((1<<qbpp) + MErrval - 1, qbpp+1);	}}/* Do end of run encoding for LOSSLESS images */__inline void lossless_end_of_run(pixel Ra, pixel Rb, pixel Ix, int RItype){	int Errval,		MErrval,		Q,		absErrval,		oldmap,		k,		At,		unary;		register int Nt;	Q = EOR_0 + RItype;	Nt = N[Q];	At = A[Q];	Errval = Ix - Rb;	if (RItype)		At += Nt>>1;	else {		if ( Rb < Ra )			Errval = -Errval;	}	/* Estimate k */	for(k=0; Nt < At; Nt<<=1, k++);						if (Errval < 0)		Errval += alpha;	if( Errval >= ceil_half_alpha )		Errval -= alpha;					oldmap = ( k==0 && Errval && (B[Q]<<1)<Nt );	   	/*  Note: the Boolean variable 'oldmap' is not 		identical to the variable 'map' in the		JPEG-LS draft. We have		oldmap = (Errval<0) ? (1-map) : map;	*/	/* Error mapping for run-interrupted sample (Figure A.22) */				if( Errval < 0) {		MErrval = -(Errval<<1)-1-RItype+oldmap;		B[Q]++; 	}else		MErrval = (Errval<<1)-RItype-oldmap;		absErrval = (MErrval+1-RItype)>>1;	/* Update variables for run-interruped sample (Figure A.23) */	A[Q] += absErrval;	if (N[Q] == reset) {		N[Q] >>= 1;		A[Q] >>= 1;		B[Q] >>= 1;	}	N[Q]++; /* for next pixel */	/* Do the actual Golomb encoding: */	eor_limit = limit - limit_reduce;	unary = MErrval >> k;	if ( unary < eor_limit ) {		put_zeros(unary);		putbits((1 << k) + (MErrval & ((1 << k) - 1)), k + 1);	}	else {		put_zeros(eor_limit);		putbits((1<<qbpp) + MErrval-1, qbpp+1);	}}/* For line and plane interleaved mode in LOSS-LESS mode */void lossless_doscanline( pixel *psl,            /* previous scanline */			  pixel *sl,             /* current scanline */			  int no, int color)     /* number of values in it *//*** watch it! actual pixels in the scan line are numbered 1 to no .     pixels with indices < 1 or > no are dummy "border" pixels  */{	int i;	pixel Ra, Rb, Rc, Rd,   /* context pixels */	      Ix,	            /* current pixel */	      Px; 				/* predicted current pixel */	int SIGN;			    /* sign of current context */	int cont;				/* context */	i = 1;    /* pixel indices in a scan line go from 1 to no */	/**********************************************/	/* Do for all pixels in the row in 8-bit mode */	/**********************************************/	if (bpp16==FALSE) {				Rc = psl[0];		Rb = psl[1];		Ra = sl[0];		/*	For 8-bit Image */		do {			int RUNcnt;			Ix = sl[i];			Rd = psl[i + 1];			/* Context determination */			/* Quantize the gradient */			/* partial context number: if (b-e) is used then its 			   contribution is added after determination of the run state.			   Also, sign flipping, if any, occurs after run			   state determination */			cont =  vLUT[0][Rd - Rb + LUTMAX8] +					vLUT[1][Rb - Rc + LUTMAX8] +					vLUT[2][Rc - Ra + LUTMAX8];			if ( cont == 0 )			{		/*************** RUN STATE ***************************/				RUNcnt = 0;				if (Ix == Ra) {					while ( 1 ) {						++RUNcnt;						if (++i > no) {								/* Run-lenght coding when reach end of line (A.7.1.2) */							process_run(RUNcnt, EOLINE, color);							return;	 /* end of line */						}						Ix = sl[i];						if (Ix != Ra)	/* Run is broken */						{							Rd = psl[i + 1];							Rb = psl[i];							break;  /* out of while loop */						}						/* Run continues */					}				}				/* we only get here if the run is broken by				   a non-matching symbol */				/* Run-lenght coding when end of line not reached (A.7.1.2) */				process_run(RUNcnt,NOEOLINE, color);				/* This is the END_OF_RUN state */				lossless_end_of_run(Ra, Rb, Ix, (Ra==Rb));			}           			else {		/*************** REGULAR CONTEXT *******************/				predict(Rb, Ra, Rc);				/* do symmetric context merging */				cont = classmap[cont];					if (cont<0) {					SIGN=-1;					cont = -cont;				}				else					SIGN=+1;				/* output a rice code */				lossless_regular_mode(cont, SIGN, Px, &Ix);			}			/* context for next pixel: */			sl[i] = Ix;			Ra = Ix;			Rc = Rb;			Rb = Rd;		} while (++i <= no);		}	else	{		/***********************************************/		/* Do for all pixels in the row in 16-bit mode */		/***********************************************/		Rc = ENDIAN16(psl[0]);		Rb = ENDIAN16(psl[1]);		Ra = ENDIAN16(sl[0]);		/*	For 16-bit Image */		do {			int RUNcnt;			Ix = ENDIAN16(sl[i]);			Rd = ENDIAN16(psl[i + 1]);			/* Context determination */			/* Quantize the gradient */			/* partial context number: if (b-e) is used then its 			   contribution is added after determination of the run state.			   Also, sign flipping, if any, occurs after run			   state determination */					{				register int diff;				/* Following segment assumes that T3 <= LUTMAX16 */				/* This condition should have been checked when the					lookup tables were built */				diff = Rd - Rb;				if (diff < 0)					cont = (diff > -LUTMAX16) ? vLUT[0][diff + LUTMAX16] : 7*CREGIONS*CREGIONS;				else 					cont = (diff < LUTMAX16) ? vLUT[0][diff + LUTMAX16] : 8*CREGIONS*CREGIONS;				diff = Rb - Rc;				if (diff < 0)					cont += (diff > -LUTMAX16) ? vLUT[1][diff + LUTMAX16] : 7*CREGIONS;				else 					cont += (diff < LUTMAX16) ? vLUT[1][diff + LUTMAX16] : 8*CREGIONS;				diff = Rc - Ra;				if (diff < 0)					cont += (diff > -LUTMAX16) ? vLUT[2][diff + LUTMAX16] : 7;				else 					cont += (diff < LUTMAX16) ? vLUT[2][diff + LUTMAX16] : 8;			}			if ( cont == 0 ) {      /* Run state? */		/*************** RUN STATE ***************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色在线观看| 欧美卡1卡2卡| 久久久蜜桃精品| 久久精品国产澳门| 91精品国产91久久久久久最新毛片| 一区二区三区四区在线免费观看| 丁香激情综合国产| 91精品国产黑色紧身裤美女| 亚洲国产精品一区二区尤物区| 久久先锋影音av| 亚洲成人免费在线| 色综合色狠狠综合色| 亚洲激情av在线| 欧洲精品在线观看| 亚洲影院在线观看| 欧美日韩免费视频| 日韩在线一二三区| 日韩欧美国产1| 久久精品国产99国产精品| 精品福利在线导航| 国产精品白丝av| 日韩欧美一卡二卡| 粉嫩av一区二区三区在线播放| 国产亚洲一区字幕| 91在线免费视频观看| 亚洲情趣在线观看| 欧美一区二区啪啪| 99精品国产一区二区三区不卡| 五月天中文字幕一区二区| 久久日韩精品一区二区五区| 91社区在线播放| 玖玖九九国产精品| 亚洲欧美一区二区三区国产精品| 欧美成人一区二区三区在线观看| 成人h动漫精品一区二区| 日韩精品免费视频人成| 欧美国产一区视频在线观看| 欧美日韩在线播放一区| 大桥未久av一区二区三区中文| 五月婷婷激情综合| 最好看的中文字幕久久| 久久综合一区二区| 欧美男女性生活在线直播观看| 不卡的看片网站| 男人的j进女人的j一区| 亚洲九九爱视频| 欧美激情一区三区| 日韩丝袜情趣美女图片| 欧美日韩一区二区三区高清| 成人蜜臀av电影| 免费看欧美美女黄的网站| 亚洲尤物在线视频观看| 亚洲欧美一区二区视频| 国产亚洲欧美激情| 精品入口麻豆88视频| 欧美日韩一区二区不卡| 色哟哟一区二区在线观看| 国产99精品在线观看| 精品一区二区免费在线观看| 亚洲高清视频的网址| 日韩美女精品在线| 国产精品久久久久久亚洲伦| 日韩欧美一级在线播放| 5月丁香婷婷综合| 欧美日韩国产综合久久| 欧美视频中文一区二区三区在线观看| caoporn国产精品| 成人国产精品免费观看| 国内一区二区视频| 国产原创一区二区三区| 久久99精品久久久久婷婷| 麻豆精品一区二区| 麻豆国产欧美日韩综合精品二区| 日韩精品电影在线| 日韩国产精品大片| 日韩精品每日更新| 免费观看成人鲁鲁鲁鲁鲁视频| 婷婷夜色潮精品综合在线| 一二三四区精品视频| 亚洲精品免费视频| 亚洲综合免费观看高清完整版在线| 1024国产精品| 怡红院av一区二区三区| 亚洲午夜私人影院| 热久久国产精品| 国产制服丝袜一区| 成人免费毛片片v| 91在线观看高清| 欧美无人高清视频在线观看| 欧美日本一区二区三区| 欧美大片拔萝卜| 国产亚洲精品免费| 国产精品欧美精品| 夜夜精品视频一区二区| 日日摸夜夜添夜夜添精品视频 | 国产高清久久久久| 成人午夜伦理影院| 欧美亚洲国产一区在线观看网站| 欧美三级午夜理伦三级中视频| 欧美一区二区三区视频免费播放| 欧美电影免费提供在线观看| 中文字幕电影一区| 一区二区日韩av| 久久精品国产久精国产| 成人成人成人在线视频| 欧美影视一区二区三区| 欧美成人一区二区三区片免费| 国产精品欧美久久久久一区二区| 一区二区三区精品在线观看| 日韩精品午夜视频| 福利91精品一区二区三区| 在线亚洲一区二区| 精品剧情在线观看| 亚洲日本青草视频在线怡红院| 日日夜夜精品免费视频| 国产69精品久久久久777| 色综合激情五月| 欧美精品一区二区三区在线播放| 最新热久久免费视频| 午夜欧美在线一二页| 国产xxx精品视频大全| 欧美乱妇15p| 中文字幕中文乱码欧美一区二区| 日韩精品欧美精品| 99久久国产综合精品色伊 | 精品久久国产97色综合| 中文字幕一区二区三区乱码在线 | 国产精品一区二区久激情瑜伽| 91猫先生在线| 久久亚洲精华国产精华液 | 韩国精品主播一区二区在线观看| av电影天堂一区二区在线观看| 日韩免费看的电影| 亚洲影视在线播放| 成人免费视频视频| 久久欧美中文字幕| 日韩成人免费在线| 日本久久精品电影| 国产亚洲综合在线| 久久99国产乱子伦精品免费| 91久久精品一区二区| 中文字幕的久久| 韩国成人在线视频| 337p亚洲精品色噜噜噜| 一区二区欧美精品| 91亚洲国产成人精品一区二区三| 久久新电视剧免费观看| 麻豆精品视频在线观看| 欧美精品日韩综合在线| 夜夜嗨av一区二区三区| thepron国产精品| 国产女人18水真多18精品一级做| 久久91精品久久久久久秒播| 欧美日韩大陆一区二区| 亚洲一区二区三区在线播放| 波多野结衣亚洲一区| 久久久久97国产精华液好用吗| 强制捆绑调教一区二区| 91精品国产一区二区三区| 午夜精品福利在线| 欧美精品在线观看一区二区| 一区二区三区在线观看国产| 一本色道久久综合狠狠躁的推荐| 中文字幕亚洲综合久久菠萝蜜| 国产乱人伦偷精品视频免下载| 精品国产三级电影在线观看| 美女精品自拍一二三四| 69堂国产成人免费视频| 秋霞成人午夜伦在线观看| 日韩视频免费观看高清完整版| 日韩精品乱码av一区二区| 日韩一级片在线播放| 久久精品国产77777蜜臀| 日韩欧美国产高清| 国产主播一区二区三区| 国产欧美日韩精品a在线观看| 高清视频一区二区| 日韩毛片一二三区| 欧美午夜精品久久久久久超碰| 天使萌一区二区三区免费观看| 91.com视频| 经典三级视频一区| 国产欧美精品区一区二区三区 | 91成人免费在线视频| 伊人婷婷欧美激情| 91精品国产综合久久香蕉麻豆 | av激情亚洲男人天堂| 亚洲精品视频一区| 欧美人妇做爰xxxⅹ性高电影| 午夜精品久久久久久久| 精品美女在线播放| 成人视屏免费看| 亚洲小说春色综合另类电影| 欧美一二区视频| 成人国产在线观看| 午夜精品久久久久久久| 久久久久久久久久久久电影 | 99久久99久久精品免费观看| 亚洲高清免费视频| 精品99久久久久久|