Simon said something that prompted me to thoroughly review my notes, and I discovered that I made a mistake. I ran many combinations of ranges and sample values through the different equations in the BT.709 specification, to the point that my notes got messy and I accidentally associated full-range values with the table 3.5 equations. As it turns out, the equations in table 3.5 operate on limited range RGB, as in studio 0-219 with a +16 lift. This is what Simon meant by “0 to 254 will require slightly different colour matricies” and he was right. So I apologize for giving bad information regarding table 3.5. However, this doesn’t have any impact on any other claims or conclusions.
Since many people have expressed concern over the existence of full-range BT.709 as a standard, I realize that nothing short of documentation will break a stalemate. So, I present a memorandum from the Joint Video Team of the ISO/IEC and ITU. I chose this particular document because it treats full-range BT.709 as a first-class citizen, and then goes on to demonstrate that it has a 1.2 dB PSNR advantage over its limited-range counterpart. This is why many camera companies prefer to use full range video as the acquisition format. It provides a little extra stretch latitude during color grading before banding appears. After all, 8-bit video needs all the help it can get. There is logic to the madness.
This link to the memorandum goes directly to a Microsoft Word document:
https://www.itu.int/wftp3/av-arch/jvt-site/2003_09_SanDiego/JVT-I017-L.doc
The key is to remember that BT.709 specifies both a color space and a broadcast standard. As a YCbCr color space, full range is the default just like any other YCbCr color space. Using the full bit depth to represent color slices from total white to total black is implicit in all core YCbCr color space definitions I’ve seen. The idea of using a limited subset of the full bit space available is an additional constraint because there is no other intuitive reason to throw away valuable bit space. This is why the very name “limited range” sounds like it is less than something bigger, less than something better, less than something “fuller”. The specification designers didn’t create a range called “limited” without also defining something “not limited” to go with it. They tried to make the naming convention easy on us.
So yes, “full” is the standard for the BT.709 color space which is then “limited” for the sake of the BT.709 broadcast standard. But any signal not going to broadcast is welcome to stay in full range, and it will be official and fully supported. The disjointed industries of media players, camera manufacturers, and video editors didn’t just happen to implement the same ad hoc full-range idea together… they all play nice together because full range is an actual standard defined by BT.709 color space. Full range does require a different set of equations than what is found in the BT.709 document, but that’s fine. The full equations still operate on the same color primaries, white point, transfer characteristics, etc. The limited equations in table 3.5 are simply optimized versions of the full equations to factor limited range directly into the math for convenience. That’s why the Cb and Cr equations have “multiply by 224/219” in them, because it’s a scale factor from 0-219 RGB to 16-240 CbCr. These are clearly derived from the full equations, and I should have realized that earlier while reviewing my test results.
Hopefully with the “full range BT.709” hurdle out of the way, the rest of this thread can make more sense just the way it reads.
Earnest question… does anybody know why we still use limited range for digital television? I remember it being relevant for analog television channels, but as Chris mentioned, those concerns don’t exist anymore. So why do we continue to compress the color range? What value does that provide? Legacy reasons? Were older televisions designed for 0-219 RGB instead of 0-255?