diff options
-rw-r--r-- | include/lcms2.h | 26 | ||||
-rw-r--r-- | include/lcms2_plugin.h | 2 | ||||
-rw-r--r-- | src/cmscnvrt.c | 4 | ||||
-rw-r--r-- | src/cmsgmt.c | 2 | ||||
-rw-r--r-- | src/cmslut.c | 25 | ||||
-rw-r--r-- | src/cmsopt.c | 4 | ||||
-rw-r--r-- | src/cmstypes.c | 14 | ||||
-rw-r--r-- | src/cmsvirt.c | 4 | ||||
-rw-r--r-- | testbed/testcms2.c | 31 | ||||
-rw-r--r-- | utils/jpgicc/jpgicc.c | 4 |
10 files changed, 70 insertions, 46 deletions
diff --git a/include/lcms2.h b/include/lcms2.h index 75a3857..2d0a32f 100644 --- a/include/lcms2.h +++ b/include/lcms2.h @@ -1131,11 +1131,27 @@ CMSAPI cmsStage* CMSEXPORT cmsStageAllocIdentity(cmsContext ContextID, c CMSAPI cmsStage* CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Number nChannels, cmsToneCurve* const Curves[]); CMSAPI cmsStage* CMSEXPORT cmsStageAllocMatrix(cmsContext ContextID, cmsUInt32Number Rows, cmsUInt32Number Cols, const cmsFloat64Number* Matrix, const cmsFloat64Number* Offset); -CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); -CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); - -CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); -CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); +#define cmsCLUT_FLAGS_TRILINEAR_INTERPOLATION 0x0100 + +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, + cmsUInt32Number inputChan, cmsUInt32Number outputChan, + const cmsUInt16Number* Table, + cmsUInt32Number dwFlags); + +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, + cmsUInt32Number inputChan, cmsUInt32Number outputChan, + const cmsFloat32Number* Table, + cmsUInt32Number dwFlags); + +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], + cmsUInt32Number inputChan, cmsUInt32Number outputChan, + const cmsUInt16Number* Table, + cmsUInt32Number dwFlags); + +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], + cmsUInt32Number inputChan, cmsUInt32Number outputChan, + const cmsFloat32Number* Table, + cmsUInt32Number dwFlags); CMSAPI cmsStage* CMSEXPORT cmsStageDup(cmsStage* mpe); CMSAPI void CMSEXPORT cmsStageFree(cmsStage* mpe); diff --git a/include/lcms2_plugin.h b/include/lcms2_plugin.h index fd90350..dae596f 100644 --- a/include/lcms2_plugin.h +++ b/include/lcms2_plugin.h @@ -260,7 +260,7 @@ typedef union { // Flags for interpolator selection #define CMS_LERP_FLAGS_16BITS 0x0000 // The default #define CMS_LERP_FLAGS_FLOAT 0x0001 // Requires different implementation -#define CMS_LERP_FLAGS_TRILINEAR 0x0100 // Hint only +#define CMS_LERP_FLAGS_TRILINEAR cmsCLUT_FLAGS_TRILINEAR_INTERPOLATION // Hint only #define MAX_INPUT_DIMENSIONS 8 diff --git a/src/cmscnvrt.c b/src/cmscnvrt.c index 8dadc87..62b61a6 100644 --- a/src/cmscnvrt.c +++ b/src/cmscnvrt.c @@ -693,7 +693,7 @@ cmsPipeline* BlackPreservingKOnlyIntents(cmsContext ContextID, nGridPoints = _cmsReasonableGridpointsByColorspace(cmsSigCmykData, dwFlags); // Create the CLUT. 16 bits - CLUT = cmsStageAllocCLut16bit(ContextID, nGridPoints, 4, 4, NULL); + CLUT = cmsStageAllocCLut16bit(ContextID, nGridPoints, 4, 4, NULL, 0); if (CLUT == NULL) goto Error; // This is the one and only MPE in this LUT @@ -905,7 +905,7 @@ cmsPipeline* BlackPreservingKPlaneIntents(cmsContext ContextID, nGridPoints = _cmsReasonableGridpointsByColorspace(cmsSigCmykData, dwFlags); - CLUT = cmsStageAllocCLut16bit(ContextID, nGridPoints, 4, 4, NULL); + CLUT = cmsStageAllocCLut16bit(ContextID, nGridPoints, 4, 4, NULL, 0); if (CLUT == NULL) goto Cleanup; cmsPipelineInsertStage(Result, cmsAT_BEGIN, CLUT); diff --git a/src/cmsgmt.c b/src/cmsgmt.c index 8c9bac3..81de3e3 100644 --- a/src/cmsgmt.c +++ b/src/cmsgmt.c @@ -392,7 +392,7 @@ cmsPipeline* _cmsCreateGamutCheckPipeline(cmsContext ContextID, if (Gamut != NULL) { - CLUT = cmsStageAllocCLut16bit(ContextID, nGridpoints, nChannels, 1, NULL); + CLUT = cmsStageAllocCLut16bit(ContextID, nGridpoints, nChannels, 1, NULL, 0); cmsPipelineInsertStage(Gamut, cmsAT_BEGIN, CLUT); cmsStageSampleCLut16bit(CLUT, GamutSampler, (void*) &Chain, 0); diff --git a/src/cmslut.c b/src/cmslut.c index 473d7cf..9df9ec3 100644 --- a/src/cmslut.c +++ b/src/cmslut.c @@ -514,7 +514,8 @@ cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, - const cmsUInt16Number* Table) + const cmsUInt16Number* Table, + cmsUInt32Number dwFlags) { cmsUInt32Number i, n; _cmsStageCLutData* NewElem; @@ -543,7 +544,8 @@ cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, } } - NewElem ->Params = _cmsComputeInterpParamsEx(ContextID, clutPoints, inputChan, outputChan, NewElem ->Tab.T, CMS_LERP_FLAGS_16BITS); + NewElem ->Params = _cmsComputeInterpParamsEx(ContextID, clutPoints, inputChan, outputChan, NewElem ->Tab.T, + CMS_LERP_FLAGS_16BITS|dwFlags); if (NewElem ->Params == NULL) { cmsStageFree(NewMPE); return NULL; @@ -558,7 +560,8 @@ cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, - const cmsUInt16Number* Table) + const cmsUInt16Number* Table, + cmsUInt32Number dwFlags) { cmsUInt32Number Dimensions[MAX_INPUT_DIMENSIONS]; int i; @@ -568,7 +571,7 @@ cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, Dimensions[i] = nGridPoints; - return cmsStageAllocCLut16bitGranular(ContextID, Dimensions, inputChan, outputChan, Table); + return cmsStageAllocCLut16bitGranular(ContextID, Dimensions, inputChan, outputChan, Table, dwFlags); } @@ -576,7 +579,8 @@ cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, - const cmsFloat32Number* Table) + const cmsFloat32Number* Table, + cmsUInt32Number dwFlags) { cmsUInt32Number Dimensions[MAX_INPUT_DIMENSIONS]; int i; @@ -585,12 +589,15 @@ cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Dimensions[i] = nGridPoints; - return cmsStageAllocCLutFloatGranular(ContextID, Dimensions, inputChan, outputChan, Table); + return cmsStageAllocCLutFloatGranular(ContextID, Dimensions, inputChan, outputChan, Table, dwFlags); } -cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table) +cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], + cmsUInt32Number inputChan, cmsUInt32Number outputChan, + const cmsFloat32Number* Table, + cmsUInt32Number dwFlags) { cmsUInt32Number i, n; _cmsStageCLutData* NewElem; @@ -620,7 +627,7 @@ cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const c NewMPE ->Data = (void*) NewElem; - NewElem ->Params = _cmsComputeInterpParamsEx(ContextID, clutPoints, inputChan, outputChan, NewElem ->Tab.TFloat, CMS_LERP_FLAGS_FLOAT); + NewElem ->Params = _cmsComputeInterpParamsEx(ContextID, clutPoints, inputChan, outputChan, NewElem ->Tab.TFloat, CMS_LERP_FLAGS_FLOAT|dwFlags); if (NewElem ->Params == NULL) { cmsStageFree(NewMPE); return NULL; @@ -654,7 +661,7 @@ cmsStage* _cmsStageAllocIdentityCLut(cmsContext ContextID, int nChan) for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Dimensions[i] = 2; - mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, nChan, nChan, NULL); + mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, nChan, nChan, NULL, 0); if (mpe == NULL) return NULL; if (!cmsStageSampleCLut16bit(mpe, IdentitySampler, &nChan, 0)) { diff --git a/src/cmsopt.c b/src/cmsopt.c index b1ce98e..f6f49dc 100644 --- a/src/cmsopt.c +++ b/src/cmsopt.c @@ -580,7 +580,7 @@ cmsBool OptimizeByResampling(cmsPipeline** Lut, cmsUInt32Number Intent, cmsUInt3 } // Allocate the CLUT - CLUT = cmsStageAllocCLut16bit(Src ->ContextID, nGridPoints, Src ->InputChannels, Src->OutputChannels, NULL); + CLUT = cmsStageAllocCLut16bit(Src ->ContextID, nGridPoints, Src ->InputChannels, Src->OutputChannels, NULL, 0); if (CLUT == NULL) return FALSE; // Add the CLUT to the destination LUT @@ -980,7 +980,7 @@ cmsBool OptimizeByComputingLinearization(cmsPipeline** Lut, cmsUInt32Number Inte cmsPipelineInsertStage(OptimizedLUT, cmsAT_BEGIN, OptimizedPrelinMpe); // Allocate the CLUT for result - OptimizedCLUTmpe = cmsStageAllocCLut16bit(OriginalLut ->ContextID, nGridPoints, OriginalLut ->InputChannels, OriginalLut ->OutputChannels, NULL); + OptimizedCLUTmpe = cmsStageAllocCLut16bit(OriginalLut ->ContextID, nGridPoints, OriginalLut ->InputChannels, OriginalLut ->OutputChannels, NULL, 0); // Add the CLUT to the destination LUT cmsPipelineInsertStage(OptimizedLUT, cmsAT_END, OptimizedCLUTmpe); diff --git a/src/cmstypes.c b/src/cmstypes.c index f619458..6bfa32c 100644 --- a/src/cmstypes.c +++ b/src/cmstypes.c @@ -1718,7 +1718,9 @@ void *Type_LUT8_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cms Temp = NULL; - mpeclut = cmsStageAllocCLut16bit(self ->ContextID, CLUTpoints, InputChannels, OutputChannels, T); + mpeclut = cmsStageAllocCLut16bit(self ->ContextID, CLUTpoints, + InputChannels, OutputChannels, T, cmsCLUT_FLAGS_TRILINEAR_INTERPOLATION); + if (mpeclut == NULL) goto Error; cmsPipelineInsertStage(NewLUT, cmsAT_END, mpeclut); _cmsFree(self ->ContextID, T); @@ -2003,7 +2005,9 @@ void *Type_LUT16_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cm if (!_cmsReadUInt16Array(io, nTabSize, T)) goto Error; - mpeclut = cmsStageAllocCLut16bit(self ->ContextID, CLUTpoints, InputChannels, OutputChannels, T); + mpeclut = cmsStageAllocCLut16bit(self ->ContextID, CLUTpoints, + InputChannels, OutputChannels, T, cmsCLUT_FLAGS_TRILINEAR_INTERPOLATION); + if (mpeclut == NULL) goto Error; cmsPipelineInsertStage(NewLUT, cmsAT_END, mpeclut); _cmsFree(self ->ContextID, T); @@ -2226,7 +2230,8 @@ cmsStage* ReadCLUT(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUI if (!_cmsReadUInt8Number(io, NULL)) return NULL; if (!_cmsReadUInt8Number(io, NULL)) return NULL; - CLUT = cmsStageAllocCLut16bitGranular(self ->ContextID, GridPoints, InputChannels, OutputChannels, NULL); + CLUT = cmsStageAllocCLut16bitGranular(self ->ContextID, GridPoints, + InputChannels, OutputChannels, NULL, cmsCLUT_FLAGS_TRILINEAR_INTERPOLATION); Data = (_cmsStageCLutData*) CLUT ->Data; // Precision can be 1 or 2 bytes @@ -4111,7 +4116,8 @@ void *Type_MPEclut_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, for (i=0; i < nMaxGrids; i++) GridPoints[i] = Dimensions8[i]; // Allocate the true CLUT - mpe = cmsStageAllocCLutFloatGranular(self ->ContextID, GridPoints, InputChans, OutputChans, NULL); + mpe = cmsStageAllocCLutFloatGranular(self ->ContextID, GridPoints, InputChans, + OutputChans, NULL, cmsCLUT_FLAGS_TRILINEAR_INTERPOLATION); if (mpe == NULL) goto Error; // Read the data diff --git a/src/cmsvirt.c b/src/cmsvirt.c index d189cdf..b42ffb8 100644 --- a/src/cmsvirt.c +++ b/src/cmsvirt.c @@ -417,7 +417,7 @@ cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLinkTHR(cmsContext ContextID, nChannels = cmsChannelsOf(ColorSpace); - CLUT = cmsStageAllocCLut16bit(ContextID, 17, nChannels, nChannels, NULL); + CLUT = cmsStageAllocCLut16bit(ContextID, 17, nChannels, nChannels, NULL, 0); if (CLUT == NULL) goto Error; if (!cmsStageSampleCLut16bit(CLUT, InkLimitingSampler, (void*) &Limit, 0)) goto Error; @@ -753,7 +753,7 @@ cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfileTHR(cmsContext ContextID, } for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Dimensions[i] = nLUTPoints; - CLUT = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 3, 3, NULL); + CLUT = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 3, 3, NULL, 0); if (CLUT == NULL) return NULL; diff --git a/testbed/testcms2.c b/testbed/testcms2.c index 0a62384..e870aef 100644 --- a/testbed/testcms2.c +++ b/testbed/testcms2.c @@ -493,7 +493,7 @@ cmsHPROFILE CreateFakeCMYK(cmsFloat64Number InkLimit, cmsBool lUseAboveRGB) BToA0 = cmsPipelineAlloc(ContextID, 3, 4); if (BToA0 == NULL) return 0; - CLUT = cmsStageAllocCLut16bit(ContextID, 17, 3, 4, NULL); + CLUT = cmsStageAllocCLut16bit(ContextID, 17, 3, 4, NULL, 0); if (CLUT == NULL) return 0; if (!cmsStageSampleCLut16bit(CLUT, ForwardSampler, &p, 0)) return 0; @@ -506,7 +506,7 @@ cmsHPROFILE CreateFakeCMYK(cmsFloat64Number InkLimit, cmsBool lUseAboveRGB) AToB0 = cmsPipelineAlloc(ContextID, 4, 3); if (AToB0 == NULL) return 0; - CLUT = cmsStageAllocCLut16bit(ContextID, 17, 4, 3, NULL); + CLUT = cmsStageAllocCLut16bit(ContextID, 17, 4, 3, NULL, 0); if (CLUT == NULL) return 0; if (!cmsStageSampleCLut16bit(CLUT, ReverseSampler, &p, 0)) return 0; @@ -1420,7 +1420,7 @@ cmsInt32Number CheckReverseInterpolation3x3(void) Lut = cmsPipelineAlloc(DbgThread(), 3, 3); - clut = cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table); + clut = cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table, 0); cmsPipelineInsertStage(Lut, cmsAT_BEGIN, clut); Target[0] = 0; Target[1] = 0; Target[2] = 0; @@ -1492,7 +1492,7 @@ cmsInt32Number CheckReverseInterpolation4x3(void) Lut = cmsPipelineAlloc(DbgThread(), 4, 3); - clut = cmsStageAllocCLut16bit(DbgThread(), 2, 4, 3, Table); + clut = cmsStageAllocCLut16bit(DbgThread(), 2, 4, 3, Table, 0); cmsPipelineInsertStage(Lut, cmsAT_BEGIN, clut); // Check if the LUT is behaving as expected @@ -1811,7 +1811,7 @@ cmsInt32Number Check3Dinterp(void) cmsStage* mpe; lut = cmsPipelineAlloc(DbgThread(), 3, 3); - mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 3, 3, NULL); + mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 3, 3, NULL, 0); cmsStageSampleCLut16bit(mpe, Sampler3D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); @@ -1840,7 +1840,7 @@ cmsInt32Number Check3DinterpGranular(void) cmsUInt32Number Dimensions[] = { 7, 8, 9 }; lut = cmsPipelineAlloc(DbgThread(), 3, 3); - mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 3, 3, NULL); + mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 3, 3, NULL, 0); cmsStageSampleCLut16bit(mpe, Sampler3D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); @@ -1869,7 +1869,7 @@ cmsInt32Number Check4Dinterp(void) cmsStage* mpe; lut = cmsPipelineAlloc(DbgThread(), 4, 3); - mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 4, 3, NULL); + mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 4, 3, NULL, 0); cmsStageSampleCLut16bit(mpe, Sampler4D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); @@ -1900,7 +1900,7 @@ cmsInt32Number Check4DinterpGranular(void) cmsUInt32Number Dimensions[] = { 9, 8, 7, 6 }; lut = cmsPipelineAlloc(DbgThread(), 4, 3); - mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 4, 3, NULL); + mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 4, 3, NULL, 0); cmsStageSampleCLut16bit(mpe, Sampler4D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); @@ -1930,7 +1930,7 @@ cmsInt32Number Check5DinterpGranular(void) cmsUInt32Number Dimensions[] = { 3, 2, 2, 2, 2 }; lut = cmsPipelineAlloc(DbgThread(), 5, 3); - mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 5, 3, NULL); + mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 5, 3, NULL, 0); cmsStageSampleCLut16bit(mpe, Sampler5D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); @@ -1959,7 +1959,7 @@ cmsInt32Number Check6DinterpGranular(void) cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2 }; lut = cmsPipelineAlloc(DbgThread(), 6, 3); - mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 6, 3, NULL); + mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 6, 3, NULL, 0); cmsStageSampleCLut16bit(mpe, Sampler6D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); @@ -1988,7 +1988,7 @@ cmsInt32Number Check7DinterpGranular(void) cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2, 2 }; lut = cmsPipelineAlloc(DbgThread(), 7, 3); - mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 7, 3, NULL); + mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 7, 3, NULL, 0); cmsStageSampleCLut16bit(mpe, Sampler7D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); @@ -2967,7 +2967,7 @@ void AddIdentityCLUTfloat(cmsPipeline* lut) 1.0, 1.0, 1.0 }; - cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocCLutFloat(DbgThread(), 2, 3, 3, Table)); + cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocCLutFloat(DbgThread(), 2, 3, 3, Table, 0)); } // Create a MPE for identity cmsFloat32Number CLUT @@ -2990,7 +2990,7 @@ void AddIdentityCLUT16(cmsPipeline* lut) }; - cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table)); + cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table, 0)); } @@ -5009,11 +5009,6 @@ cmsInt32Number CheckBadTransforms(void) return 0; } - x1 = cmsCreateTransform(h1, 0, h1, 0, 0, 0); - if (x1 != NULL) { - cmsDeleteTransform(x1); - return 0; - } x1 = cmsCreateTransform(h1, TYPE_RGB_8, h1, TYPE_RGB_8, 12345, 0); if (x1 != NULL) { diff --git a/utils/jpgicc/jpgicc.c b/utils/jpgicc/jpgicc.c index c299c96..f110fb9 100644 --- a/utils/jpgicc/jpgicc.c +++ b/utils/jpgicc/jpgicc.c @@ -210,7 +210,7 @@ cmsHPROFILE CreateITU2PCS_ICC(void) AToB0 = cmsPipelineAlloc(0, 3, 3); if (AToB0 == NULL) return NULL; - ColorMap = cmsStageAllocCLut16bit(0, GRID_POINTS, 3, 3, NULL); + ColorMap = cmsStageAllocCLut16bit(0, GRID_POINTS, 3, 3, NULL, 0); if (ColorMap == NULL) return NULL; cmsPipelineInsertStage(AToB0, cmsAT_BEGIN, ColorMap); @@ -243,7 +243,7 @@ cmsHPROFILE CreatePCS2ITU_ICC(void) BToA0 = cmsPipelineAlloc(0, 3, 3); if (BToA0 == NULL) return NULL; - ColorMap = cmsStageAllocCLut16bit(0, GRID_POINTS, 3, 3, NULL); + ColorMap = cmsStageAllocCLut16bit(0, GRID_POINTS, 3, 3, NULL, 0); if (ColorMap == NULL) return NULL; cmsPipelineInsertStage(BToA0, cmsAT_BEGIN, ColorMap); |