Hi! This is my first post on this forum, and I hope someone will be able to help me or offer an opinion regarding my problem
I've had this problem for over 3 years now, ever since i bought my laptop (dell vostro 1700).
I have been using windows Vista for 2 years, and windows 7 for a year now. Problem was present during all that time. Also, during that 3-year period I updated my k-lite codec pack (with media player classic) maaany times and my VLC player aswell, and my graphics drivers aswell (nvidia 8600M GT). Right now I am using latest version of all of which i just talked about.
So the problem is that colors are displayed incorrectly in both mpc (media player classic) and VLC player.
And since it's close to impossible to describe it in words, here is an image of what I'm talking about:
explanation: It's a side by side comparison of how a video file looks in vlc, mpc, vdub and original image.
I made this by googling a good calibration image, then converting it into a short image sequence using sony vegas, and converting that to a h264 vfw encoded .avi file using virtual dub. I'm somewhat experienced when it comes to video encoding (although I'm not a pro), so i believe i did everything correctly to setup this test. I then opened a video side by side in both players, and also in virtual dub, and then screenshoted them and arranged them in photoshop so it perfectly shows side-by-side comparison of how colors and contrast are displayed differently then they should be.
Also, if someone thinks this is due to my encoding process, i assure you i used very high quality settings when encoding, so the video should look as the original image that its frames are made of. And on top of that, when opening a h264 .avi file in virtualdub again, the colors are perfect as they were in the original image, as the comparison above shows. And on top of that, this happens with all the videos that i try to play on my laptop, regardless of whether i encoded them or not.
I didn't include other media players in this comparison because they all mostly act the same as mpc, due to all of them using the same k-lite codec pack. I figured that problem is probably not in the k-lite itself, since it would have been fixed within last 3 years of constant updates, and also why would VLC have similar problem then when vlc has nothing to do with k-lite. So far, my best guess is that it has something to do with my graphics card in some way? Although it's hard to believe something like that wouldn't be fixed within 3 years of driver updates.
Ps. I tried compensating for this using VLC's "effects and filters" -> "video effects" and adjusting hue/contrast and stuff, but there was just no way to get it to look as the original image.
+ Reply to Thread
Results 1 to 10 of 10
-
-
Is there supposed to be a difference somewhere in that picture?
-
It should be pretty obvious. The most obvious part on the image is the difference between .png and vlc regarding the color value in the green area, or to put it more simply, you should be able to notice a relatively big difference in green area between stripes exactly in the middle of the image.
-
Just quick guess: try to changing Video Renderer in both players (unfortunately I'm using Zoom Player, so I can't say where exactly those settings are).
-
I have to agree with hech54 -- you sample image is a little confusing. After a while I think I figured out what you were trying to show. For example, between the two gray vertical bars are three columns, one from MPC, one from a PNG, and one from VLC. The PNG image is obviously brighter in the yellow, cyan, and green bands, darker in the magenta, red, and blue bands. There are also differences between the MPC and VLC columns.
You have two issues: 709 vs. 601 color, and "rec" vs. "pc" contrast scaling.
When converting RGB (used on computers) to YUV (used in video), or vice versa, there are two different conversion methods in common use: 601 and 709. The former is usually used in standard definition video, the latter in high definition video. If you use the wrong matrix when encoding or decoding you get a shift in the brightness of colors -- darker reds and brighter greens in one case, brighter reds and darker greens in the other.
Computers normally use the full range of 0 to 255 to go from the darkest shades to the lightest shades (eg, black=0,0,0 white=255,255,255). The luma channel in YUV video (the Y value) can range from 0 to 255, but full black is defined as 16, and full white is defined as 235. The values from 0 to 16, and 235 to 255, are reserved for overshoot. On a properly calibrated TV 0 to 16 should be full black (you should see no difference between a bar of 0 and a bar of 16) and 235 to 255 should be full white (you should see no difference between a white bar at 235 and a white bar at 255). So most programs that convert YUV to RGB expand the 16-235 luma range to 0-255 RGB. Conversely, when converting RGB to YUV, the 0-255 RGB range is compressed to 16-235 luma. The contrast adjusting method is the REC method, the non contrast adjustment is called the PC method. A few editors use "studio RGB" which doesn't include the contrast enhancement (Sony Vegas is one example).
So there are four common YUV/RGB conversion matrices in common use: rec.601, rec.709, pc.601, and pc.709. The differences in your images are the differences in which matrix was used to convert from RGB to YUV and YUV to RGB. I don't know where your PNG image comes from. Was it the original source from which the video files were created?
The general rules are:
1) Standard definition computer RGB to video YUV: use the rec.601 matrix
2) High definition computer RGB to video YUV: use the rec.709 matrix
3) Standard definition studio RGB to video YUV: use the pc.601 matrix
4) High definition studio RGB to video YUV: use the pc.709 matrix
Different player and editors may handle the conversions differently (what shows up on the TV or computer screen is always RGB, what's in the video file is usually YUV). Some may use the rec.601 matrix for everything, even when a particular matrix is specified in the video file. Others may follow the matrix specified in the video file but default to the wrong matrix when none is specified. You can also have the same problems when the player sends YUV to graphics card and the graphics card hardware performs the YUV to RGB conversion. You need to keep track of the software and hardware you use and adjust your workflow to use the correct matrices. -
thank you guys
jagabo that was very insightful! I learned a lot ^^
I managed to solve the problem in both VLC and MPC by finding the renderer that seems to be using correct YUV/RGB conversion matrix.
"I don't know where your PNG image comes from. Was it the original source from which the video files were created?"
In VLC player, i tried all of the available renderers by going to preferences/video/video settings/output:- Default - usuall... wrong colors
- YUV video output - doesnt work (video doesnt even show up)
- Windows GDI video output - downscaling video creates artifacts (which isnt important at all actually), but colors are perfect, although it seems to be less optimized than "Default".
- Simple DirectMedia Layer video output (software YUV SDL output) - looks pixelated when upscaled, bad at scrolling, out of question...
- Video memory output - doesn't work
- OpenGL video output - colors perfect but bad framerate.
- Stats video output function - doesn't work
- DirectX (DirectDraw) video output - incompatible with windows aero, seems to be better optimized than "default" (seems to stutter less when playing 10GB 2hr 1080p x264 .mkv), but displays colors wrong.
- Direct3D video output - seems same as "Default" from what i can tell.
- Color ASCII art video output - ... lol
Regarding Media Player Classic:
Thanks to your lesson in YUV/RGB conversion I was able to figure out that option render settings/output range/ 0-255 produces much better results then output range 16-235. However, in case of MPC, the better option was already selected by default (hence why MPC had much better contrast and colors than VLC which seems to be using output range of 16-235 in it's "Default" renderer.) So by trying out different renderers, i found that switching to "Haali Renderer" fixes the color problem in MPC, and makes colors in video identical to the ones on the .png image.
Ps. While doing comparisons to make sure it's all fine now, I noticed that MPC seems to be handling compression artifacts a bit better than VLC. VLC's option of post processing seems to be too aggressive and changes video appearance in most cases, so it's not very usable in my opinion.
And once again, thanks a lot -
When using Windows GDI for output VLC is doing the YUV to RGB conversion. It's one of the least efficient of the methods because of that. With most of the other output devices YUV is passed directly to the graphics card and and the graphics card does the conversion. Graphics drivers for Vista and Win7 seem to have lots of problems with the YUV to RGB conversion. You can usually use the graphics card's setup applet to adjust the video proc amp to fix most of it. But the 709 vs 601 option usually isn't present. Most people won't notice 709/601 errors unless viewing two images side by side.
I'm glad all my typing was able to help you out! -
hehe yeah, I guess that's true
Biggest problem was in fact figuring out the 16-235 stuff, that one really makes the difference.
Wow! You were exactly right! Down to the last detail. I just went to graphics driver settings in nvidia control panel and under advanced video options found this:
By switching it to "With the NVIDIA settings" and "Full (0-255)" it made the default renderer of VLC show the colors nicely(there is still 709 vs 601 problem in VLC default renderer, but it's not such a large issue I guess).
Also I found out that default renderer of MPC can also be used in combination with this shader:
Resulting in colors that are so close to perfect that you can only tell them apart if you arrange the color bars side by side using photoshop, only then is the difference noticeable -
Here's a sample showing the changes when you use the wrong matrix to convert YUV to RGB:
In the center is the original RGB image. On the left the RGB image was converted to YUV with the rec.709 matrix then, incorrectly, converted back to RGB with the rec.601 matrix. On the right the RGB image was converted to YUV with the rec.601 matrix then, incorrectly, back to RGB with the rec.709 matrix. I used darker colors than your earlier example to leave room to show how the wrong matrix causes a shift in brightness of some colors. You can see how the green bar has brightened and the red and blue bars have darkened on the left, and the opposite has happened on the right. The changes are much more subtle in the woman's face. -
wow that explains it even better
especially with the image. Seems that perceptively it changes the image to seem colder or warmer, depending in which order are incorrect matrices used. Your image is indeed a better testing image than mine since it shows how the mistake can make the green hue even stronger then it should be. Also it's funny how it makes green hues change opposite as much as it makes red and blue hues change.
Similar Threads
-
Video bitrate incorrect in Super
By lemmy999 in forum Video ConversionReplies: 2Last Post: 1st Jul 2011, 22:13 -
How Can I Correct This Collor-Problem? (Sample Inside)
By MrJacobAngle in forum RestorationReplies: 105Last Post: 9th Aug 2010, 11:17 -
Playing Video on display 2 and display 1 goes black
By sidewaysdriver in forum Software PlayingReplies: 2Last Post: 3rd Aug 2010, 00:36 -
Playback on both primary and secondary display
By mate in forum Software PlayingReplies: 3Last Post: 19th Apr 2010, 12:24 -
Remove (Video Calibration display) from JVC HR-S9500U during playback
By mlong30 in forum RestorationReplies: 2Last Post: 4th Mar 2008, 14:40