ICC meta tag in device profiles

The meta tag is supported since quite some time in Oyranos. Now this functionality is integrated into kolor-manager, the Oyranos front end for KDE’s systemsettings panel.

development version of kolor-manager with meta tag support

The meta tag allows to rank a given set of ICC profiles with a device. For that to work device characteristics and possibly driver informations need to be stored in the ICC profile. The meta tag accepts key value pairs. This is pretty much the way how many configuration systems are build.

ICC profile with meta tag shown in ICC Examin

Most keys originate from the monitors EDID block. The EDID block is a data sequence containing lots of useful informations. For colour management purpose are only a few bits relevant. Parsing and interpretation of the EDID informations does the libXcm to supply a common set of keys, which can be shared among different applications to easily understand each other. We store here the:

  • manufacturer - this might be as string available
  • mnft - contains a decoded 2 byte field
  • model - can be a string
  • serial - likewise
  • week and year - can be influential to production series
  • mnft_id and model_id - map to similar keys already present in other operating systems
  • colour_matrix_text_from_edid_redx_redy_greenx_greeny_bluex_bluey_whitex_whitey_gamma - is a very long key name and contains the comma separated colorimetry as found in the EDID block

One question might be why not store the EDID block itself inside the ICC profile. The tag for that is already defined. The EDID block is a static piece of information. The meta tag is much more elegant in that the values are human readable and single keys can be much more flexible compared to each other.

Additional driver informations are included as well like host, display_name and display_geometry in the above example. They are useful for the local Oyranos data base. For exchange with other computers these keys might be better stripped out.
How do these keys and values come inside the ICC profile? The development version of Oyranos in git has a simply API for adding a device object to a profile object. All text information is placed inside the meta tag. The oyranos-monitor tool accepts a EDID data block and a ICC profile and embeds the libXcm provided keys and values just without the driver information. So it is possible for a person who has profiled a device to ask Oyranos for the EDID of the local device by:
$ oyranos-monitor -f=edid -o=edid.bin
and then add the colour management information to the fresh ICC profile:
$ oyranos-monitor -add-edid=edid.bin -profile=MyNewProfile.icc

The MyNewProfile.icc profile can now be shared among other computers or users. It will magically appear in the fist line of the kolor-manager profile selector if the devices match otherwise not.

What next? It would be amazing if that ranking could be used to implicitly automatically select that ICC profile. Then installing a properly tagged ICC profile will automatically improve the unconfigured desktop, provided a system like Oyranos is used to understand the meaning. But thats not enough. Of course a vendor might decide to massage the key values inside the meta tag, in order to support a series of devices with the same ICC profile. For that Oyranos will have to learn understanding the complete syntax of the ICC meta tag specification, especially the value range feature.

I have focused on monitors, as this the most advanced supportable device class on Linux systems through the CompICC colour server and the various specifications for X colour management. Other device classes will surly profit from a similar approach. For that the keys and the meaning of the according values has still to be defined. The ICC meta tag adds a very useful tool for that to happen.