Hi,

We've recently discovered that Darktable's (a photography application)
internal sRGB profile seems to encode a D50 whitepoint even though we
are passing a D65 whitepoint. The current theory is that this changed
when we migrated from lcms1 to lcms2.

This is our code:

https://github.com/darktable-org/darktable/blob/master/src/common/colorspaces.c#L189

So the big question is why lcms2 seems to be ignoring the whitepoint
we pass along? Are we doing something wrong?

Could this bit of code in cmsvirt.c explain it:

    if (WhitePoint) {

        if (!cmsWriteTag(hICC, cmsSigMediaWhitePointTag,
cmsD50_XYZ())) goto Error;

        cmsxyY2XYZ(&WhitePointXYZ, WhitePoint);
        _cmsAdaptationMatrix(&CHAD, NULL, &WhitePointXYZ, cmsD50_XYZ());

        // This is a V4 tag, but many CMM does read and understand it
no matter which version
        if (!cmsWriteTag(hICC, cmsSigChromaticAdaptationTag, (void*)
&CHAD)) goto Error;
    }

Is D65 encoded into a different tag, and the old tag is defaulted to D50?

Also, we noticed lcms2 seems to default to ICCv4:

 cmsSetProfileVersion(hICC, 4.3);

Is there any way we could stick with ICCv2 (for greater compatibility)?

Regards,
Pascal de Bruijn

Attachment: dt_srgb.icc
Description: Binary data

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to