Encoded Video Color Errors
I find this disturbing.
I created a .bmp image containing the primary and secondary colors. I then encoded this image to various video formats and checked the color reproduction using an eyedropper-like program.
When the .bmp image is viewed using a program such as Windows Paint, the colors are true.
Encoding the test image to video introduces myriad color errors.
The images were encoded using the encoders found here:
All files are local. There is no uploading or viewing on YouTube, Vimeo, etc.
The table below lists the color errors for one color, magenta, when the image is played using VLC.
The files are played back on the Chrome browser. When the unencoded bmp file is opened directly in Chrome, there is no color error.
The only consistency I see is that VLC and Chrome played back the H.264 file identically. This could be due to both programs using the GPU color tables. They are, however, both incorrect.
It is interesting to note that on the same player, Theora (OGV), H.264 and VP8 all generate different errors, suggesting that there are errors in the encoders themselves. for Theora (OGV) and VP8, the errors are different from one player to the next, suggesting that there is also error in the players.
I have written much code which converts RGB to a color space such as BT.709 and back. It is straightforward to do, so it is difficult to understand why these errors have crept in.
The test pattern image can be viewed here (please note that the YouTube image is not the image used for these measurements):
The typeface is Libre Franklin. There are also patches for checking resolution at 720 x 1280.
the problem is color management by 3rd parties and if the full range is even being used. 0-255 or 16-235. some media players like media player classic support color management but vlc doesn't. quicktime has FCP legacy properties support(1.8 or 2.2 gamma). If you upload a DnxHD to youtube, the picture will be perfect because the encode darkens the image and youtube lightens it again. This is from 16-235. Often, if the codec doesn't support color management, you can use after effect's utility color profile converter to "burn" in the correct color profile.
There isn't much standardization because each codec has their own particular issues and the programs that interpret them.
It often boils down to trial and error, logical deductions, to finally get a correct working workflow.
As an old NTSC man I don't see a need for color profiling in video *IF* we all stick to the same standard, say, sRGB: gamma 2.2 (actually the sRGB version of 2.2) and the BT.709 color space, and that is a big IF. That would apply to the guy uploading his h.264 .mp4 video to YouTube or Vimeo, or even broadcasting that same video over the air or on cable. The cynic in me says color profiling won't be a panacea because they can't even get the colors right in the most straightforward situation, as my testing proves.
When BT.2020, 4K and 12-bit video become the norm, they may have to rethink sRGB because the color space and transfer characteristic are different.