[OpenICC] X and colour management

Kai-Uwe Behrmann ku.b at gmx.de
Wed Feb 9 05:04:48 EST 2005


Hello all,

this email takes an small look at the current situation how 
applications can do colour management under X. I further try to show 
differences of an X integrated colour management and an application based 
colour management. An (yet fuzzy) proposal of an Xlib informational, 
hardware API follows.


Situation:

the used components for displaying accurate colours on an display are:
o grafic card or monitor holding 3 one dimensional video LUTs.
o colour transformations on server side exist in the Xcms API
o colour transformations inside the application, accessing an CMM in 
  the applications responsibility
o selfcalibrating systems (not widely used, because of costs)


Pros and cons:

benefits of an X integrated solution:
Xlib LUT API:
o putting an gamma LUT in the X server seems no problem for single monitor 
  systems (tested with xcalib)
Xcms (possible future):
o colour management all ! content on screen (needs to extend the API ?)
o potentially works across APIs - XV, Xinerama, normal window ...
o hopefully well optimised (otherwise switched off by users)
o minimal programming effort for applications, which have nothing in mind 
  with colours, like wordprocessors
o leading to an colourimetrically consistent desktop

benefits of an application based colour management:
o possibly implement and use own algorithms, additional hardware drivers..
o provide switches for an bunch of situations, which may be overkill for X
o informational transparency and thereby control of manipulations in 
  colour critical work (open source only)


colour management inside and outside X shows (currently) many problems:
LUT access:
o no X API to transport gamma curves into the monitor LUTs over the video 
  cable (needed to not narrow the 8-bit limit further)
Xcms:
o API is not very popular
o not optimised
o not used(?)
o not ICC conform
application level colour management:
o multi head and similar concepts need much knowledge inside applications,
  which region has which profile assigned to
o detection of hardware is currently difficult with X (no direct API ?)


The question is:  will Xcms continue - how?

As the integration of colour management in applications goes on, an 
coexistence of self managing and X side colour management would be nice. 
This allows applications to use only one colour transformation from an 
colour space of choice to the displays/screens colour space.


Hardware information API in Xlib:

Reading out the EDID information (as proposed by Egbert Eich) and 
interprete it regarding model information, seems possible. I dont know how 
stable this is throughout different implementations.
I found no way, other than looking directly in the X config file, to find 
out the model name of the grafic card + ID number over Xlib. An 
dedicated API for this informations would be highly welcome.
The API could be added to <X11/extensions/xf86vmode.h>, as there resides 
the gamma access functions allready. The XF86VidModeMonitor is not useful 
as it only reflects the config entry which is free selectable and not 
stable over distributions and configuring tools. An hardware dependent 
string like the EDID information is unique, provided it is commonly 
interpreted. 

The reason to get this information over X is simply, it has an good 
network background, many applications will lack. Xlib could tell where it 
runs and on what hardware. With this information an future Colour 
Management System will be able to tell about the adequate profile, either 
to X and to any interessted application.


regards
Kai-Uwe Behrmann
                                + development for color management 
                                + imaging / panoramas
                                + email: ku.b at gmx.de
                                + CMS proposal <www.behrmann.name>




More information about the openicc mailing list