PDA

View Full Version : Yv12 on Vista = gray instead of black


Atak_Snajpera
19th February 2007, 21:52
I've noticed a problem with movies which use YV12,YUY2... Black color becomes gray but if I force RGB32 mode in ffdshow everything is ok. I have Radeon 1950 with latest drivers installed. The same happens on my laptop with Radeon x700. Does anybody have similar problem?

http://img399.imageshack.us/img399/8314/snapshot20070219213918mt8.th.jpg (http://img399.imageshack.us/my.php?image=snapshot20070219213918mt8.jpg)

Rectal Prolapse
19th February 2007, 21:58
Let me guess - your display is only calibrated for PC levels? In typical broadcast video, black is at level 16. Most people here seem to prefer PC levels, where black is at level 0, which I'm guessing is because most people here have monitors calibrated for PC levels only.

Perhaps you need to use FFDShow's Levels filter to move black at level 16 to level 0?

(I don't know if you are using VMR9 or Overlay - but it doesn't matter if you tweak around it).

Atak_Snajpera
19th February 2007, 22:11
When I watched that show on WinXP EVERYTHING was OK! Black is Black. I used WMP11 and Media Player Classic. I did not change anything in options. On vista every movie I have (x264,xvid...) has less contrast.

Rectal Prolapse
19th February 2007, 22:35
VMR9 or overlay? Wait - I don't know what the default renderers are used in wmp11 and mpc. Vista is probably using something like vmr9. Seems to me you need to recalibrate your display.

Rectal Prolapse
19th February 2007, 22:45
I looked at your screenshots and used the eyedropper tool in IrfanView to look at your color levels. The YV12 screenshot looks like the correct image to me, on a display properly calibrated for Video levels (as per the NTSC specifications).

In some spots the YV12 screenshot dips below level 16 in one of the colors - 14,20,20. In Overlay this would be clipped to 0,4,4, which would would give you the wrong color (not that you would see it! :) ). This confirms that the YV12 shot is absolutely correct.

Shadow detail is a little bit crushed in the RGB32 shot - but considering the source, who cares? :)

I think you need to fiddle with the player's brightness setting - or you can use FFDShow to clip and expand the levels.

HeadBangeR77
19th February 2007, 23:03
Let me guess - your display is only calibrated for PC levels? In typical broadcast video, black is at level 16. Most people here seem to prefer PC levels, where black is at level 0, which I'm guessing is because most people here have monitors calibrated for PC levels only.
If you didn't have a monitor capable of storing whole sets of settings, would re-calibrate it every time you wanted to watch a film? ;)
That's why most of us just call it a bug and tries hard to force full levels. ;)

Perhaps you need to use FFDShow's Levels filter to move black at level 16 to level 0?
FFDShow's Levels are good enough, imho. Yet I haven't got the faintest idea, which is more CPU-hungry: Levels or forcing HQ RGB32 output?

Could be some sort of Vista's rendering issue, or drivers' issue (some 2D drivers work with full range in VMR9 on XP, some (most of them) don't - the same might be valid for Vista. Just guessing.

cheers,
HDBR77

Atak_Snajpera
19th February 2007, 23:16
When I switch from System Default in mpc to Overlay mixer picture looks like RGB32 but unfortunately Aero Glass doesn't work in this mode :-( I will post another example, this time from DVD. I need couple minutes...

HeadBangeR77
19th February 2007, 23:44
When I switch from System Default in mpc to Overlay mixer picture looks like RGB32 but unfortunately Aero Glass doesn't work in this mode :-( I will post another example, this time from DVD. I need couple minutes...
Because Overlay works with PC-Scale colours' range, no matter what player you use, and this should be valid for M$ OSes as well, AFAIK. You could also try VMR7 windowed. But then you cannot use the MPC's embedded subtitles render.

You might find some useful information about different renders here:
http://forum.doom9.org/showthread.php?t=120946

http://forum.doom9.org/showthread.php?t=120718&page=2

Atak_Snajpera
19th February 2007, 23:54
Another example (Gorillaz video clip - DVD)

http://img352.imageshack.us/img352/7917/dvdoq5.th.jpg (http://img352.imageshack.us/my.php?image=dvdoq5.jpg)

HeadBangeR77
20th February 2007, 00:36
We all know how it looks like. ;)
The problem is: how to prevent it. If you don't care about a few additional % of CPU usage you could stick to HQ RGB32, that will ensure the best colours quality ever, and isn't affected by stair- stepping and colour-bleeding as YV12 is (YUY2 much less).
If you need those additional % for some other tasks, you could switch to Overlay or VMR7 Windowed, loosing the MPC's subtitles render, but you could use ffdshow for subtitles then (that's what I do: VMR7 Windowed, forced YUY2 in ffdshow).

