Tuesday, August 28, 2007

Ideas on "remote monitor profiling"

Recently I was exchanging e-mails with some french fellows that use xcalib under Linux in a professional environment. They are using a remote monitor profiling trick.

Okay, how does it basically work:
  1. They have one Windows laptop, running a ICC profile generation software. On this laptop a VNC server is running. A colorimeter is attached.
  2. There' the Linux PC with the to-be-profiled monitor attached. It has a VNC client installed, displaying the Windows screen.
They are then running the profile generation software and get a valid profile for the Linux PC out of this process.

I'm still not completely sure whether xcalib should be involved somewhere in this process (I tend to think that the Linux PC is not calibrated when the attached display is profiled). But I have an idea:

What about intercepting the Windows calls to

BOOL WINAPI GetDeviceGammaRamp(HDC hDC, LPVOID lpRamp );

BOOL WINAPI SetDeviceGammaRamp(HDC hDC, LPVOID lpRamp );

Whenver one of these Win32-API calls is issued by the calibration software, something like an RPC is issued to the Linux PC which then sets the LUTs there. So what I'm trying to say is: The profiling software is running on the Windows laptop but calibrates and profiles the Linux PC and the attached monitor.

Since I'm not too familiar with RPC I would probably do it with ssh - the Windows PC has the right key to connect to all to-be-profiled Linux-PCs and calls xcalib there. Okay, xcalib can't do it currently, but that's not a big deal to extend it for a read from stdin feature.

The same with intercepting: I have never done it before. Don't know whether it's easy to do it. But as soon as time permits I will probably try it out.

No comments: