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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tif_pixarlog.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
 */typedef	struct {	TIFFPredictorState	predict;	z_stream		stream;	uint16			*tbuf; 	uint16			stride;	int			state;	int			user_datafmt;	int			quality;#define PLSTATE_INIT 1	TIFFVSetMethod		vgetparent;	/* super-class method */	TIFFVSetMethod		vsetparent;	/* super-class method */	float *ToLinearF;	uint16 *ToLinear16;	unsigned char *ToLinear8;	uint16  *FromLT2;	uint16  *From14; /* Really for 16-bit data, but we shift down 2 */	uint16  *From8;	} PixarLogState;static intPixarLogMakeTables(PixarLogState *sp){/* *    We make several tables here to convert between various external *    representations (float, 16-bit, and 8-bit) and the internal *    11-bit companded representation.  The 11-bit representation has two *    distinct regions.  A linear bottom end up through .018316 in steps *    of about .000073, and a region of constant ratio up to about 25. *    These floating point numbers are stored in the main table ToLinearF.  *    All other tables are derived from this one.  The tables (and the *    ratios) are continuous at the internal seam. */    int  nlin, lt2size;    int  i, j;    double  b, c, linstep, v;    float *ToLinearF;    uint16 *ToLinear16;    unsigned char *ToLinear8;    uint16  *FromLT2;    uint16  *From14; /* Really for 16-bit data, but we shift down 2 */    uint16  *From8;    c = log(RATIO);	    nlin = (int)(1./c);	/* nlin must be an integer */    c = 1./nlin;    b = exp(-c*ONE);	/* multiplicative scale factor [b*exp(c*ONE) = 1] */    linstep = b*c*exp(1.);    LogK1 = (float)(1./c);	/* if (v >= 2)  token = k1*log(v*k2) */    LogK2 = (float)(1./b);    lt2size = (int)(2./linstep) + 1;    FromLT2 = (uint16 *)_TIFFmalloc(lt2size*sizeof(uint16));    From14 = (uint16 *)_TIFFmalloc(16384*sizeof(uint16));    From8 = (uint16 *)_TIFFmalloc(256*sizeof(uint16));    ToLinearF = (float *)_TIFFmalloc(TSIZEP1 * sizeof(float));    ToLinear16 = (uint16 *)_TIFFmalloc(TSIZEP1 * sizeof(uint16));    ToLinear8 = (unsigned char *)_TIFFmalloc(TSIZEP1 * sizeof(unsigned char));    if (FromLT2 == NULL || From14  == NULL || From8   == NULL ||	 ToLinearF == NULL || ToLinear16 == NULL || ToLinear8 == NULL) {	if (FromLT2) _TIFFfree(FromLT2);	if (From14) _TIFFfree(From14);	if (From8) _TIFFfree(From8);	if (ToLinearF) _TIFFfree(ToLinearF);	if (ToLinear16) _TIFFfree(ToLinear16);	if (ToLinear8) _TIFFfree(ToLinear8);	sp->FromLT2 = NULL;	sp->From14 = NULL;	sp->From8 = NULL;	sp->ToLinearF = NULL;	sp->ToLinear16 = NULL;	sp->ToLinear8 = NULL;	return 0;    }    j = 0;    for (i = 0; i < nlin; i++)  {	v = i * linstep;	ToLinearF[j++] = (float)v;    }    for (i = nlin; i < TSIZE; i++)	ToLinearF[j++] = (float)(b*exp(c*i));    ToLinearF[2048] = ToLinearF[2047];    for (i = 0; i < TSIZEP1; i++)  {	v = ToLinearF[i]*65535.0 + 0.5;	ToLinear16[i] = (v > 65535.0) ? 65535 : (uint16)v;	v = ToLinearF[i]*255.0  + 0.5;	ToLinear8[i]  = (v > 255.0) ? 255 : (unsigned char)v;    }    j = 0;    for (i = 0; i < lt2size; i++)  {	if ((i*linstep)*(i*linstep) > ToLinearF[j]*ToLinearF[j+1])	    j++;	FromLT2[i] = j;    }    /*     * Since we lose info anyway on 16-bit data, we set up a 14-bit     * table and shift 16-bit values down two bits on input.     * saves a little table space.     */    j = 0;    for (i = 0; i < 16384; i++)  {	while ((i/16383.)*(i/16383.) > ToLinearF[j]*ToLinearF[j+1])	    j++;	From14[i] = j;    }    j = 0;    for (i = 0; i < 256; i++)  {	while ((i/255.)*(i/255.) > ToLinearF[j]*ToLinearF[j+1])	    j++;	From8[i] = j;    }    Fltsize = (float)(lt2size/2);    sp->ToLinearF = ToLinearF;    sp->ToLinear16 = ToLinear16;    sp->ToLinear8 = ToLinear8;    sp->FromLT2 = FromLT2;    sp->From14 = From14;    sp->From8 = From8;    return 1;}#define	DecoderState(tif)	((PixarLogState*) (tif)->tif_data)#define	EncoderState(tif)	((PixarLogState*) (tif)->tif_data)static	int PixarLogEncode(TIFF*, tidata_t, tsize_t, tsample_t);static	int PixarLogDecode(TIFF*, tidata_t, tsize_t, tsample_t);#define N(a)   (sizeof(a)/sizeof(a[0]))#define PIXARLOGDATAFMT_UNKNOWN	-1static intPixarLogGuessDataFmt(TIFFDirectory *td){	int guess = PIXARLOGDATAFMT_UNKNOWN;	int format = td->td_sampleformat;	/* If the user didn't tell us his datafmt,	 * take our best guess from the bitspersample.	 */	switch (td->td_bitspersample) {	 case 32:		if (format == SAMPLEFORMAT_IEEEFP)			guess = PIXARLOGDATAFMT_FLOAT;		break;	 case 16:		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)			guess = PIXARLOGDATAFMT_16BIT;		break;	 case 12:		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_INT)			guess = PIXARLOGDATAFMT_12BITPICIO;		break;	 case 11:		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)			guess = PIXARLOGDATAFMT_11BITLOG;		break;	 case 8:		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)			guess = PIXARLOGDATAFMT_8BIT;		break;	}	return guess;}static uint32multiply(size_t m1, size_t m2){	uint32	bytes = m1 * m2;	if (m1 && bytes / m1 != m2)		bytes = 0;	return bytes;}static intPixarLogSetupDecode(TIFF* tif){	TIFFDirectory *td = &tif->tif_dir;	PixarLogState* sp = DecoderState(tif);	tsize_t tbuf_size;	static const char module[] = "PixarLogSetupDecode";	assert(sp != NULL);	/* Make sure no byte swapping happens on the data	 * after decompression. */	tif->tif_postdecode = _TIFFNoPostDecode;	/* for some reason, we can't do this in TIFFInitPixarLog */	sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?	    td->td_samplesperpixel : 1);	tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),				      td->td_rowsperstrip), sizeof(uint16));	if (tbuf_size == 0)		return (0);	sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);	if (sp->tbuf == NULL)		return (0);	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)		sp->user_datafmt = PixarLogGuessDataFmt(td);	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN) {		TIFFErrorExt(tif->tif_clientdata, module,			"PixarLog compression can't handle bits depth/data format combination (depth: %d)", 			td->td_bitspersample);		return (0);	}	if (inflateInit(&sp->stream) != Z_OK) {		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);		return (0);	} else {		sp->state |= PLSTATE_INIT;		return (1);	}}/* * Setup state for decoding a strip. */static intPixarLogPreDecode(TIFF* tif, tsample_t s){	PixarLogState* sp = DecoderState(tif);	(void) s;	assert(sp != NULL);	sp->stream.next_in = tif->tif_rawdata;	sp->stream.avail_in = tif->tif_rawcc;	return (inflateReset(&sp->stream) == Z_OK);}static intPixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s){	TIFFDirectory *td = &tif->tif_dir;	PixarLogState* sp = DecoderState(tif);	static const char module[] = "PixarLogDecode";	int i, nsamples, llen;	uint16 *up;	switch (sp->user_datafmt) {	case PIXARLOGDATAFMT_FLOAT:		nsamples = occ / sizeof(float);	/* XXX float == 32 bits */		break;	case PIXARLOGDATAFMT_16BIT:	case PIXARLOGDATAFMT_12BITPICIO:	case PIXARLOGDATAFMT_11BITLOG:		nsamples = occ / sizeof(uint16); /* XXX uint16 == 16 bits */		break;	case PIXARLOGDATAFMT_8BIT:	case PIXARLOGDATAFMT_8BITABGR:		nsamples = occ;		break;	default:		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			"%d bit input not supported in PixarLog",			td->td_bitspersample);		return 0;	}	llen = sp->stride * td->td_imagewidth;	(void) s;	assert(sp != NULL);	sp->stream.next_out = (unsigned char *) sp->tbuf;	sp->stream.avail_out = nsamples * sizeof(uint16);	do {		int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);		if (state == Z_STREAM_END) {			break;			/* XXX */		}		if (state == Z_DATA_ERROR) {			TIFFErrorExt(tif->tif_clientdata, module,			    "%s: Decoding error at scanline %d, %s",			    tif->tif_name, tif->tif_row, sp->stream.msg);			if (inflateSync(&sp->stream) != Z_OK)				return (0);			continue;		}		if (state != Z_OK) {			TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",			    tif->tif_name, sp->stream.msg);			return (0);		}	} while (sp->stream.avail_out > 0);	/* hopefully, we got all the bytes we needed */	if (sp->stream.avail_out != 0) {		TIFFErrorExt(tif->tif_clientdata, module,		    "%s: Not enough data at scanline %d (short %d bytes)",		    tif->tif_name, tif->tif_row, sp->stream.avail_out);		return (0);	}	up = sp->tbuf;	/* Swap bytes in the data if from a different endian machine. */	if (tif->tif_flags & TIFF_SWAB)		TIFFSwabArrayOfShort(up, nsamples);	/* 	 * if llen is not an exact multiple of nsamples, the decode operation	 * may overflow the output buffer, so truncate it enough to prevent	 * that but still salvage as much data as possible.	 */	if (nsamples % llen) { 		TIFFWarningExt(tif->tif_clientdata, module,			"%s: stride %lu is not a multiple of sample count, "			"%lu, data truncated.", tif->tif_name, llen, nsamples);		nsamples -= nsamples % llen;	}	for (i = 0; i < nsamples; i += llen, up += llen) {		switch (sp->user_datafmt)  {		case PIXARLOGDATAFMT_FLOAT:			horizontalAccumulateF(up, llen, sp->stride,					(float *)op, sp->ToLinearF);			op += llen * sizeof(float);			break;		case PIXARLOGDATAFMT_16BIT:			horizontalAccumulate16(up, llen, sp->stride,					(uint16 *)op, sp->ToLinear16);			op += llen * sizeof(uint16);			break;		case PIXARLOGDATAFMT_12BITPICIO:			horizontalAccumulate12(up, llen, sp->stride,					(int16 *)op, sp->ToLinearF);			op += llen * sizeof(int16);			break;		case PIXARLOGDATAFMT_11BITLOG:			horizontalAccumulate11(up, llen, sp->stride,					(uint16 *)op);			op += llen * sizeof(uint16);			break;		case PIXARLOGDATAFMT_8BIT:			horizontalAccumulate8(up, llen, sp->stride,					(unsigned char *)op, sp->ToLinear8);			op += llen * sizeof(unsigned char);			break;		case PIXARLOGDATAFMT_8BITABGR:			horizontalAccumulate8abgr(up, llen, sp->stride,					(unsigned char *)op, sp->ToLinear8);			op += llen * sizeof(unsigned char);			break;		default:			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,				  "PixarLogDecode: unsupported bits/sample: %d", 				  td->td_bitspersample);			return (0);		}	}	return (1);}static intPixarLogSetupEncode(TIFF* tif){	TIFFDirectory *td = &tif->tif_dir;	PixarLogState* sp = EncoderState(tif);	tsize_t tbuf_size;	static const char module[] = "PixarLogSetupEncode";	assert(sp != NULL);	/* for some reason, we can't do this in TIFFInitPixarLog */	sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?	    td->td_samplesperpixel : 1);	tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),				      td->td_rowsperstrip), sizeof(uint16));	if (tbuf_size == 0)		return (0);	sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);	if (sp->tbuf == NULL)		return (0);	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)		sp->user_datafmt = PixarLogGuessDataFmt(td);	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN) {		TIFFErrorExt(tif->tif_clientdata, module, "PixarLog compression can't handle %d bit linear encodings", td->td_bitspersample);		return (0);	}	if (deflateInit(&sp->stream, sp->quality) != Z_OK) {		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);		return (0);	} else {		sp->state |= PLSTATE_INIT;		return (1);	}}/* * Reset encoding state at the start of a strip. */static intPixarLogPreEncode(TIFF* tif, tsample_t s){	PixarLogState *sp = EncoderState(tif);	(void) s;	assert(sp != NULL);	sp->stream.next_out = tif->tif_rawdata;	sp->stream.avail_out = tif->tif_rawdatasize;	return (deflateReset(&sp->stream) == Z_OK);}static voidhorizontalDifferenceF(float *ip, int n, int stride, uint16 *wp, uint16 *FromLT2){    int32 r1, g1, b1, a1, r2, g2, b2, a2, mask;    float fltsize = Fltsize;#define  CLAMP(v) ( (v<(float)0.)   ? 0				\		  : (v<(float)2.)   ? FromLT2[(int)(v*fltsize)]	\		  : (v>(float)24.2) ? 2047			\		  : LogK1*log(v*LogK2) + 0.5 )    mask = CODE_MASK;    if (n >= stride) {	if (stride == 3) {	    r2 = wp[0] = (uint16) CLAMP(ip[0]);	    g2 = wp[1] = (uint16) CLAMP(ip[1]);	    b2 = wp[2] = (uint16) CLAMP(ip[2]);	    n -= 3;	    while (n > 0) {		n -= 3;		wp += 3;		ip += 3;		r1 = (int32) CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;		g1 = (int32) CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;		b1 = (int32) CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;	    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品123区| 亚洲欧美日韩国产综合在线| 国产偷v国产偷v亚洲高清| 亚洲精品高清在线| 国产乱码一区二区三区| 欧洲另类一二三四区| 国产日韩欧美不卡| 石原莉奈在线亚洲二区| 97久久人人超碰| 2023国产一二三区日本精品2022| 亚洲黄色性网站| 蜜臀av一区二区在线观看| 色婷婷综合久久久久中文| 久久久久久久久久电影| 午夜激情综合网| 在线亚洲高清视频| 中文一区二区在线观看 | 日韩视频免费观看高清在线视频| 自拍偷在线精品自拍偷无码专区| 另类小说图片综合网| 91蜜桃婷婷狠狠久久综合9色| 久久久久久黄色| 国内外成人在线视频| 69堂成人精品免费视频| 一区二区三区国产精华| 91亚洲精品久久久蜜桃网站 | 一区免费观看视频| 国产成人av电影在线| 国产色一区二区| 国产高清精品在线| 国产女主播视频一区二区| 国产在线看一区| 2欧美一区二区三区在线观看视频| 日韩综合在线视频| 欧美一级理论性理论a| 一区二区三区国产精华| 欧美亚洲综合久久| 石原莉奈在线亚洲二区| 欧美一区二区视频观看视频| 日本一道高清亚洲日美韩| 欧美日韩午夜在线| 蜜臀av国产精品久久久久| 欧美一级午夜免费电影| 男人的天堂久久精品| 欧美一级淫片007| 久久精品国产久精国产| 久久蜜桃av一区二区天堂| 国产一区二区三区四| 国产精品国产自产拍在线| 色8久久人人97超碰香蕉987| 午夜精品一区二区三区三上悠亚| 欧美一级高清大全免费观看| 精品一区精品二区高清| 国产欧美日韩视频一区二区| 97久久久精品综合88久久| 亚洲成人av免费| 久久在线免费观看| 一本久久综合亚洲鲁鲁五月天 | 欧美在线三级电影| 日本成人在线网站| 国产欧美日韩中文久久| 色就色 综合激情| 精品一区二区三区在线视频| 国产精品精品国产色婷婷| 精品一区二区影视| 国产精品88888| 亚洲一二三四区| 精品国产91乱码一区二区三区 | 成人性生交大片免费看中文网站| 亚洲色图在线视频| 欧美一级欧美一级在线播放| 成人性生交大片免费看视频在线| 亚洲图片欧美一区| 国产午夜亚洲精品午夜鲁丝片| 在线免费av一区| 国产在线精品视频| 亚洲123区在线观看| 久久综合九色综合久久久精品综合 | 最好看的中文字幕久久| 日韩一区二区三区四区五区六区| 国产.欧美.日韩| 日日噜噜夜夜狠狠视频欧美人| 国产精品久久网站| 911国产精品| 99久久免费精品| 紧缚奴在线一区二区三区| 亚洲午夜成aⅴ人片| 国产精品久久久久婷婷二区次| 7777女厕盗摄久久久| 在线视频欧美区| 成人在线综合网站| 国产在线不卡一区| 日本欧美一区二区三区乱码| 亚洲人成网站在线| 国产精品久久一卡二卡| 久久一区二区三区国产精品| 91精品综合久久久久久| 色吧成人激情小说| 99re热这里只有精品视频| 粉嫩aⅴ一区二区三区四区| 精品中文av资源站在线观看| 日本成人在线视频网站| 日韩国产在线观看一区| 亚洲影院理伦片| 亚洲一本大道在线| 亚洲一级二级三级| 亚洲午夜av在线| 亚洲午夜视频在线| 亚洲一区二区精品视频| 亚洲综合激情网| 亚洲永久精品国产| 亚洲h动漫在线| 日本女人一区二区三区| 日韩国产在线观看一区| 日韩二区三区在线观看| 免费高清在线一区| 国产一区二区三区香蕉| 韩国视频一区二区| 国产成人免费av在线| 成人黄色免费短视频| 91在线观看地址| 在线观看成人免费视频| 欧美性色黄大片| 欧美日韩黄色影视| 欧美大片日本大片免费观看| 久久亚洲一级片| 中文字幕在线观看不卡视频| 一区二区三区四区不卡视频| 午夜私人影院久久久久| 麻豆国产精品官网| 国产精品456露脸| www.99精品| 欧美日韩国产免费一区二区| 91精品国产综合久久久久| 精品免费国产一区二区三区四区| 国产三级精品在线| 最近日韩中文字幕| 日本在线观看不卡视频| 激情综合色综合久久| 成人av在线网| 欧美另类久久久品| 久久久不卡网国产精品二区| 亚洲国产电影在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 日韩av一区二区三区四区| 激情六月婷婷综合| 在线视频国内一区二区| 欧美tickling网站挠脚心| 国产精品久久午夜夜伦鲁鲁| 三级欧美韩日大片在线看| 国产精品一区二区在线播放| 一本大道久久a久久综合| 日韩你懂的在线播放| 国产精品入口麻豆九色| 偷窥国产亚洲免费视频| 国产高清一区日本| 欧美精品亚洲二区| 亚洲国产成人自拍| 日韩精品色哟哟| 91麻豆国产在线观看| 91精品国产免费久久综合| 中文字幕第一区二区| 青青国产91久久久久久| 成人精品免费看| 精品少妇一区二区三区在线播放| 伊人开心综合网| 国产在线精品一区二区三区不卡 | 亚洲欧美视频在线观看视频| 三级久久三级久久| 一本大道av一区二区在线播放| 欧美mv日韩mv国产网站app| 亚洲综合成人在线| 成人av第一页| 国产调教视频一区| 紧缚奴在线一区二区三区| 欧美日韩精品一区二区三区蜜桃| 国产精品久久久久久久久久久免费看 | 欧美日本一道本| 中文字幕一区二区三区乱码在线| 日本亚洲天堂网| 欧美日韩小视频| 亚洲综合丝袜美腿| 91免费国产在线观看| 国产区在线观看成人精品| 久草精品在线观看| 日韩一区二区三区在线观看| 亚洲一区二区三区小说| 色嗨嗨av一区二区三区| 综合在线观看色| av一本久道久久综合久久鬼色| 国产亚洲欧美中文| 国产一区二区导航在线播放| 欧美少妇一区二区| 亚洲二区在线视频| 欧美在线观看禁18| 亚洲成人三级小说| 欧美精品aⅴ在线视频| 日韩高清在线一区| 日韩亚洲欧美中文三级| 日本伊人色综合网|