Quote:
Originally Posted by hwjohn 
I think your way would be more accurate, but has anyone thought about the fact that you are throwing away some of your bit depth? If you perform the gamut twist, then it looks like RGB values will be clipped at some value less than 235 (say 220), which means you have thrown out 15 luminance values that would have been there if you were using an SMPTE-C gamut. You effectively have less "shades" to represent the gamut than you would if you were using an SMPTE-C gamut to begin with. Any adverse effects to this?

I think your way would be more accurate, but has anyone thought about the fact that you are throwing away some of your bit depth? If you perform the gamut twist, then it looks like RGB values will be clipped at some value less than 235 (say 220), which means you have thrown out 15 luminance values that would have been there if you were using an SMPTE-C gamut. You effectively have less "shades" to represent the gamut than you would if you were using an SMPTE-C gamut to begin with. Any adverse effects to this?
To answer your question strictly: Yes. As a matter of fact, I have thought about it.

To be a little less cavalier: You lose dynamic range when going from YCbCr to RGB no matter what you do. Quite simply: the color space for YCbCr is a form of lossless compression, so you already face this issue. It gets worse, in fact, once you start implementing the xvYCC (xvColor). Since xvColor uses even more of the existing 8-bit YCbCr data containers, you face an even bigger problem than this little exercise.
To your specific point about clipping: this is why you do not clip at 16 and 235. As I said before, there is a reason for the head and toe room, and this is one of those uses.
Bill











(Yep, I'm too lazy to gut it out...)



