summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lcms2mt/src/cmsopt.c')
-rw-r--r--lcms2mt/src/cmsopt.c60
1 files changed, 33 insertions, 27 deletions
diff --git a/lcms2mt/src/cmsopt.c b/lcms2mt/src/cmsopt.c
index fedb5043..7fb5e029 100644
--- a/lcms2mt/src/cmsopt.c
+++ b/lcms2mt/src/cmsopt.c
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------------
//
// Little Color Management System
-// Copyright (c) 1998-2017 Marti Maria Saguer
+// Copyright (c) 1998-2020 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"),
@@ -285,9 +285,10 @@ cmsBool PreOptimize(cmsContext ContextID, cmsPipeline* Lut)
}
static
-void Eval16nop1D(cmsContext ContextID, register const cmsUInt16Number Input[],
- register cmsUInt16Number Output[],
- register const struct _cms_interp_struc* p)
+void Eval16nop1D(cmsContext ContextID,
+ CMSREGISTER const cmsUInt16Number Input[],
+ CMSREGISTER cmsUInt16Number Output[],
+ CMSREGISTER const struct _cms_interp_struc* p)
{
cmsUNUSED_PARAMETER(ContextID);
Output[0] = Input[0];
@@ -296,9 +297,10 @@ void Eval16nop1D(cmsContext ContextID, register const cmsUInt16Number Input[],
}
static
-void PrelinEval16(cmsContext ContextID, register const cmsUInt16Number Input[],
- register cmsUInt16Number Output[],
- register const void* D)
+void PrelinEval16(cmsContext ContextID,
+ CMSREGISTER const cmsUInt16Number Input[],
+ CMSREGISTER cmsUInt16Number Output[],
+ CMSREGISTER const void* D)
{
Prelin16Data* p16 = (Prelin16Data*) D;
cmsUInt16Number StageABC[MAX_INPUT_DIMENSIONS];
@@ -404,7 +406,7 @@ Prelin16Data* PrelinOpt16alloc(cmsContext ContextID,
// Sampler implemented by another LUT. This is a clean way to precalculate the devicelink 3D CLUT for
// almost any transform. We use floating point precision and then convert from floating point to 16 bits.
static
-cmsInt32Number XFormSampler16(cmsContext ContextID, register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo)
+cmsInt32Number XFormSampler16(cmsContext ContextID, CMSREGISTER const cmsUInt16Number In[], CMSREGISTER cmsUInt16Number Out[], CMSREGISTER void* Cargo)
{
cmsPipeline* Lut = (cmsPipeline*) Cargo;
cmsFloat32Number InFloat[cmsMAXCHANNELS], OutFloat[cmsMAXCHANNELS];
@@ -695,10 +697,8 @@ cmsBool OptimizeByResampling(cmsContext ContextID, cmsPipeline** Lut, cmsUInt32N
}
}
- ContextID->dwFlags = *dwFlags;
// Allocate the CLUT
CLUT = cmsStageAllocCLut16bit(ContextID, nGridPoints, Src ->InputChannels, Src->OutputChannels, NULL);
- ContextID->dwFlags = 0;
if (CLUT == NULL) goto Error;
// Add the CLUT to the destination LUT
@@ -909,17 +909,18 @@ void* Prelin8dup(cmsContext ContextID, const void* ptr)
// A optimized interpolation for 8-bit input.
#define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan])
static CMS_NO_SANITIZE
-void PrelinEval8(cmsContext ContextID, register const cmsUInt16Number Input[],
- register cmsUInt16Number Output[],
- register const void* D)
+void PrelinEval8(cmsContext ContextID,
+ CMSREGISTER const cmsUInt16Number Input[],
+ CMSREGISTER cmsUInt16Number Output[],
+ CMSREGISTER const void* D)
{
cmsUInt8Number r, g, b;
cmsS15Fixed16Number rx, ry, rz;
cmsS15Fixed16Number c0, c1, c2, c3, Rest;
int OutChan;
- register cmsS15Fixed16Number X0, X1, Y0, Y1, Z0, Z1;
+ CMSREGISTER cmsS15Fixed16Number X0, X1, Y0, Y1, Z0, Z1;
Prelin8Data* p8 = (Prelin8Data*) D;
- register const cmsInterpParams* p = p8 ->p;
+ CMSREGISTER const cmsInterpParams* p = p8 ->p;
int TotalOut = (int) p -> nOutputs;
const cmsUInt16Number* LutTable = (const cmsUInt16Number*) p->Table;
cmsUNUSED_PARAMETER(ContextID);
@@ -1084,6 +1085,7 @@ cmsBool OptimizeByComputingLinearization(cmsContext ContextID, cmsPipeline** Lut
{
cmsStage* last = cmsPipelineGetPtrToLastStage(ContextID, OriginalLut);
+ if (last == NULL) goto Error;
if (cmsStageType(ContextID, last) == cmsSigCurveSetElemType) {
_cmsStageToneCurvesData* Data = (_cmsStageToneCurvesData*)cmsStageData(ContextID, last);
@@ -1330,9 +1332,10 @@ Curves16Data* CurvesAlloc(cmsContext ContextID, cmsUInt32Number nCurves, cmsUInt
}
static
-void FastEvaluateCurves8(cmsContext ContextID, register const cmsUInt16Number In[],
- register cmsUInt16Number Out[],
- register const void* D)
+void FastEvaluateCurves8(cmsContext ContextID,
+ CMSREGISTER const cmsUInt16Number In[],
+ CMSREGISTER cmsUInt16Number Out[],
+ CMSREGISTER const void* D)
{
Curves16Data* Data = (Curves16Data*) D;
int x;
@@ -1348,9 +1351,10 @@ void FastEvaluateCurves8(cmsContext ContextID, register const cmsUInt16Number In
static
-void FastEvaluateCurves16(cmsContext ContextID, register const cmsUInt16Number In[],
- register cmsUInt16Number Out[],
- register const void* D)
+void FastEvaluateCurves16(cmsContext ContextID,
+ CMSREGISTER const cmsUInt16Number In[],
+ CMSREGISTER cmsUInt16Number Out[],
+ CMSREGISTER const void* D)
{
Curves16Data* Data = (Curves16Data*) D;
cmsUInt32Number i;
@@ -1363,9 +1367,10 @@ void FastEvaluateCurves16(cmsContext ContextID, register const cmsUInt16Number I
static
-void FastIdentity16(cmsContext ContextID, register const cmsUInt16Number In[],
- register cmsUInt16Number Out[],
- register const void* D)
+void FastIdentity16(cmsContext ContextID,
+ CMSREGISTER const cmsUInt16Number In[],
+ CMSREGISTER cmsUInt16Number Out[],
+ CMSREGISTER const void* D)
{
cmsPipeline* Lut = (cmsPipeline*) D;
cmsUInt32Number i;
@@ -1524,9 +1529,10 @@ void* DupMatShaper(cmsContext ContextID, const void* Data)
// to accomplish some performance. Actually it takes 256x3 16 bits tables and 16385 x 3 tables of 8 bits,
// in total about 50K, and the performance boost is huge!
static
-void MatShaperEval16(cmsContext ContextID, register const cmsUInt16Number In[],
- register cmsUInt16Number Out[],
- register const void* D)
+void MatShaperEval16(cmsContext ContextID,
+ CMSREGISTER const cmsUInt16Number In[],
+ CMSREGISTER cmsUInt16Number Out[],
+ CMSREGISTER const void* D)
{
MatShaper8Data* p = (MatShaper8Data*) D;
cmsS1Fixed14Number l1, l2, l3, r, g, b;