156typedef struct logLuvState LogLuvState;
172#define DecoderState(tif) ((LogLuvState*) (tif)->tif_data)
173#define EncoderState(tif) ((LogLuvState*) (tif)->tif_data)
175#define SGILOGDATAFMT_UNKNOWN -1
185 static const char module[] =
"LogL16Decode";
186 LogLuvState*
sp = DecoderState(tif);
199 npixels = occ /
sp->pixel_size;
204 if(
sp->tbuflen < npixels) {
206 "Translation buffer too short");
216 for (shft = 8; shft >= 0; shft -=8) {
217 for (
i = 0; i < npixels && cc > 0; ) {
221 rc = *bp++ + (2-128);
222 b = (
int16)(*bp++ << shft);
224 while (rc-- &&
i < npixels)
228 while (--
cc && rc-- &&
i < npixels)
233#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
235 "Not enough data at row %lu (short %I64d pixels)",
240 "Not enough data at row %lu (short %llu pixels)",
242 (
unsigned long long) (npixels -
i));
249 (*
sp->tfunc)(
sp,
op, npixels);
261 static const char module[] =
"LogLuvDecode24";
262 LogLuvState*
sp = DecoderState(tif);
272 npixels = occ /
sp->pixel_size;
277 if(
sp->tbuflen < npixels) {
279 "Translation buffer too short");
287 for (
i = 0; i < npixels && cc >= 3;
i++) {
288 tp[
i] = bp[0] << 16 | bp[1] << 8 | bp[2];
295#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
297 "Not enough data at row %lu (short %I64d pixels)",
302 "Not enough data at row %lu (short %llu pixels)",
304 (
unsigned long long) (npixels -
i));
308 (*
sp->tfunc)(
sp,
op, npixels);
318 static const char module[] =
"LogLuvDecode32";
330 sp = DecoderState(tif);
333 npixels = occ /
sp->pixel_size;
338 if(
sp->tbuflen < npixels) {
340 "Translation buffer too short");
350 for (shft = 24; shft >= 0; shft -=8) {
351 for (
i = 0; i < npixels && cc > 0; ) {
355 rc = *bp++ + (2-128);
358 while (rc-- &&
i < npixels)
362 while (--
cc && rc-- &&
i < npixels)
367#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
369 "Not enough data at row %lu (short %I64d pixels)",
374 "Not enough data at row %lu (short %llu pixels)",
376 (
unsigned long long) (npixels -
i));
383 (*
sp->tfunc)(
sp,
op, npixels);
437 static const char module[] =
"LogL16Encode";
438 LogLuvState*
sp = EncoderState(tif);
452 npixels =
cc /
sp->pixel_size;
458 if(
sp->tbuflen < npixels) {
460 "Translation buffer too short");
463 (*
sp->tfunc)(
sp, bp, npixels);
468 for (shft = 8; shft >= 0; shft -=8) {
469 for (
i = 0;
i < npixels;
i += rc) {
479 for (beg =
i; beg < npixels; beg += rc) {
482 while (rc < 127+2 && beg+rc < npixels &&
488 if (beg-
i > 1 && beg-
i < MINRUN) {
501 if ((
j = beg-
i) > 127)
j = 127;
518 *
op++ = (
uint8) (
tp[beg] >> shft & 0xff);
536 static const char module[] =
"LogLuvEncode24";
537 LogLuvState*
sp = EncoderState(tif);
546 npixels =
cc /
sp->pixel_size;
552 if(
sp->tbuflen < npixels) {
554 "Translation buffer too short");
557 (*
sp->tfunc)(
sp, bp, npixels);
562 for (
i = npixels;
i--; ) {
588 static const char module[] =
"LogLuvEncode32";
589 LogLuvState*
sp = EncoderState(tif);
604 npixels =
cc /
sp->pixel_size;
610 if(
sp->tbuflen < npixels) {
612 "Translation buffer too short");
615 (*
sp->tfunc)(
sp, bp, npixels);
620 for (shft = 24; shft >= 0; shft -=8) {
621 for (
i = 0;
i < npixels;
i += rc) {
631 for (beg =
i; beg < npixels; beg += rc) {
634 while (rc < 127+2 && beg+rc < npixels &&
640 if (beg-
i > 1 && beg-
i < MINRUN) {
653 if ((
j = beg-
i) > 127)
j = 127;
729#define U_NEU 0.210526316
730#define V_NEU 0.473684211
735#define M_LN2 0.69314718055994530942
738#define M_PI 3.14159265358979323846
741#define log2(x) ((1./M_LN2)*log(x))
743#define exp2(x) exp(M_LN2*(x))
745static int itrunc(
double x,
int m)
760 int Le = p16 & 0x7fff;
765 Y =
exp(M_LN2/256.*(Le+.5) - M_LN2*64.);
766 return (!(p16 & 0x8000) ?
Y : -
Y);
775 if (
Y >= 1.8371976e19)
777 if (
Y <= -1.8371976e19)
779 if (
Y > 5.4136769e-20)
780 return itrunc(256.*(
log2(
Y) + 64.), em);
781 if (
Y < -5.4136769e-20)
782 return (~0x7fff | itrunc(256.*(
log2(-
Y) + 64.), em));
790 float* yp = (
float*)
op;
804 *gp++ = (
uint8) ((
Y <= 0.) ? 0 : (
Y >= 1.) ? 255 : (
int)(256.*
sqrt(
Y)));
812 float* yp = (
float*)
op;
826 r = 2.690*xyz[0] + -1.276*xyz[1] + -0.414*xyz[2];
827 g = -1.022*xyz[0] + 1.978*xyz[1] + 0.044*xyz[2];
828 b = 0.061*xyz[0] + -0.224*xyz[1] + 1.163*xyz[2];
844 return (
exp(M_LN2/64.*(p10+.5) - M_LN2*12.));
855 else if (
Y <= .00024283)
858 return itrunc(64.*(
log2(
Y) + 12.), em);
862#define uv2ang(u, v) ( (NANGLES*.499999999/M_PI) \
863 * atan2((v)-V_NEU,(u)-U_NEU) + .5*NANGLES )
866oog_encode(
double u,
double v)
868 static int oog_table[NANGLES];
873 double eps[NANGLES], ua, va, ang, epsa;
875 for (
i = NANGLES;
i--; )
884 ang = uv2ang(ua, va);
886 epsa =
fabs(ang - (
i+.5));
893 for (
i = NANGLES;
i--; )
896 for (i1 = 1; i1 < NANGLES/2; i1++)
897 if (
eps[(
i+i1)%NANGLES] < 1.5)
899 for (i2 = 1; i2 < NANGLES/2; i2++)
900 if (
eps[(
i+NANGLES-i2)%NANGLES] < 1.5)
904 oog_table[(
i+i1)%NANGLES];
907 oog_table[(
i+NANGLES-i2)%NANGLES];
912 return (oog_table[
i]);
927 return oog_encode(
u,
v);
930 return oog_encode(
u,
v);
932 return oog_encode(
u,
v);
935 return oog_encode(
u,
v);
953 while (upper - lower > 1) {
954 vi = (lower + upper) >> 1;
983 XYZ[0] = XYZ[1] = XYZ[2] = 0.;
991 s = 1./(6.*
u - 16.*
v + 12.);
1011 s = XYZ[0] + 15.*XYZ[1] + 3.*XYZ[2];
1012 if (!Le ||
s <= 0.) {
1023 return (Le << 14 | Ce);
1030 float* xyz = (
float*)
op;
1048 *luv3++ = (
int16)((*luv >> 12 & 0xffd) + 13314);
1053 *luv3++ = (
int16)(
u * (1L<<15));
1054 *luv3++ = (
int16)(
v * (1L<<15));
1078 float* xyz = (
float*)
op;
1097 else if (luv3[0] >= (1<<12)+3314)
1100 Le = (luv3[0]-3314) >> 2;
1102 Le = itrunc(.25*(luv3[0]-3314.),
sp->encode_meth);
1104 Ce =
uv_encode((luv3[1]+.5)/(1<<15), (luv3[2]+.5)/(1<<15),
1108 *luv++ = (
uint32)Le << 14 | Ce;
1123 XYZ[0] = XYZ[1] = XYZ[2] = 0.;
1129 s = 1./(6.*
u - 16.*
v + 12.);
1144 unsigned int Le, ue,
ve;
1149 s = XYZ[0] + 15.*XYZ[1] + 3.*XYZ[2];
1150 if (!Le ||
s <= 0.) {
1157 if (
u <= 0.) ue = 0;
1159 if (ue > 255) ue = 255;
1160 if (
v <= 0.)
ve = 0;
1162 if (
ve > 255)
ve = 255;
1164 return (Le << 16 | ue << 8 |
ve);
1171 float* xyz = (
float*)
op;
1188 *luv3++ = (
int16)(*luv >> 16);
1189 u = 1./
UVSCALE * ((*luv>>8 & 0xff) + .5);
1190 v = 1./
UVSCALE * ((*luv & 0xff) + .5);
1191 *luv3++ = (
int16)(
u * (1L<<15));
1192 *luv3++ = (
int16)(
v * (1L<<15));
1216 float* xyz = (
float*)
op;
1232 *luv++ = (
uint32)luv3[0] << 16 |
1240 *luv++ = (
uint32)luv3[0] << 16 |
1241 (itrunc(luv3[1]*(
UVSCALE/(1<<15)),
sp->encode_meth) << 8 & 0xff00) |
1242 (itrunc(luv3[2]*(
UVSCALE/(1<<15)),
sp->encode_meth) & 0xff);
1256#define PACK(s,b,f) (((b)<<6)|((s)<<3)|(f))
1269 return (SGILOGDATAFMT_UNKNOWN);
1279LogL16InitState(
TIFF* tif)
1281 static const char module[] =
"LogL16InitState";
1283 LogLuvState*
sp = DecoderState(tif);
1291 "Sorry, can not handle LogL image with %s=%d",
1297 if (
sp->user_datafmt == SGILOGDATAFMT_UNKNOWN)
1298 sp->user_datafmt = LogL16GuessDataFmt(td);
1299 switch (
sp->user_datafmt) {
1301 sp->pixel_size =
sizeof (
float);
1304 sp->pixel_size =
sizeof (
int16);
1307 sp->pixel_size =
sizeof (
uint8);
1311 "No support for converting user data format to LogL");
1337#define PACK(a,b) (((a)<<3)|(b))
1357 guess = SGILOGDATAFMT_UNKNOWN;
1367 guess = SGILOGDATAFMT_UNKNOWN;
1371 guess = SGILOGDATAFMT_UNKNOWN;
1374 guess = SGILOGDATAFMT_UNKNOWN;
1381LogLuvInitState(
TIFF* tif)
1383 static const char module[] =
"LogLuvInitState";
1385 LogLuvState*
sp = DecoderState(tif);
1393 "SGILog compression cannot handle non-contiguous data");
1396 if (
sp->user_datafmt == SGILOGDATAFMT_UNKNOWN)
1397 sp->user_datafmt = LogLuvGuessDataFmt(td);
1398 switch (
sp->user_datafmt) {
1400 sp->pixel_size = 3*
sizeof (
float);
1403 sp->pixel_size = 3*
sizeof (
int16);
1409 sp->pixel_size = 3*
sizeof (
uint8);
1413 "No support for converting user data format to LogLuv");
1431LogLuvFixupTags(
TIFF* tif)
1438LogLuvSetupDecode(
TIFF* tif)
1440 static const char module[] =
"LogLuvSetupDecode";
1441 LogLuvState*
sp = DecoderState(tif);
1447 if (!LogLuvInitState(tif))
1451 switch (
sp->user_datafmt) {
1453 sp->tfunc = Luv24toXYZ;
1456 sp->tfunc = Luv24toLuv48;
1459 sp->tfunc = Luv24toRGB;
1464 switch (
sp->user_datafmt) {
1466 sp->tfunc = Luv32toXYZ;
1469 sp->tfunc = Luv32toLuv48;
1472 sp->tfunc = Luv32toRGB;
1478 if (!LogL16InitState(tif))
1481 switch (
sp->user_datafmt) {
1486 sp->tfunc = L16toGry;
1492 "Inappropriate photometric interpretation %d for SGILog compression; %s",
1500LogLuvSetupEncode(
TIFF* tif)
1502 static const char module[] =
"LogLuvSetupEncode";
1503 LogLuvState*
sp = EncoderState(tif);
1508 if (!LogLuvInitState(tif))
1512 switch (
sp->user_datafmt) {
1514 sp->tfunc = Luv24fromXYZ;
1517 sp->tfunc = Luv24fromLuv48;
1526 switch (
sp->user_datafmt) {
1528 sp->tfunc = Luv32fromXYZ;
1531 sp->tfunc = Luv32fromLuv48;
1541 if (!LogL16InitState(tif))
1544 switch (
sp->user_datafmt) {
1546 sp->tfunc = L16fromY;
1556 "Inappropriate photometric interpretation %d for SGILog compression; %s",
1560 sp->encoder_state = 1;
1564 "SGILog compression supported only for %s, or raw data",
1570LogLuvClose(
TIFF* tif)
1572 LogLuvState*
sp = (LogLuvState*) tif->
tif_data;
1584 if(
sp->encoder_state )
1596LogLuvCleanup(
TIFF* tif)
1598 LogLuvState*
sp = (LogLuvState *)tif->
tif_data;
1616 static const char module[] =
"LogLuvVSetField";
1617 LogLuvState*
sp = DecoderState(tif);
1629 switch (
sp->user_datafmt) {
1649 "Unknown data format %d for LogLuv compression",
1666 "Unknown encoding %d for LogLuv compression",
1672 return (*
sp->vsetparent)(tif,
tag,
ap);
1679 LogLuvState *
sp = (LogLuvState *)tif->
tif_data;
1686 return (*
sp->vgetparent)(tif,
tag,
ap);
1690static const TIFFField LogLuvFields[] = {
1691 {
TIFFTAG_SGILOGDATAFMT, 0, 0,
TIFF_SHORT, 0,
TIFF_SETGET_INT,
TIFF_SETGET_UNDEFINED,
FIELD_PSEUDO,
TRUE,
FALSE,
"SGILogDataFmt",
NULL},
1692 {
TIFFTAG_SGILOGENCODE, 0, 0,
TIFF_SHORT, 0,
TIFF_SETGET_INT,
TIFF_SETGET_UNDEFINED,
FIELD_PSEUDO,
TRUE,
FALSE,
"SGILogEncode",
NULL}
1698 static const char module[] =
"TIFFInitSGILog";
1709 "Merging SGILog codec-specific tags failed");
1721 sp->user_datafmt = SGILOGDATAFMT_UNKNOWN;
1724 sp->tfunc = _logLuvNop;
1752 "%s: No space for LogLuv state block", tif->
tif_name);
_STLP_DECLSPEC complex< float > _STLP_CALL sqrt(const complex< float > &)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
_In_ uint64_t _In_ uint64_t _In_ uint64_t _In_opt_ traverse_ptr * tp
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl fabs(_In_ double x)
_Check_return_ __CRT_INLINE double log2(_In_ double x)
_Check_return_ int __cdecl rand(void)
struct msdos_volume_info vi
static float(__cdecl *square_half_float)(float x
static VOID CALLBACK tfunc(HWND hwnd, UINT uMsg, UINT_PTR id, DWORD dwTime)
uint16 td_samplesperpixel
TIFFCodeMethod tif_encodestrip
TIFFCodeMethod tif_encodetile
TIFFTagMethods tif_tagmethods
tmsize_t tif_scanlinesize
TIFFBoolMethod tif_fixuptags
TIFFCodeMethod tif_decodestrip
TIFFPostMethod tif_postdecode
TIFFCodeMethod tif_decoderow
TIFFBoolMethod tif_setupencode
TIFFCodeMethod tif_encoderow
TIFFVoidMethod tif_cleanup
TIFFBoolMethod tif_setupdecode
TIFFCodeMethod tif_decodetile
tmsize_t _TIFFMultiplySSize(TIFF *tif, tmsize_t first, tmsize_t second, const char *where)
void _TIFFSetDefaultCompressionState(TIFF *tif)
int TIFFSetField(TIFF *tif, uint32 tag,...)
int _TIFFMergeFields(TIFF *tif, const TIFFField info[], uint32 n)
void TIFFErrorExt(thandle_t fd, const char *module, const char *fmt,...)
void _TIFFNoPostDecode(TIFF *tif, uint8 *buf, tmsize_t cc)
tmsize_t TIFFScanlineSize(TIFF *tif)
tmsize_t TIFFTileSize(TIFF *tif)
tmsize_t TIFFTileRowSize(TIFF *tif)
void _TIFFmemset(void *p, int v, tmsize_t c)
void * _TIFFmalloc(tmsize_t s)
int TIFFFlushData1(TIFF *tif)
#define SGILOGDATAFMT_RAW
#define TIFFTAG_BITSPERSAMPLE
#define TIFFTAG_SGILOGENCODE
#define TIFFTAG_SAMPLESPERPIXEL
#define COMPRESSION_SGILOG
#define SAMPLEFORMAT_UINT
#define SGILOGENCODE_RANDITHER
#define PHOTOMETRIC_LOGLUV
#define SAMPLEFORMAT_IEEEFP
#define SGILOGDATAFMT_8BIT
#define SGILOGDATAFMT_FLOAT
#define TIFFTAG_SGILOGDATAFMT
#define COMPRESSION_SGILOG24
#define SGILOGENCODE_NODITHER
#define TIFFTAG_SAMPLEFORMAT
#define SAMPLEFORMAT_VOID
#define SGILOGDATAFMT_16BIT
#define PLANARCONFIG_CONTIG
void LogLuv32toXYZ(uint32, float *)
int LogL16fromY(double, int)
void LogLuv24toXYZ(uint32, float *)
uint32 LogLuv24fromXYZ(float *, int)
uint32 LogLuv32fromXYZ(float *, int)
int uv_decode(double *, double *, int)
int uv_encode(double, double, int)
void XYZtoRGB24(float *, uint8 *)
int LogL10fromY(double, int)
int(* TIFFVSetMethod)(TIFF *, uint32, va_list)
#define TIFFArrayCount(a)
static const struct @3468 uv_row[UV_NVS]
_In_ ULONG _In_ ULONG rgb
void int int ULONGLONG int va_list * ap
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList