I have a question regarding a weird color difference I observed.
I created a .bmp picture containing 255 white, 0 black, 255 green, 255 red, 255 blue and other colors. I used Premiere Pro to export it in several formats: H264, MPEG2 and WMV.
The result is summarized in the attached file. Media player classic, and premiere pro display the video exactly as the original bmp whereas VLC, Youtube and Vimeo do a weird color shift. The red goes from (R-255 G-0 B-0) to (R-232 G-0 B-0) and the blue goes from (R-0 G-0 B-255) to (R-0 G-0 B-242). Black levels and green are not affected.
Note that this color shift is observed nowhere with the .WMV video whereas H264 and MPEG2 are both affected.
Am I the only one to get this ? How can it be explained ?
+ Reply to Thread
Results 1 to 2 of 2
Probably a few things going on , including your local setup configuration (driver, settings ,GPU settings, renderer).
When you convert to end distribution formats such as MPEG2, WMV, AVC (in YUV, but AVC also supports RGB) , they are usually in YUV. How you convert to YUV, and how that video gets converted BACK to RGB for display affects "what you see"
On a proper setup, YUV<=>RGB conversions will lead to some quality loss and rounding errors (in addition to compression losses), but it should be close. Ie - on display it might be 254,0,0 instead of the source 255,0,0 for pure red . Not the large shift that you describe
The other issue is what matrix is used for RGB<=>YUV conversions. Notably ITU Rec 709 vs. Rec 601 . By convention, HD uses 709. The colors are slightly shifted if the wrong matrix is used. If the same matrix is used for both conversions to YUV and back to RGB, you end up with the same thing (with the slight rounding errors)
Youtube used to use 709 for everything when converting to RGB for display , at least it used to (not sure about recently) - so SD videos looked slightly "off" when used the standard 601 to convert to YUV
Local players tend to do it by width of video. If it's > a certain dimension, they will use a 709 matrix, 601 otherwise. Others can be configured read flags (709, 601, Full vs. Standard range) , or if video is unflagged, it will use a 2nd set of rules based on dimensions. So if you converted the RGB BMP in a certain way to YUV, but the player is using another method to convert the YUV back to RGB , you willl see something different - that is the most common explanation
The other common explanation is your GPU /configurations settings or playback chain, or renderer settings. The choice of renderer can make the same video look completely different in terms of levels
If you want to go through the process of debugging, you'll have to do it step by step - first how did you convert to YUV (how did you convert from the RGB BMP to something else ? , and what dimensions, what matrix etc...)