Quote:
Originally Posted by
Chronoptimist 
4:2:0 out would allow the player to be a transport to allow a video processor or display to perform better quality upsampling. Instead you are reliant on the player's upsampling quality for that critical first step, which would ideally be the
only step, and why I recommend going to YCbCr 4:4:4 or RGB. Perhaps YCbCr is better for the display if what you claim is correct.
There are exceptions to everything... the HX909 displays are the first I've seen in a LONG time where RGB and YCbCr don't look identical. Most of the time you'll get the best results sticking with YCbCr 4:2:2 all the way to the TV - but checking the other options is always worth doing if somebody (reliable) hasn't already done it.
Quote:
Originally Posted by
Chronoptimist 
My display is capable of displaying RGB data. Or perhaps it internally converts to YCbCr as you say but keeps things at full chroma resolution. (4:4:4)
But if the signal originated as 4:2:0 YCbCr, it would never had had "4:4:4" worth of data in it... it will take more space to store & higher bitrates to transmit in 4:4:4 format, but it has no more resolution/information than the 4:2:0 images on the Blu-ray disc.
Quote:
Originally Posted by
Chronoptimist 
You could go straight from 4:2:0 to RGB and only do minimal upsampling (I would probably say "no" upsampling but it is not technically correct) and end up with low resolution jagged chroma. When I say 4:4:4 RGB I mean that chroma is properly upsampled to 4:4:4 and the image is converted to RGB.
Let's say you have 10 pixels encoded in 4:2:0 YCbCr and you convert them to RGB. When you are done, you will have 10 RGB pixels, each with a value between 16 and 235 for red, green, and blue. Pixel #1 from the YCbCr stream converts to pixel #1 in RGB. There will be only 1 set of RGB coordinates for each of the 10 pixels. A formula will be used to convert the YCbCr 4:2:0 data to RGB... 3 coordinates in, 3 coordinates out in a different color space. There is no more information in the 10 RGB pixels than there was in the original 4:2:0 pixels. (this all assumes both signals are in 8-bit space, but converting 8-bit YCbCr to 16-bit RGB wouldn't produce any more data either.
Quote:
Originally Posted by
Chronoptimist 
There are clear visual benefits upsampling to 4:4:4 instead of 4:2:2, and some video sources such as console games and computers natively render in RGB and therefore require full chroma resolution.
There won't be if the conversions are all done equally well or if both streams of data are processed "equally" because 4:2:2 YCbCr has 16-235 levels for Y, 16-240 levels for Cb, and 16-240 levels for Cr. 4:4:4 also has the same number of levels for each coordinate. 4:2:2 has HALF the color data removed. 4:4:4 has none of the color data removed. Human vision cannot see the difference between 4:2:2 and 4:4:4 provided both images are displayed and "processed" the same. We see about 200x200x200 colors... 8 million. Any more than that and we don't see the transitions. Full range RGB produces 256x256x256 colors, about 16.8 million. All those additional 8 million colors are UNDETECTABLE so they are meaningless. 4:2:0 has even MORE color information removed, but we're still slightly over the 8 million color threshold.
That said... those 8 million colors have to be used correctly or we see contouring or other issues... though contouring is more often a result of losing bits than it is anything else. That can happen in non-robust processing paths. You can lose a whole bit of resolution if you are not careful... then there are not enough steps to make smooth-looking fades without visible contouring.
Quote:
Originally Posted by
Chronoptimist 
Wrong. MPEG data is 4:2:0. Due to the HDMI spec this MUST be upsampled to at least 4:2:2 or 4:4:4. Depending on the display you may also want this to be converted from YCbCr to RGB.
1. If you are performing a YCbCr to RGB conversion you immediately have significantly more than 8-bit RGB data if you want to avoid rounding.
2. Upsampling creates intermediate values and greater than 8-bit data is required to avoid rounding.
Clipping is one issue but you seem to be ignoring rounding errors which introduce posterization or banding.
It doesn't matter how much data you have. What matters is what you can SEE... you can SEE 8 million colors... no more. YCbCr 4:2:0 has enough data to produce more than 8 million colors. Anything more than that accomplishes nothing since we can't see more data.
1-No it doesn't. YCbCr is 8 bits whether it is 4:2:0 or 4:2:2 or 4:4:4 (in our consumer home theater world). RGB is also 8 bits
Y is allocated values of 16-235 within the 256 value range of 8-bit data
Cb and Cr are allocated values of 16-240.
That means YCbCr in all 3 formats can produce 219x224x224 colors.
RGB will be limited to 16-235 for red, green, and blue so you'll get 219x219x219 colors from RGB. YCbCr actually has more color data because more bits are allocated to Cb and Cr.
2-"Create intermediate values" When you convert 10 pixels of YCbCr to RGB you get 10 pixels. There are no more "intermediate values". There are 1920x1080 pixels for red, green, and blue in the TV... just over 6 million for 1 frame. There are 16 million YCbCr pixels per frame regardless of whether they are in 4:2:0 or 4:2:2 or 4:4:4 format. The TV can only display red, green and blue in 16-235 or 0-255 format. There are no more pixels in the image than just over 6 million and those are defined by the 6 million YCbCr or RGB individual pixels worth of 8-bit data.
You would only get "more data" if you changed from 8-bits to 10 or 12 or 16 bits, but you would never see the difference and the panel still works in 8-bit space. You see 8 million colors and no more. If you send billions of colors, it is meaningless because only 8 million colors (or so) can be detected by human vision.
Now... if the processing of 4:2:0, 4:2:2, 4:4:4 and RGB are not all identical, certainly one format or another could look better. That seems to be the case with the HX909. But everything being equal, most of the time, the optimum path would be to maintain the YCbCr 4:2:2 data that comes out of the disc player all the way through the playback chain to have the fewest numbers of conversions - which SHOULD produce the fewest errors.
10 bits, 12 bits and 16 bits really only improves anything in that they make it more difficult to make mistakes that become visible. In 8-bit space that we have for consumer video, if everything is 'perfect' we see no contouring or posterization or anything else. If you ever see contouring or posterization or other digital artifacts, they were PUT there either in the master or by some processing step in the signal chain. They are MISTAKES... make a mistake while using 8-bit data and it will almost always become visible. For example, cable, satellite, and broadcast TV have only 6 or 7 bits of equivalent resolution because even though they START with 8-bit video, they compress it so much that the result is equivalent to about what you'd get from 6 or 7 bits of data.
In 10 bit space, it is more difficult to make a mistake that becomes visible, but it can still happen... you can still get contouring or posterization or visible block artifacts. It's harder to produce, but still possible. 12-bit data has so much "headroom" for errors that it's unlikely human vision could ever detect anything other than a fairly gross error. Video processing needs to happen in 10-bit or higher space because if you, for example, have 8-bits of data like 11111111 and to make the picture right, you have to go 1 step higher... there are no more higher steps in this 8-bit data. If you are in a 10 bit path, your 8 bits of data might look like 0011111111 or 0111111110... more than likely you wouldn't put the additional bits both in the least significant positions. So now you're +1 that you need from some control setting would become 1111111100 or 0111111111 depending on which scheme you are using. It's not that there's "more data" it's that there's more room to work with the data to get it to where you want it to be. And even though the data path may be 10, 12 or even up to 18 bits (Samsung uses 18-bit data paths), we can only see 8 million colors - easily accomplished with 8-bit YCbCr even in 4:2:0 format - if it is done without errors. You would actually round YCbCr DOWN a bit to put it into 8-bit RGB since there are more data bits in 8bit YCbCr than there are in RGB. If you're going to RGB and... AT THE SAME TIME, 10 bits or more... then the rounding errors would be smaller... But even in 8-bit space, the rounding errors SHOULD be so small they fall outside of that 8 million color limit of our vision system - unless a mistake is made - and that's always possible.