If the problem is Vista-specific (which is generally not true, but could be in your case, provided you haven't changed 2D drivers and players' version), then I'm helpless.

pozdrawiam

Atak_Snajpera
20th February 2007, 01:08
I've sent another screenshots just to show Rectal Prolapse that he is wrong. He claims that YV12 is correct.

VMR7 Windowed does not change anything. I've discovered that only Overlay Mixer works along with Haali's Video Renderer. Unfortunately Overlay switches off Aero Glass. Haali's Video Renderer is not perfect neither. It drops frames from time to time (on my Core 2 Duo E6300@2,8ghz-strange). I think I will have to stick with the best solution so far - Forced RGB32

pozdrawiam i ja

HeadBangeR77
20th February 2007, 01:58
Well, VMR7 windowed "runs in overlay, when it can" (a tool-tip from MPC), so most probably it's not the case by you. I also consider Haali's render, with all due respect to his work, not stable enough at the current stage of its development. With your CPU, if you don't use various ffdshow's filters, RGB32 indeed seems to be the best solution. ;)

foxyshadis
20th February 2007, 02:42
I wager that once ATI's Vista drivers settle down the problem will go away, same as nvidia's, but until then there's going to be some annoyances. Do be sure to report it to ATI so they don't forget about it.

The Scientist
20th February 2007, 06:23
Run Vista's "Windows Media Center" setup wizard.

I noticed the similar 'brighter blacks', now everything is fine. I had to reduce the brightness on my monitor. The windows media center wizard will loop a movie with a guy in a black suit and a black 'x' in the background, run it and calibrate your controls.

Rectal Prolapse
20th February 2007, 16:05
My point is that all broadcasters use 16-235 levels. All DVD titles (with the exception of badly mastered ones - I think only a handful) and HD-DVD/Bluray titles use 16-235 levels. Make sense?

(It seems a lot of doom9 re-encoders like to expand 16-235 to 0-255 - so they must have their displays calibrated for PC levels - that's too bad for those of us who use real TVs to watch them!)

How it displays on your screen depends on your calibration. If your display can't achieve black at 16 (instead of very dark grey) then you need to fix that - lots of good advice here!

CRTs have no trouble with calibrating black levels. Digital displays designed for home theater generally don't have any problems with this either.

It doesn't help that desktop computers are designed for PC levels - where true black is at 0 and not 16. When you watch video on a PC blacks won't look right. But it is easy to work around it without needing to recalibrate the display - just lower VMR9 brightness (and increase VMR9 contrast if you want to do the expansion), or use the player's brightness control. Easy! No need to switch profiles on your display.

Now, I have a front projector - I don't need to recalibrate to watch video on it. :) I use the VMR9 procamp method for my LCD monitor.

BTW, how did you take that screenshot for the Gorillaz DVD source? It is possible that the DVD player did the level expansion, which would crush your blacks. Now, the re-encode to x264 looks correct - I'd guess that AVISynth did NOT do a level expansion and everything is as it should be - on a TV that is set up properly for video levels. :)

Another BTW: Supposedly Vista was supposed to "fix" the PC levels versus video levels thing. A year ago I read that Microsoft was going to make everything go into video levels - this would mean that your desktop would be remapped from 0-255 to 16-235 levels - but obviously this isn't the case because then everyone (including me!) would bitch. :)

Atak_Snajpera
20th February 2007, 17:39
I used MPC to take screenshot from gorillaz

HeadBangeR77
20th February 2007, 18:35
@ Rectal Prolapse:
I once tried to software-calibrate VMR9 (using brightness, contrast and saturation switches from ffdshow) and, believe me or not, the end-effect was worse than e.g. HQ RGB32. I think it often depends on what we are used to. ;) Btw. Using hardware acceleration for MPEG-2 decoding gave me identical results as RGB32 (Radeon 9800 PRO @ XT).

