diff options
Diffstat (limited to 'lcms2mt/src/cmsopt.c')
-rw-r--r-- | lcms2mt/src/cmsopt.c | 60 |
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; |