diff options
author | XhmikosR <xhmikosr@users.sourceforge.net> | 2011-02-07 21:41:57 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@users.sourceforge.net> | 2011-02-07 21:41:57 +0300 |
commit | 890547c2dbff031e7487e6d4b3c7c5a9a5cba155 (patch) | |
tree | b0e88302acb0b5b518023efd49adbfdb669aa401 /src/thirdparty/lcms2 | |
parent | b1854536713ac42b3c78d8587e85b711cab355f6 (diff) |
update lcms to the latest git
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@2917 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/thirdparty/lcms2')
-rw-r--r-- | src/thirdparty/lcms2/include/lcms2.h | 9 | ||||
-rw-r--r-- | src/thirdparty/lcms2/src/cmsxform.c | 57 | ||||
-rw-r--r-- | src/thirdparty/lcms2/src/lcms2_internal.h | 47 |
3 files changed, 39 insertions, 74 deletions
diff --git a/src/thirdparty/lcms2/include/lcms2.h b/src/thirdparty/lcms2/include/lcms2.h index 7fb2fd9a8..7e33ee8a9 100644 --- a/src/thirdparty/lcms2/include/lcms2.h +++ b/src/thirdparty/lcms2/include/lcms2.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------------
//
// Little Color Management System
-// Copyright (c) 1998-2010 Marti Maria Saguer
+// Copyright (c) 1998-2011 Marti Maria Saguer
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the "Software"),
@@ -23,7 +23,7 @@ //
//---------------------------------------------------------------------------------
//
-// Version 2.1
+// Version 2.2a
//
#ifndef _lcms2_H
@@ -40,9 +40,6 @@ // Uncomment this if your compiler doesn't work with fast floor function
// #define CMS_DONT_USE_FAST_FLOOR 1
-// Uncomment this line if your system does not support multithreading
-#define CMS_DONT_USE_PTHREADS 1
-
// Uncomment this line if you want lcms to use the black point tag in profile,
// if commented, lcms will compute the black point by its own.
// It is safer to leave it commented out
@@ -72,7 +69,7 @@ extern "C" { #endif
// Version/release
-#define LCMS_VERSION 2010
+#define LCMS_VERSION 2020
// I will give the chance of redefining basic types for compilers that are not fully C99 compliant
#ifndef CMS_BASIC_TYPES_ALREADY_DEFINED
diff --git a/src/thirdparty/lcms2/src/cmsxform.c b/src/thirdparty/lcms2/src/cmsxform.c index 4d6c978e9..2781758f9 100644 --- a/src/thirdparty/lcms2/src/cmsxform.c +++ b/src/thirdparty/lcms2/src/cmsxform.c @@ -89,7 +89,6 @@ void CMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform) if (p ->Sequence)
cmsFreeProfileSequenceDescription(p ->Sequence);
- LCMS_FREE_LOCK(&p->rwlock);
_cmsFree(p ->ContextID, (void *) p);
}
@@ -101,8 +100,9 @@ void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, {
_cmsTRANSFORM* p = (_cmsTRANSFORM*) Transform;
+ _cmsCACHE Cache;
- p -> xform(p, InputBuffer, OutputBuffer, Size);
+ p -> xform(p, &Cache, InputBuffer, OutputBuffer, Size);
}
@@ -112,6 +112,7 @@ void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, // Note that because extended range, we can use a -1.0 value for out of gamut in this case.
static
void FloatXFORM(_cmsTRANSFORM* p,
+ _cmsCACHE* Cache,
const void* in,
void* out, cmsUInt32Number Size)
{
@@ -156,6 +157,8 @@ void FloatXFORM(_cmsTRANSFORM* p, // Back to asked representation
output = p -> ToOutputFloat(p, fOut, output, Size);
}
+
+ cmsUNUSED_PARAMETER(Cache);
}
// 16 bit precision -----------------------------------------------------------------------------------------------------------
@@ -163,6 +166,7 @@ void FloatXFORM(_cmsTRANSFORM* p, // Null transformation, only applies formatters. No caché
static
void NullXFORM(_cmsTRANSFORM* p,
+ _cmsCACHE* Cache,
const void* in,
void* out, cmsUInt32Number Size)
{
@@ -180,12 +184,15 @@ void NullXFORM(_cmsTRANSFORM* p, accum = p -> FromInput(p, wIn, accum, Size);
output = p -> ToOutput(p, wIn, output, Size);
}
+
+ cmsUNUSED_PARAMETER(Cache);
}
// No gamut check, no cache, 16 bits
static
void PrecalculatedXFORM(_cmsTRANSFORM* p,
+ _cmsCACHE* Cache,
const void* in,
void* out, cmsUInt32Number Size)
{
@@ -204,6 +211,8 @@ void PrecalculatedXFORM(_cmsTRANSFORM* p, p ->Lut ->Eval16Fn(wIn, wOut, p -> Lut->Data);
output = p -> ToOutput(p, wOut, output, Size);
}
+
+ cmsUNUSED_PARAMETER(Cache);
}
@@ -230,6 +239,7 @@ void TransformOnePixelWithGamutCheck(_cmsTRANSFORM* p, // Gamut check, No caché, 16 bits.
static
void PrecalculatedXFORMGamutCheck(_cmsTRANSFORM* p,
+ _cmsCACHE* Cache,
const void* in,
void* out, cmsUInt32Number Size)
{
@@ -248,12 +258,15 @@ void PrecalculatedXFORMGamutCheck(_cmsTRANSFORM* p, TransformOnePixelWithGamutCheck(p, wIn, wOut);
output = p -> ToOutput(p, wOut, output, Size);
}
+
+ cmsUNUSED_PARAMETER(Cache);
}
// No gamut check, Caché, 16 bits,
static
void CachedXFORM(_cmsTRANSFORM* p,
+ _cmsCACHE* Cache,
const void* in,
void* out, cmsUInt32Number Size)
{
@@ -261,7 +274,6 @@ void CachedXFORM(_cmsTRANSFORM* p, cmsUInt8Number* output;
cmsUInt16Number wIn[cmsMAXCHANNELS], wOut[cmsMAXCHANNELS];
cmsUInt32Number i, n;
- cmsUInt16Number CacheIn[cmsMAXCHANNELS], CacheOut[cmsMAXCHANNELS];
accum = (cmsUInt8Number*) in;
output = (cmsUInt8Number*) out;
@@ -272,41 +284,33 @@ void CachedXFORM(_cmsTRANSFORM* p, memset(wOut, 0, sizeof(wOut));
- LCMS_READ_LOCK(&p ->rwlock);
- memmove(CacheIn, p ->CacheIn, sizeof(CacheIn));
- memmove(CacheOut, p ->CacheOut, sizeof(CacheOut));
- LCMS_UNLOCK(&p ->rwlock);
for (i=0; i < n; i++) {
accum = p -> FromInput(p, wIn, accum, Size);
- if (memcmp(wIn, CacheIn, sizeof(CacheIn)) == 0) {
+ if (memcmp(wIn, Cache ->CacheIn, sizeof(Cache -> CacheIn)) == 0) {
- memmove(wOut, CacheOut, sizeof(CacheOut));
+ memmove(wOut, Cache -> CacheOut, sizeof(Cache -> CacheOut));
}
else {
p ->Lut ->Eval16Fn(wIn, wOut, p -> Lut->Data);
- memmove(CacheIn, wIn, sizeof(CacheIn));
- memmove(CacheOut, wOut, sizeof(CacheOut));
+ memmove(Cache -> CacheIn, wIn, sizeof(Cache -> CacheIn));
+ memmove(Cache -> CacheOut, wOut, sizeof(Cache -> CacheOut));
}
output = p -> ToOutput(p, wOut, output, Size);
}
-
- LCMS_WRITE_LOCK(&p ->rwlock);
- memmove(p->CacheIn, CacheIn, sizeof(CacheIn));
- memmove(p->CacheOut, CacheOut, sizeof(CacheOut));
- LCMS_UNLOCK(&p ->rwlock);
}
// All those nice features together
static
void CachedXFORMGamutCheck(_cmsTRANSFORM* p,
+ _cmsCACHE* Cache,
const void* in,
void* out, cmsUInt32Number Size)
{
@@ -314,7 +318,6 @@ void CachedXFORMGamutCheck(_cmsTRANSFORM* p, cmsUInt8Number* output;
cmsUInt16Number wIn[cmsMAXCHANNELS], wOut[cmsMAXCHANNELS];
cmsUInt32Number i, n;
- cmsUInt16Number CacheIn[cmsMAXCHANNELS], CacheOut[cmsMAXCHANNELS];
accum = (cmsUInt8Number*) in;
output = (cmsUInt8Number*) out;
@@ -324,32 +327,23 @@ void CachedXFORMGamutCheck(_cmsTRANSFORM* p, memset(wIn, 0, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
memset(wOut, 0, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
- LCMS_READ_LOCK(&p ->rwlock);
- memmove(CacheIn, p ->CacheIn, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
- memmove(CacheOut, p ->CacheOut, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
- LCMS_UNLOCK(&p ->rwlock);
-
for (i=0; i < n; i++) {
accum = p -> FromInput(p, wIn, accum, Size);
- if (memcmp(wIn, CacheIn, sizeof(cmsUInt16Number) * cmsMAXCHANNELS) == 0) {
- memmove(wOut, CacheOut, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
+ if (memcmp(wIn, Cache -> CacheIn, sizeof(cmsUInt16Number) * cmsMAXCHANNELS) == 0) {
+ memmove(wOut, Cache -> CacheOut, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
}
else {
TransformOnePixelWithGamutCheck(p, wIn, wOut);
- memmove(CacheIn, wIn, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
- memmove(CacheOut, wOut, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
+ memmove(Cache -> CacheIn, wIn, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
+ memmove(Cache -> CacheOut, wOut, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
}
output = p -> ToOutput(p, wOut, output, Size);
}
- LCMS_WRITE_LOCK(&p ->rwlock);
- memmove(p->CacheIn, CacheIn, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
- memmove(p->CacheOut, CacheOut, sizeof(cmsUInt16Number) * cmsMAXCHANNELS);
- LCMS_UNLOCK(&p ->rwlock);
}
@@ -431,9 +425,6 @@ _cmsTRANSFORM* AllocEmptyTransform(cmsContext ContextID, cmsUInt32Number InputFo }
- // Create a mutex for shared memory
- LCMS_CREATE_LOCK(&p->rwlock);
-
p ->InputFormat = InputFormat;
p ->OutputFormat = OutputFormat;
p ->dwOriginalFlags = dwFlags;
diff --git a/src/thirdparty/lcms2/src/lcms2_internal.h b/src/thirdparty/lcms2/src/lcms2_internal.h index 39e0d3bb9..59d8027d6 100644 --- a/src/thirdparty/lcms2/src/lcms2_internal.h +++ b/src/thirdparty/lcms2/src/lcms2_internal.h @@ -1,7 +1,7 @@ //
// Little Color Management System
-// Copyright (c) 1998-2010 Marti Maria Saguer
+// Copyright (c) 1998-2011 Marti Maria Saguer
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the "Software"),
@@ -88,36 +88,6 @@ # endif
#endif
-// Pthreads. In windows we use the native WIN32 API instead
-#ifdef CMS_DONT_USE_PTHREADS
-typedef int LCMS_RWLOCK_T;
-# define LCMS_CREATE_LOCK(x)
-# define LCMS_FREE_LOCK(x)
-# define LCMS_READ_LOCK(x)
-# define LCMS_WRITE_LOCK(x)
-# define LCMS_UNLOCK(x)
-#else
-#ifdef CMS_IS_WINDOWS_
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-# endif
-# include <windows.h>
- typedef CRITICAL_SECTION LCMS_RWLOCK_T;
-# define LCMS_CREATE_LOCK(x) InitializeCriticalSection((x))
-# define LCMS_FREE_LOCK(x) DeleteCriticalSection((x))
-# define LCMS_READ_LOCK(x) EnterCriticalSection((x))
-# define LCMS_WRITE_LOCK(x) EnterCriticalSection((x))
-# define LCMS_UNLOCK(x) LeaveCriticalSection((x))
-#else
-# include <pthread.h>
- typedef pthread_rwlock_t LCMS_RWLOCK_T;
-# define LCMS_CREATE_LOCK(x) pthread_rwlock_init((x), NULL)
-# define LCMS_FREE_LOCK(x) pthread_rwlock_destroy((x))
-# define LCMS_READ_LOCK(x) pthread_rwlock_rdlock((x))
-# define LCMS_WRITE_LOCK(x) pthread_rwlock_wrlock((x))
-# define LCMS_UNLOCK(x) pthread_rwlock_unlock((x))
-#endif
-#endif
// A fast way to convert from/to 16 <-> 8 bits
#define FROM_8_TO_16(rgb) (cmsUInt16Number) ((((cmsUInt16Number) (rgb)) << 8)|(rgb))
@@ -559,10 +529,20 @@ cmsFormatter _cmsGetFormatter(cmsUInt32Number Type, // Specific type struct _cmstransform_struct;
+typedef struct {
+ // 1-pixel cache (16 bits only)
+ cmsUInt16Number CacheIn[cmsMAXCHANNELS];
+ cmsUInt16Number CacheOut[cmsMAXCHANNELS];
+} _cmsCACHE;
+
+
+
// Full xform
typedef void (* _cmsTransformFn)(struct _cmstransform_struct *Transform,
+ _cmsCACHE* Cache,
const void* InputBuffer,
- void* OutputBuffer, cmsUInt32Number Size);
+ void* OutputBuffer,
+ cmsUInt32Number Size);
typedef struct {
@@ -589,9 +569,6 @@ typedef struct _cmstransform_struct { // 1-pixel cache (16 bits only)
cmsUInt16Number CacheIn[cmsMAXCHANNELS];
cmsUInt16Number CacheOut[cmsMAXCHANNELS];
-
- // Semaphor for cache
- LCMS_RWLOCK_T rwlock;
// A MPE LUT holding the full (optimized) transform
cmsPipeline* Lut;
|