I'm watching everything on PC, so I've got a different approach than you. And since the OSD on my precious Iiyama (love its colours) is broken I can only howl at the moon atm. :D

cheers,
HDBR77

shae
20th February 2007, 18:41
I think the least expensive solution CPU-wise (still not sure about quality) would be using ffdshow's AviSynth module with ColorYUV("TV->PC").

Conversion to RGB will definitely take more CPU, but will also solve chroma upsampling problems which result in blocky/pixelated pure colors (such as red). This may not be needed for ATI, though.

HeadBangeR77
20th February 2007, 18:45
I think the least expensive solution CPU-wise (still not sure about quality) would be using ffdshow's AviSynth module with ColorYUV("TV->PC").
Not a bad idea! :)

Conversion to RGB will definitely take more CPU, but will also solve chroma upsampling problems which result in blocky/pixelated pure colors (such as red). This may not be needed for ATI, though.
Believe me, it is, or at least a conversion to YUY2, to reduce the stair-stepping and bleeding by fair amount. No matter if ATI or NVidia, no matter what graphic card and drivers, the colour sub-sampling is there, colour information is missing, and artefacts appear (similar to JPEG subsampling).

Rectal Prolapse
20th February 2007, 21:59
I'll have to try that out - or I could just use RGB32. Well, except for HD-DVDs. Oops. :(

foxyshadis
21st February 2007, 00:57
ColorYUV() also properly changes the chroma levels, which are different than the luma - the minor difference doesn't bother me.

Believe me, it is, or at least a conversion to YUY2, to reduce the stair-stepping and bleeding by fair amount. No matter if ATI or NVidia, no matter what graphic card and drivers, the colour sub-sampling is there, colour information is missing, and artefacts appear (similar to JPEG subsampling).

It depends. Every six months they seem to fix it and then break it again in VMR9, nvidia in particular. Maybe it's fixed for good on XP now, I'm not sure, since I know SMD bitched whenever it broke and got blocky again. ;)

Atak_Snajpera
21st February 2007, 15:14
Does anybody have the same problem on nVidia's card?

Rumbah
21st February 2007, 18:57
The VMR9 problem was there for ages and ATI just fixed it with the Cat 7.1 for WinXP. In Vista it's still there but as ATI fixed it for XP, there is hope that the fix gets integrated in the Vista driver as well.

Netuser
3rd March 2007, 21:50
Hello,

Sorry to post here but i am having same problem. I am using Vista ultimate and using MPC + CoreAvc + Dscaler 5 + Haali + ffdshow (with H264 disabled). I play most of time HD videos in X264 format or TS .

On My screen i have Black which is not black, i found this while watching Underworld or Matrix in which the Black is very important and noticeable when it is not black.

I saw that HQ RGB 32 can correct this but how to do it in MPC.

thanks

KoD
3rd March 2007, 22:22
What do you need all those filters chained for ? To select an output colorspace, do it in your decoder: if it's CoreAVC for h264 video files, then just move RGB32 to the top in the list on its config page, if you're using ffdshow for anything, then leave only the RGB options enabled on its Output page in the decoder options.

Netuser
3rd March 2007, 22:53
For codecs it is Advised by HD forum to use like this to have best result so i did it like this.

For example when i am playing TS fiel it use Dscler which i read best for it and CoreAvc is used for mkv X264 encodes.

Ok i try to look what you said while i play movie i right clock then filter then i see Dscaler is used for it, I selected it and i got option there in Output colorspace I only have Option :
YV12
YUY12
NV12

I dont have RGB32 there :(

While playing MKV X264 movie I have CoreAvc which is used and when i select it i only get a small window with tab about and Pin Infos :( i dont have any access to settings.

What to do where can i put RGB 32 ? I am lost there