Does Darktable support device linked ICC?

I created a device linked ICC profile from ArgyllCMS for softproofing.

I tried to find somewhere in darktable to add this. I tried softproofing but I think just works for a normal ICC device profile.

Is there some easy way do this?

This is an example of how I created the device linked profile.

#Argyll Usage Scenarios

I understand that LittleCMS can work with device linked profiles, as of course ArgylCMS and other tools like photoshop etc.

EDIT: this also applies to Rawtherapee and solution is probably very similar.

if its compatible …copy it to the config folder… location is OS specific and in the …/color/out directory… it should be available to select for softproofing if it is compatible… you need to select it as the softproofing profile… Ah I just went back and read your link… not sure about that…

No it does’t. Darktable softproofIing at least as how I tried it does not work with device linked proflles as is. I understood LittleCMS can use them, I was just wondering if there something I was missing to allow them to work. I have turned on use LittleCMS as the default.

be a nice enhancement if it could.

I’m just curious how would you use this…

Softproofing. The Softproofing in darkable is pretty basic, all the logic is to convert from one device to another is in darktable.

Where as device link profile has the logic precomputed to get from one to other in a LUT. For example i created a device link profile as per the example from my profiled monitor to a profiled printer with the following .

‘We use the Luminance matched appearance intent, to preserve the subjective apperance of the target device, which takes into account the viewing conditions and assumes adaptation to the differences in the luminence range, but otherwise not attempting to compress or change the gamut.’

That s my understanding. I definetly get better results, if use this type of profile manually using cctiff in arglycms compared to the results I got from darktable.

BTW I am new to darktable, I used to used other tools before.

What happens when you out the ICC in color/out and try to select it in darktable?

After checking that littleCMS was enabled, i selected it it put a message about unsupported profile and then crashed. Though another time it i thinkit it may gave that message before switching to something else.

Here is the file. I tried creating a simpler one using colimetric intent, but same problem.

softproof_snapysnapsA4_CUSTOM1_ONESTEP_65K_120NIT_native_32pc.icc (37.1 KB)

actually I did manage to grab this

13.1638 [lcms2] error 9: Wrong output color space on transform
13.1639 unsupported output profile `system display profile' has been replaced by sRGB!
13.1639 [lcms2] error 9: Wrong output color space on transform
13.1796 [lcms2] error 9: Wrong output color space on transform
13.1797 unsupported output profile `system display profile' has been replaced by sRGB!
13.1797 [lcms2] error 9: Wrong output color space on transform
13.1798 [lcms2] error 9: Wrong output color space on transform
13.1798 unsupported output profile `system display profile' has been replaced by sRGB!
13.1798 [lcms2] error 9: Wrong output color space on transform
13.4533 [lcms2] error 9: ColorSpace mismatch
13.4535 [lcms2] error 13: Couldn't link the profiles
13.4535 [_transform_rgb_to_rgb_lcms2] cannot create transform

Segmentation fault (core dumped)

EDIT: Actually I found the code, and the required API change

It calls xform = cmsCreateTransform(input_profile, input_format, output_profile, output_format, intent, 0);

in iop_profile.c

It needs to trap this error and or identify the profile before hand, and call

hTransform = cmsCreateMultiprofileTransform(&hDevicelink,
1,
TYPE_RGB_8,
TYPE_BGR_8,
INTENT_PERCEPTUAL,
0);

instead, and then

That’s all. Little CMS will understand and transparently handle the device-link profile. Note
the first parameter is an array of handles, so you can use ‘&’ in this particular case. Another
option is to use the device link profile as input and the output profile parameter equal to
NULL:

My C skills way to rusty… I will see if I can get a compiled version and make the change. But it should be just a few lines of code, even if you just retry the call with rearranged parameters.

RawTherapee basically has the same problem, I have that compiled already, so I will prototype a change for that first, and see if do the same for Darktable if I can get it compile :grinning:. Is this correct place to talk to developers, to get a patch in?

I would say no… there is a template and you can put in a feature request on Github… Discussion would then happen around that…