[Openicc] XICC specification draft
Chris Murphy
lists at colorremedies.com
Wed Jun 29 13:16:58 EST 2005
On Jun 28, 2005, at 3:10 AM, Kai-Uwe Behrmann wrote:
> About the general option I would agree. Nethertheless tagging with the
> display profile instead of declaring the image is prematched is
> dangerous.
>
The net effect is the same, if the system and the xserver get the
profile from the same location, you are assured that they are the
same and that a null transform will occur. But I think an explicit
"off" switch is preferable because it's very clear, whereas the null
transform approach involves redundancy and an explanation of the
concept.
> Someone explained on this list how profile sizes can be striped down.
>
If it was recent and was with respect to output profiles, and remove
1 out of 6 of the tables, that was me. :) That's perfectly doable,
it's not a profile in an actual file but rather in a data stream to a
specific destination (the display), so subsetting them is
straightforward.
> A
> simple mechanism, which relies on MD5 checksums, would not
> understand the
> X screen and the image are tagged with the same profile and would
> repeat the
> conversion. This is approach is in my opinion a workaround only for
> existing systems. We dont need to implement such limitations.
>
Well, again with respect to applications that prematch to the
*display* profile, there is no reason why they would grab a display
profile other than the one the xserver is using.
The situation of null transform philosophy that does not work where
it should, is really another discussion and is an important one, but
much more complex than what we're talking about here. That
conversation is about figuring out a clear threshold function (which
can be different depending on the sophistication of the end user) for
assuring a null transform. For matrix profiles it's easier to check
primaries and tone response, ignoring the name of the profile
(filename or internal name) and other factors, to determine null
transform. But for output device profiles this is a common problem,
especially for CMYK because it depends on context.
For example, if source is TR 001 (colorimetric data set for SWOP)
based, and the destination is also based on TR 001, but the profiles
are built with different profiling packages, you will invariably get
a conversion. In many cases you will NOT want such a conversion, but
in some cases - such as a difference in black generation - you would
want a conversion, but surely not by default. However the threshold
functions thus far do not work well (maybe not at all) for output
device profiles that aren't essentially identical.
>
>
>
>> Or it could be merely tagged as "intentionally device dependent."
>>
>>
>
> We should support this instead. This can be made a simple flag and
> is much
> more clear.
>
I agree. In any event the application must specifically request this.
This is important because I think it is very necessary for
applications of the "average" sort to get the minimum/basic display
compensation form of color management for free, because of the
looming issue with a wide variety of display device capabilities in
the future.
>
>
>
>> 2. Application is not color managed and simply sends what it
>> things are device
>> dependent drawing commands using today's APIs. An updating
>> compositer/xserver
>> simply says "aha, ignorant application, I will assume these values
>> are tagged
>> sRGB for the source profile and perform display compensation using
>> the
>> destination profile." Anyone who wants to prevent this from
>> happening and
>> doesn't care about display compensation can simply set the display
>> profile to
>> sRGB and again get a null transform.
>>
>>
>
> The same here, basically agree -- null transform is no option. A flag
> would do a better job.
>
No flag required. My suggestion requires an updated xserver (or
wherever it is, not sure since I'm not a programmer) that arbitrarily
takes control for any application that does not explicitly ask to be
freed from display compensation. The app needs to do nothing at all
different today to get basic, source RGB is assumed to be sRGB and
destination is assumed to be current display profile and display
compensation occurs automatically. If this is not desired *THEN* the
application developer needs to do something (like opt out), or if
they want better quality than sRGB as the assumed source to opt-in by
explicitly tagging the RGB data stream with something other than
sRGB. And I think it's perfectly acceptable to propose only matrix-
based profiles can be used as this "normalized" profile space by the
higher end apps.
>
>
>
>> 3. application is color managed, but wants to opt for normalizing
>> to some
>> larger gamut space (a system compositing space perhaps), so that
>> it doesn't
>> have to negotiate display compensation itself, especially for
>> multiple
>> displays, rather allowing the xserver to do this. But the
>> conversion still
>> needs to be to a space that has a sufficiently wide gamut in order
>> to not
>> cause clipping in the event the display being used is a wide gamut
>> display.
>>
>>
>
> IMO we will need a lot of time to have a full covering
> implementation of
> server side colour management. Anyway it's highly desireable.
>
Yeah. I'm suggesting *all* three of these features be implemented by
the xserver. Not as a list of choices. Those three are choices for
applications - one of them *will* apply.
1. Explicit request to opt out, device dependent, prematched.
2. "For free" sRGB assumed source, display profile is destination,
display compensation. Application developer needs to do nothing
different than they are today.
3. Explicit request for something other than sRGB as source, by
tagging RGB data submitted display.
Chris Murphy
Color Remedies (TM)
www.colorremedies.com/realworldcolor
---------------------------------------------------------
Co-author "Real World Color Management, 2nd Ed"
Published by PeachPit Press (ISBN 0-321-26722-2)
More information about the openicc
mailing list