ColorManagementNearX

Color Management Near X

This page describes my GSoC2008 project to explore possibilities of color management near the X stack and implement parts of it. Also see OpenICC project proposal.

About Me

I'm Tomas Carnecky (tom@dbservice.com), a computer science student at Lucerne University of Applied Sciences and Arts (Switzerland). I started experimenting with Linux around 2000, and I've been using Linux exclusively soon after that. Unfortunately I can't remember when I started programing, but it was probably around the same time. I started with C and I've stuck with it.

My main interests are everything that has to do with visual aspects: video coding and streaming, graphical user interfaces etc. In the past I've worked on several opensource projects such as Wine and I'm maintaining yukon, an application for capturing videos of OpenGL applications (games).

Current state of Color Management in X

Around 1991 a color management library for X was introduced (http://insar.stanford.edu/~lharcke/programming/Xcms/). Color management has changed a lot since that time. Today we have ICC (http://www.color.org/) which publishes standards around color management. ICC didn't exist at the time Xcms was designed, but ICC profiles are de-facto standard today. Because of the limitations in Xcms, most projects use one of the third-party frameworks and color management modules. This makes interoperability very difficult. Xcms never really picked up, no major application uses it.

Both Microsoft Windows and MacOSX include an API to deal with color management. These APIs provide a complete set of functions that cover most of the functionality needed in applications.

Goals of the project

The primary goal of the project is to explore the possibilities of a X11 library for color management. This library should be designed to enclose all the needs of applications that need color management. The exact needs are to be determined in discussions with application developers. An implementation of this library will require an extension to the X11 protocol to encapsulate the communication between X clients and the server.

One of the requirements of the protocol is to be able to attach color profiles to windows (or regions of windows). Such information can be used by window managers to automatically convert the window contents into the display device colorspace, and do that transparently to the application owning the window. Recent window managers that use OpenGL (compiz) could also take advantage of the GPU when doing the colorspace conversion. A second goal of the project is to implement a module for colorspace conversion in the GPU and use that in compiz.

Roadmap

Since I need feedback from application developers about the exact requirements of the X11 library, I'm planing to join the LGM to meet as many developers as possible in person. LGM2008 is held 8-11th May in Wroclaw. After I have the requirements I can start implementing the library. This will take approximately three weeks. After the library is implemented I can start working on the Oyranos module for GPU-accelerated colorspace conversion. Depending on the complexity of Oyranos this could take two weeks. The most difficult part will be to integrate the OpenGL code into the existing Oyranos framework. After the Oyranos module is finished I can start writing the compiz module that applies the colorspace conversion on windows that request it. If Oyranos has an easy-to-use API this task could take two weeks, including converting one graphics application to make use of the new color management library.