View Full Version : RGB32 and YV12 produce very different output - which is "real"?
bur
6th December 2008, 20:55
So far I never bothered about colorspace during playback and just let ffdshow do the selecting. But then I read RGB would produce a more accurate picture and the only downside would be a litte slow-down. So I made ffdshow output in RGB32 and the result was quite different from the original YV12:
RGB32
http://img241.imageshack.us/img241/317/rgb32nr3.th.jpg (http://img241.imageshack.us/img241/317/rgb32nr3.jpg)
YV12
http://img266.imageshack.us/img266/7119/yv12wb2.th.jpg (http://img266.imageshack.us/img266/7119/yv12wb2.jpg)
The colors really look quite different, especially that shirt.
From what I got from the web RGB is more accurate, but almost all videos (incl the one the screenshots are from) use YV12. So is there any way to tell which result is closest to the original source? I mean either YV12 could just displays it wrong or during the conversion to RGB32 something went wrong. So what should I use per default?
ranpha
6th December 2008, 20:59
What video renderer did you use?
LoRd_MuldeR
6th December 2008, 21:00
If ffdshow outputs YV12 data to the renderer, you must rely on the renderer to do the proper YUV -> RGB conversion.
Unfortunately most renderes (e.g. VMR7/9 or EVR) assume "PC Levels" (full range) while most videos use "TV Levels" (standard). This results in "washed" colors.
One workaround is doing the YUV -> RBG conversion in software by forcing RGB32 output in ffdshow.
This way ffdshow does the conversion itself and you can select the desired levels in the ffdshow configuration dialog (see the "RGB conversion" page).
bur
6th December 2008, 21:04
So far I was using VMR9 renderless but I also tried with EVR custom (mpc hc). Same result. I also switched of all post processing.
Lord Mulder, so what you're saying is conversion to RGB happens anyway but ffdshow does it more accurate than VMR9 or EVR so forcing ffdshow to RGB output is the better choice?
leeperry
6th December 2008, 21:05
...and the proper colorspace(REC.601 for SD/REC.709 for HD)
the ATI drivers will switch to REC.709 if y>719, so 1280*<719 videos will be converted with REC.601 coeffs.
http://pix.nofrag.com/1/8/b/89ac689b298066012fefad1f061b6t.jpg (http://pix.nofrag.com/1/8/b/89ac689b298066012fefad1f061b6.html)
and make sure to check "high quality YV12 conversion" in ffdshow, otherwise you'll end up w/ this :
http://forum.doom9.org/showthread.php?p=1137196&highlight=nail#post1137196
I dunno how nvidia handles this situation, but I'll put my money on ffdshow to do a better job anyhow ;)
LoRd_MuldeR
6th December 2008, 21:06
So far I was using VMR9 renderless but I also tried with EVR custom (mpc hc). Same result. I also switched of all post processing.
So most likely it's the "TV Levels" vs. "PC Levels" problem I mentioned. Either enforce the software YUV -> RGB conversion in ffdshow -or- use Haali's Renderer instead.
(Haali's Renderer has an option to set the correct Levels)
Lord Mulder, so what you're saying is conversion to RGB happens anyway but ffdshow does it more accurate than VMR9 or EVR so forcing ffdshow to RGB output is the better choice?
Yes, conversion to RGB happens anyway, either in software (e.g. ffdshow) or by the renderer (using the GPU).
I wouldn't say that ffdshow is more accurate, but it has the required option to ensure a proper conversion. Most renderers lack that option (and assume "wrong" levels).
From the renderer's point of view (assuming "PC Levels") the conversion is correct. But if the video uses "TV Levels", the conversion is not correct in fact...
bur
6th December 2008, 21:11
From experience could you say which is better Haali or VMR/EVR? Or does it depend on the video?
...and the proper colorspace(REC.601 for SD/REC.709 for HD)I'm having an nvidia card, so I'll use ffdshow for that. Is there any way to make it choose automatically like the ATI driver does or do I have to change the setting manually?
And just to check if I got you right, for my 640*480 video I'll use RGB with BT.601? No matter what codec is used?
LoRd_MuldeR
6th December 2008, 21:15
From experience could you say which is better Haali or VMR/EVR? Or does it depend on the video?
None is "better". Haali has an option to manually specify the desired Levels, the VMR and EVR renderes lack that option.
If you use RGB32 output, there will be no problem with any renderer. If you use YV12 output, then Haali is able to do a proper conversion (if configured accordingly), while VMR/EVR may not be able to do so.
However EVR can be forced to output "TV Levels" to the screen by using the "16-235 -> 0-255" shader in MPC-HC.
And just to check if I got you right, for my 640*480 video I'll use RGB with BT.601? No matter what codec is used?
It's not a question of Codec! The question is: What levels did the source video use? You must use the same levels as the source to get "correct" colors.
bur
6th December 2008, 21:24
Is there any way to tell what levels were used by the source, is that specified in the video?
The ffdshow help it says DVD and almost all SD-TV uses 601, so going by resolution is probably safe but to be 100% sure would be nicer... :)
LoRd_MuldeR
6th December 2008, 21:26
Is there any way to tell what levels were used by the source, is that specified in the video?
Don't think so.
The ffdshow help it says DVD and almost all SD-TV uses 601, so going by resolution is probably safe but to be 100% sure would be nicer... :)
I'd say you will be pretty save using "BT.601" and "TV Levels" (Standard) for all your SD material.
Mangix
6th December 2008, 21:33
nvidia drivers since 177.84 IIRC have had an option to select which color range gets used by VMR9(and maybe others). It's found at adjust video color settings > Advanced
leeperry
6th December 2008, 22:05
From experience could you say which is better Haali or VMR/EVR? Or does it depend on the video?
I'm having an nvidia card, so I'll use ffdshow for that. Is there any way to make it choose automatically like the ATI driver does or do I have to change the setting manually?
And just to check if I got you right, for my 640*480 video I'll use RGB with BT.601? No matter what codec is used?
well what I suggested to Haali, and that he added in HR is a good solution
set 2 profiles in ffdshow, if x<1024 : REC601 | if x>1024 : REC709
all videos are PC levels, except some very rare badly encoded videos
I personally prefer to use ConvertToRGB32() in the Avisynth filter of ffdshow as it yields 10% larger PNG's than RGB32HQ from ffdshow....I can't tell the diff but I figured that if it's 10% bigger it's prolly more accurate ;)
HR also works in YUY2, but its 601/709 coeffs are slightly not green enough, nothing's more accurate than ffdshow!
the major advantage of HR is that it doesn't let your videocard drivers mess w/ the picture...you get 1:1 output :cool:
littleD
7th December 2008, 00:09
One word about renderers. OverlayMixer is the oldest one and is suitable for xvid/divx type videos. EVR what i found is better in "HD" content. SD content rendered by EVR is too bright, some hd videos renderered by OM is too dark. Is there any compromise around here:confused::confused:
What is more, i have encoded movie recently. First in xvid and secondly in x264. Both have different brightness in evr and OM. It looks like bright level depend even on codec used:confused:
I think that, anyway, some of you may be confused by overbright "black" borders painted by EVR, while main video level is correct.
And..... what is then LEVELS option in videodecoder ffdshow? I read somewhere advice to use Seb's BTW&WTW mode for rgb convesion. Is LEVELS can be used for automatic bright levels correction. Is it outdated or still be to use?
LoRd_MuldeR
7th December 2008, 00:12
One word about renderers. OverlayMixer is the oldest one and is suitable for xvid/divx type videos. EVR what i found is better in "HD" content. SD content rendered by EVR is too bright, some hd videos renderered by OM is too dark. Is there any compromise around here:confused::confused:
That's exactly the "TV Levels" vs. "PC Levels" problem.
Obviously the Overlay Mixer assumes "TV Levels", which is suitable for your SD videos, while EVR assumes "PC Levels" (Full Range), which is suitable for your HD videos.
If content that was mastered with "TV Levels" is displayed at "PC Levels" it will too bright (washed). And If content that was mastered with "PC Levels" is displayed at "TV Levels" it will too dark.
The only way to get proper colors/brightness is using the same levels, for mastering and display.
Conclusion: Either use software YUV -> RGB conversion (e.g. in ffdshow) or use Haali's Renderer, which allows you to choose the desired levels...
And..... what is then LEVELS option in videodecoder ffdshow?
That option specifies the levels that ffdshow will use for YUV -> RGB conversion. Of course this is only effective if you also enforce RGB output.
littleD
7th December 2008, 00:21
That's exactly the "TV Levels" vs. "PC Levels" problem.
Obviously the Overlay Mixer assumes "TV Levels", which is suitable for your SD videos, while EVR assumes "PC Levels" (Full Range), which is suitable for your HD videos.
Conclusion: Either use software YUV -> RGB conversion (e.g. in ffdshow) or use Haali's Renderer, which allows you to choose the desired levels...
That option specifies the levels that ffdshow will use for YUV -> RGB conversion. Of course this is only effective if you also enforce RGB output.
Yeah, i know its that levels, :p but ffdhow conversion doesnt work appropriate somehow when using evr and playing sd content. Its maybe my old nvidia card or something else. Or maybe i should use OM and correct HD Videos:p .
I dont use VMR9 since i have very choppy output. But some time back, all was correct, so maybe drivers issue this time :(
leeperry
7th December 2008, 00:21
EVR assumes "PC Levels" (Full Range), which is suitable for your HD videos.
well as you know HDTV/BD are also 16-235, just like SD...
only xvYCC is 0-255, and I believe you will have a hard time finding such sources ;)
http://en.wikipedia.org/wiki/XvYCC
xvYCC uses the full range of values (0 to 255 in an 8-bit space) to represent colors. In BT.601 and BT.709, RGB colors are represented only by 8-bit values from 16 to 235.
leeperry
7th December 2008, 00:24
Yeah, i know its that levels, :p but ffdhow conversion doesnt work appropriate somehow when using evr and playing sd content. Its maybe my old nvidia card or something else. Or maybe i should use OM and correct HD Videos:p .
I dont use VMR9 since i have very choppy output. But some time back, all was correct, so maybe drivers issue this time :(
you should output RGB32HQ from ffdshow, and don't let some old legacy video renderer choose for you how to output it ;)
all video content is TV levels(except poorly encoded ones), convert to PC from within ffdshow and you're good to go
if your display looks better w/ TV levels input, set ffdshow to "full range"...this way ffdshow won't convert levels
LoRd_MuldeR
7th December 2008, 00:34
but ffdhow conversion doesnt work appropriate somehow when using evr and playing sd content.
Enforce RGB output in ffdshow (that is: Uncheck everything but "RGB32" on the "output" page) and select the proper "Contrast" setting on the "RGB conversion" page.
You will need to restart the media, to make the changes take effect!
well as you know HDTV/BD are also 16-235, just like SD...
Obviously his video is "Full Range", if it looks too dark using "TV Levels" ...
leeperry
7th December 2008, 00:51
Obviously his video is "Full Range", if it looks too dark using "TV Levels" ...
...well if his display is properly calibrated, it's not too hard to see if you're watching a 0-255 video I think(maybe used for games demos? not even sure...)
but I read that a lot of old divx were 0-255 coz the guys thought it was aimed at PC monitors hence would require PC levels....what a waste of bitrate :rolleyes:
quite frankly the only 0-255 video I've ever seen was some Philips demo MKV, that was converted from 16-235 for some odd reason :p
littleD
7th December 2008, 08:36
Thax guys, now its all more clearly for me. I was incorect at some statements. But problem remains. Changing contrast to full range just dont work. Output is the same as original video. No change with with ycbcr spec too. Should full range aka pc level transform right brightness and contrast on my monitor?
And calibration plays role here too i think. Some test videos posted on this forums show that i get correct gamma with evr, while OM gives really bad output. Cant find link now.
bur
7th December 2008, 12:52
I personally prefer to use ConvertToRGB32() in the Avisynth filter of ffdshow
That's something I also wondered about, who's doing that conversion better, AVS or ffdshow, has anyone done some tests on that?
Through a google search I came across the cccp forum (they are offering a pre-configured bundle of mpc/haali/ffdshow) and it seems those guys say you should always have the driver/GPU do the YUV->RGB conversion. Are they just plain wrong or is there something to it? I just posted my screenshots there but so far no answer...
And while we're at it, could it be helpful to use either ffdshow or AVS to resize the video? Currently I'm using bicubic with PS for resizing but maybe there are better alternatives? A problem would be though that the renderer dynamically adjusts the size when resizing the window/fullscreen while you could only chose a fixed size in the filter so probably the renderer still will have to resize a bit. So if I go from a 640x480 source and mostly watch it at say about 900x600 but sometimes in fullscreen would it be helpful to make AVS or ffdshow resize to 800x600?
And yet another thing, I noticed EVR producing an effect along strong contrast lines (cartoon/anime) similar to what you get if you sharpen too much. This happens much less with VMR9 or Haali. Has anyone a quick answer or should this be asked in a new thread with screenshots?
leeperry
7th December 2008, 14:36
I personally downscale w/ bilinear, and upscale w/ spline
I really hate the PP that VMR9/EVR add to the picture(I'd say that EVR adds some very ugly EE & VMR9 some crappy sharpening), HR 1:1 ftw w/ LSF :)
well compare ConvertToRGB32() & RGB32HQ from ffdshow, and you'll notice that Convert always yields 10% bigger PNG's....whether that's good or bad, I can't really tell.
Haruhiko told me that RGB32HQ in ffdshow was using ConvertToYUY2() anyway...
but I use gamut conversion in the Avisynth filter of ffdshow using Avishader(), so I have to use Convert() anyhow :D
ffd RGB32HQ / HR :
http://pix.nofrag.com/a/d/7/3b34018880dbf4f814fde1c1e7afbt.jpg (http://pix.nofrag.com/a/d/7/3b34018880dbf4f814fde1c1e7afb.html)
ConvertToRGB32() / HR :
http://pix.nofrag.com/c/a/3/9e6036cb45bef2a19cf2baffa0041t.jpg (http://pix.nofrag.com/c/a/3/9e6036cb45bef2a19cf2baffa0041.html)
rack04
7th December 2008, 15:00
you should output RGB32HQ from ffdshow, and don't let some old legacy video renderer choose for you how to output it ;)
all video content is TV levels(except poorly encoded ones), convert to PC from within ffdshow and you're good to go
if your display looks better w/ TV levels input, set ffdshow to "full range"...this way ffdshow won't convert levels
RGB32HQ? Does that mean RGB32 with "High Quality YV12 to RGB Conversion"?
leeperry
7th December 2008, 19:20
yup..
STaRGaZeR
7th December 2008, 20:44
ffd RGB32HQ / HR :
http://pix.nofrag.com/a/d/7/3b34018880dbf4f814fde1c1e7afbt.jpg (http://pix.nofrag.com/a/d/7/3b34018880dbf4f814fde1c1e7afb.html)
ConvertToRGB32() / HR :
http://pix.nofrag.com/c/a/3/9e6036cb45bef2a19cf2baffa0041t.jpg (http://pix.nofrag.com/c/a/3/9e6036cb45bef2a19cf2baffa0041.html)
The background of the first one is a bit more dark, so there you have your difference.
Steveo08
7th December 2008, 20:48
I personally downscale w/ bilinear, and upscale w/ spline
I really hate the PP that VMR9/EVR add to the picture(I'd say that EVR adds some very ugly EE & VMR9 some crappy sharpening), HR 1:1 ftw w/ LSF :)
well compare ConvertToRGB32() & RGB32HQ from ffdshow, and you'll notice that Convert always yields 10% bigger PNG's....whether that's good or bad, I can't really tell.
Haruhiko told me that RGB32HQ in ffdshow was using ConvertToYUY2() anyway...
but I use gamut conversion in the Avisynth filter of ffdshow using Avishader(), so I have to use Convert() anyhow :D
ffd RGB32HQ / HR :
http://pix.nofrag.com/a/d/7/3b34018880dbf4f814fde1c1e7afbt.jpg (http://pix.nofrag.com/a/d/7/3b34018880dbf4f814fde1c1e7afb.html)
ConvertToRGB32() / HR :
http://pix.nofrag.com/c/a/3/9e6036cb45bef2a19cf2baffa0041t.jpg (http://pix.nofrag.com/c/a/3/9e6036cb45bef2a19cf2baffa0041.html)
which script do you use in avisynth to convert to RGB32?
Can you poste it please?
leeperry
7th December 2008, 21:13
The background of the first one is a bit more dark, so there you have your difference.
now that you mention it, I remember I checked the levels conversion with some patterns a while ago....and RGB32HQ / Convert() weren't doing the exact same levels expansion...like one did 14-235 and the other 16-235 or sumthing.
which script do you use in avisynth to convert to RGB32?
for HD only :
ConvertToRGB32(matrix="rec709")
Steveo08
7th December 2008, 21:16
now that you mention it, I remember I checked the levels conversion with some patterns a while ago....and RGB32HQ or Convert() weren't doing the exact same levels expansion...like one did 14-235 and the other 16-235
ConvertToRGB32(matrix="rec709")
thank you, and did you disable the "overlay" option in ffdshow, too?
leeperry
7th December 2008, 21:20
thank you, and did you disable the "overlay" option in ffdshow, too?
I only use HR and I've got the "overlay" ffdshow filter disabled ;)
Steveo08
7th December 2008, 21:24
I only use HR and I've got the "overlay" ffdshow filter disabled ;)
ok, now my last question maybe ;-)
for HQRGB32 you use only this line in avisynth:
"ConvertToRGB32(matrix="rec709")"
and haali renderer? is that right?
leeperry
7th December 2008, 21:34
nope, I use LSF and some other AVS scripts :D
you can find more infos here :
http://www.avsforum.com/avs-vb/showthread.php?t=469464
http://archive2.avsforum.com/avs-vb/archive/index.php/t-633099.html
that's the best sharpening filter available on PC IMHO....very fast, very low EE and very crispy :)
with SMPTE-C gamut conversion and stuff on top of it, you can get a very nice PQ :
http://pix.nofrag.com/e/e/4/4512a9e146a0e5b643e17d3e1bea4tt.jpg (http://pix.nofrag.com/e/e/4/4512a9e146a0e5b643e17d3e1bea4.html)
http://pix.nofrag.com/0/b/1/4ebd2f88ca5a81ecd40cec5ecfd1dtt.jpg (http://pix.nofrag.com/0/b/1/4ebd2f88ca5a81ecd40cec5ecfd1d.html)
Steveo08
7th December 2008, 21:49
nope, I use LSF and some other AVS scripts :D
you can find more infos here :
http://www.avsforum.com/avs-vb/showthread.php?t=469464
http://archive2.avsforum.com/avs-vb/archive/index.php/t-633099.html
that's the best sharpening filter available on PC IMHO....very fast, very low EE and very crispy :)
with SMPTE-C gamut conversion and stuff on top of it, you can get a very nice PQ :
http://pix.nofrag.com/e/e/4/4512a9e146a0e5b643e17d3e1bea4tt.jpg (http://pix.nofrag.com/e/e/4/4512a9e146a0e5b643e17d3e1bea4.html)
http://pix.nofrag.com/0/b/1/4ebd2f88ca5a81ecd40cec5ecfd1dtt.jpg (http://pix.nofrag.com/0/b/1/4ebd2f88ca5a81ecd40cec5ecfd1d.html)
do you use LSF for sd and hd source or just for sd movies?
littleD
7th December 2008, 22:23
I thought i lost my mind, tried every option with HQRGB in ffdshow but somehow it DOESN'T WORK at all on my system. So i tried (forgotten by me) avisynth script - ConvertTo.... and im in heaven. Finally reached what was looking since ages. Thanx leeperry. EVR + AVS = Honey.
Leeprry, dont you think that more suitable is to set matrix=PC.709 if watched on PC monitor?
leeperry
7th December 2008, 22:40
do you use LSF for sd and hd source or just for sd movies?
both, it's a smart algorithm....if there's nothing to sharpen up it won't do anything.
I thought i lost my mind, tried every option with HQRGB in ffdshow but somehow it DOESN'T WORK at all on my system. So i tried (forgotten by me) avisynth script - ConvertTo.... and im in heaven. Finally reached what was looking since ages. Thanx leeperry. EVR + AVS = Honey.
Leeprry, dont you think that more suitable is to set matrix=PC.709 if watched on PC monitor?
they should both work equally well.
set 2 profiles in ffdshow as explained earlier(601=SD,709=HD), calibrate your display to D65/2.2, do some gamut conversion on top of it if you like and you're good to go :
http://www.avsforum.com/avs-vb/showthread.php?t=912720
Steveo08
7th December 2008, 23:01
[QUOTE=leeperry;1221675]both, it's a smart algorithm....if there's nothing to sharpen up it won't do anything.
they should both work equally well.
is it possible that you post your LSF script here?
tetsuo55
7th December 2008, 23:07
I've been wondering the same thing as well.
I have the following set-up
Ati-videocard connect with dvi-To-Hdmi cable to my tv.
My display has been calibrated using a PS3 with hdmi cable.
The calibration has resulted in an approximation of D65/2.2/709
Now this isn't exactly what the pc is outputting though.
What i need is: All media (SD/HD) automatically converted to RGB32 by ffdshow with the correct levels/colorspace, this probably requires some upscaling to bypass the ati colorspace resamplers right?
It has to match the calibration of the display.
wozio
8th December 2008, 08:15
What i need is: All media (SD/HD) automatically converted to RGB32 by ffdshow with the correct levels/color space, this probably requires some upscaling to bypass the ati color space resamplers right?
It has to match the calibration of the display.
If you feed renderer with RGB data it will do nothing with color and/or contrast if your driver settings are zeroed. But zeroing all ATI video settings can be quite tricky as far as I know (I have older card without all this dynamic contrast/sharpening/punched colors crap).
BTW I did some tests here on this forum about color conversion using different converters and I could not see any difference. For example compare this output from ffdshow HQ rgb:
http://www.pwozniak.multimo.pl/resize/ffdshow_lanczos_4taps_no_sharpen_hq_rgb_out.jpg
and VMR9 fed with yuv:
http://www.pwozniak.multimo.pl/resize/vmr9_renderless_mpc_bicubic_1.jpg
It is just a matter of calibrating display for one preferred renderer and stick with it. Renderer must be chosen based on other aspects (motion handling, resizing, hardware features support).
Regards
Piotr
leeperry
8th December 2008, 11:33
I did some tests here on this forum about color conversion using different converters and I could not see any difference.
well the ATI drivers are unable to progressively upsample chroma..
use this sample in YV12, and you might not like what you'll see :
http://forum.doom9.org/showpost.php?p=1137196&postcount=1868
apparently the EE/sharpening I'm seeing on VMR9/EVR is done after the RGB32 mixer(doesn't show on screenshots).....maybe by the ATI drivers/pixel shaders ? or because these renderers rely on D3D a bit and like sharpen things up ?
anyway, only HR/Overlay & VMR7 are 1:1 here.
is it possible that you post your LSF script here?
did you have a look at the 2 links I gave ?
on the short one, they give the script I use...try them and let us know what you think ;)
My display has been calibrated using a PS3 with hdmi cable.
The calibration has resulted in an approximation of D65/2.2/709
Now this isn't exactly what the pc is outputting though.
What i need is: All media (SD/HD) automatically converted to RGB32 by ffdshow with the correct levels/colorspace, this probably requires some upscaling to bypass the ati colorspace resamplers right?
It has to match the calibration of the display.
well the D65 calibration for your PS3 doesn't "work" for your PC.
calibrate to D65 in your usual HTPC resolution/refresh rate, convert SD to REC601, HD to REC709, do some gamut conversion to your calibrated display primaries....and you're good to go my friend :o
tetsuo55
8th December 2008, 13:33
Thanks for the replies.
The thing is i don't have access to the calibration tools anymore.
What i have done with the pc is use the catalyst global settings to Convert 0-255 to 16-235.
This means my desktop is correct and WtW and BtB are visable. the result probably isn't 1:1 but should be 95% ok.
This in turn also means that i have to convert any non 16-235 images to 0-255(which is then displayd on the screen as 0-235, the process is slightly lossy).
At the moment i'm letting the renderer do this(although i'm sure this is incorrect a lot of the time) using the register keys for expanding SD/HD.
I'd rather have FFdshow convert everything to RGB32 0-255 using the correct REC without per-case user interaction.
The only thing i'm worried about is HD>SD conversions. |i'm not sure how smart encoders are with regards to changing REC
PS.
Using FFdshow also bypasses the ATI chroma bug right?
PPS.
I am forced to use VMR9 renderless to fix tearing(winxp)
PPS.
I wish we could find a universal solution. One that would work for any videocard/display/renderer. Just convert everything correctly to 0-255 and IF the user is using a 16-235 display then he only has to change the setting in his videocard driver settings
leeperry
8th December 2008, 14:19
if your display only accepts TV levels input and doesn't look better in PC levels, it'd be a much better solution to simply output RGB32 from ffdshow and set it to "full range" so it doesn't convert to PC levels....so you don't have to convert them *AGAIN* to TV in CCC.
well proper encoders are supposed to use Colormatrix() to go from 709 to 601 if they encode HD rips to SD, I don't watch SD anymore so I can't really tell(or maybe a few DVD/year)
the chroma bug only happens in YV12/YUY2(except in HR, where it doesn't happen at all), not RGB
rack04
8th December 2008, 14:34
set 2 profiles in ffdshow, if x<1024 : REC601 | if x>1024 : REC709
Would you mind explaining how to setup these presets in ffdshow? Thanks.
tetsuo55
8th December 2008, 14:35
I use the system for movies and gaming.
So with the current settings gaming is perfect, its just that video levels are not in many cases(only HD seems to be ok)
Steveo08
8th December 2008, 14:43
did you have a look at the 2 links I gave ?
on the short one, they give the script I use...try them and let us know what you think ;)
well i looked at the short link:
http://archive2.avsforum.com/avs-vb/showthread.php?t=633099
and used this manual from the link:
Grab the latest a18 version of masktools
put mt_masktools.dll in your avisynth plugins folder.
put limitedsharpenfaster.avsi in your avisynth plugins folder.
Grab MT 0.5
Put MT.dll in your avisynth plugins folder.
put avisynth.dll in your windows\system32 folder.
Grab RemoveGrain
Put RemoveGrain.dll in your avisynth plugins folder.
RemoveGrain is a requirement for LimitedSharpenFaster to work.
and in ffdshow at the avisynth tab:
SetMTMode(2)
LimitedSharpenFaster(ss_x=1.0,ss_y=1.0,Smode=3,strength=40)
ConvertToRGB32(matrix="rec709")
is that what you mean?
i am not sure of the picture quality, but i think it's a bit more clearer.
STaRGaZeR
8th December 2008, 15:08
well the ATI drivers are unable to progressively upsample chroma..
The card does chroma upsampling with EVR. Not with EVR Custom, so maybe you should check what ones are good and bad.
leeperry
8th December 2008, 15:46
The card does chroma upsampling with EVR. Not with EVR Custom, so maybe you should check what ones are good and bad.
ORLY ?
well I run XP, and regular EVR does terrible tearing(whatever nvidia or ati)...and I got a Matrox P750 card in my system at this point...so I can't really check :D
Would you mind explaining how to setup these presets in ffdshow? Thanks.
set profiles in ffdshow as follow :
SD, on movie dimensions match 16<1024
HD, 1024<2000
is that what you mean?
i am not sure of the picture quality, but i think it's a bit more clearer.
yup, except that I run it on 4 threads(I got a Q6600) :
MT("LimitedSharpenFaster(ss_x=1.0,ss_y=1.0,Smode=3,strength=40)",4)
rack04
8th December 2008, 15:55
set profiles in ffdshow as follow :
SD, on movie dimensions match 16<1024
HD, 1024<2000
Should it be set to "On all conditions match (AND)"? Do you set these values to both width and height with a or statement?
Steveo08
8th December 2008, 15:56
ORLY ?
well I run XP, and regular EVR does terrible tearing(whatever nvidia or ati)...and I got a Matrox P750 card in my system at this point...so I can't really check :D
set profiles in ffdshow as follow :
SD, on movie dimensions match 16<1024
HD, 1024<2000
yup, except that I run it on 4 threads(I got a Q6600) :
MT("LimitedSharpenFaster(ss_x=1.0,ss_y=1.0,Smode=3,strength=40)",4)
alright and thank you! :-)
and my last question is about HQRGB32, do i need this line for that too in avisynth?
ConvertToRGB32(matrix="rec709")
leeperry
8th December 2008, 19:20
@rack04 : well the second option for profiles is not relevant.
SD : 16<1024 OR 5000<5000
HD : 1024<2000 OR 5000<5000
@Steveo08 : well you can mix ffdshow built-in sharpening w/ LSF, like xsharpen/unsharp masking/etc
you have to make profiles to get proper 601/709 RGB conversion, using either ConvertToRGB32() or going RGB32HQ in ffdshow doesn't really matter
rack04
8th December 2008, 20:23
@rack04 : well the second option for profiles is not relevant.
SD : 16<1024 OR 5000<5000
HD : 1024<2000 OR 5000<5000
@Steveo08 : well you can mix ffdshow built-in sharpening w/ LSF, like xsharpen/unsharp masking/etc
you have to make profiles to get proper 601/709 RGB conversion, using either ConvertToRGB32() or going RGB32HQ in ffdshow doesn't really matter
Do these settings only relate to the video processed by ffdshow codecs, i.e. using MPC-HC DXVA wont see these changes?
wozio
8th December 2008, 20:30
well the ATI drivers are unable to progressively upsample chroma..
use this sample in YV12, and you might not like what you'll see :
http://forum.doom9.org/showpost.php?p=1137196&postcount=1868
Well I checked this sample and on my system everything looks very comparable, maybe you have mess on your system? Here you have my comparison:
http://www.pwozniak.multimo.pl/renderers/chroma.jpg
apparently the EE/sharpening I'm seeing on VMR9/EVR is done after the RGB32 mixer(doesn't show on screenshots).....maybe by the ATI drivers/pixel shaders ? or because these renderers rely on D3D a bit and like sharpen things up ?
Right I forgot you are the one who see things not visible on screenshots. BTW screenshots made by print screen are take from backbuffer which is sent to display, if something isn't there is not on display also.
Regards
Piotr
leeperry
8th December 2008, 20:41
Do these settings only relate to the video processed by ffdshow codecs, i.e. using MPC-HC DXVA wont see these changes?
DXVA in MPC HC is not compatible w/ ffdshow in the first place.
Well I checked this sample and on my system everything looks very comparable, maybe you have mess on your system? Here you have my comparison:
Right I forgot you are the one who see things not visible on screenshots. BTW screenshots made by print screen are take from backbuffer which is sent to display, if something isn't there is not on display also.
oh right, Leak created a PS script to progressively upsample YV12/YUY2 chroma in MPC HC...maybe his system is messed up too ? :D
you got a non-HD ATI card, apparently these cards also don't suffer from the "ghost lines" in HR....these ancient cards are very valuable apparently, I would strongly advise you to keep it until the end of days.
rack04
8th December 2008, 20:50
DXVA in MPC HC is not compatible w/ ffdshow in the first place.
Care to explain? I'm using MPC-HC with internal h264 (DXVA) and ffdshow tryouts without any problems.
shaolin95
8th December 2008, 20:52
Excuse my silly question but when you select ConverToRGB32() in avisynth....what do you select then in ffdshow to prevent multiple conversions?
Leak
8th December 2008, 20:57
Care to explain? I'm using MPC-HC with internal h264 (DXVA) and ffdshow tryouts without any problems.
You can't use ffdshow to process the output of MPC HC's DXVA decoders. If anything, they'll skip using DXVA and fall back to software decoding that way - DXVA will only work if you connect the decoder directly to a renderer in the DirectShow graph.
np: Swod - Frost (Sekunden)
leeperry
8th December 2008, 20:57
Care to explain? I'm using MPC-HC with internal h264 (DXVA) and ffdshow tryouts without any problems.
http://tibrium.neuf.fr/DXVASupport.html
DXVA is quite picky [...]
The MPC-HC Video decoder must be connected directly to the renderer. That means no intermediate filters such as [...] ffdshow can be inserted between the decoder and the video renderer.
Excuse my silly question but when you select ConverToRGB32() in avisynth....what do you select then in ffdshow to prevent multiple conversions?
if you output RGB32 from Avisynth, check "RGB32" & "full range" in ffdshow and it will remain untouched ;)
rack04
8th December 2008, 21:04
http://tibrium.neuf.fr/DXVASupport.html
http://i11.photobucket.com/albums/a199/rack04/DXVA.jpg
With ffdshow tryouts-mt svn 2443 installed.
leeperry
8th December 2008, 21:11
...and you can add ffdshow post-processing on top of it ?
I wish that was possible to have the GPU decode h264, and add Avisynth scripts in ffdshow....but only CUDA could allow that...maybe in a future CoreAVC version :o
shaolin95
8th December 2008, 21:14
http://tibrium.neuf.fr/DXVASupport.html
if you output RGB32 from Avisynth, check "RGB32" & "full range" in ffdshow and it will remain untouched ;)
Pardon my ignorance but does that mean I can uncheck EVERY other option in ffdshow or just select RGB32 output as well (highquality?) and full range?
leeperry
8th December 2008, 21:18
uncheck all the output colorspaces except RGB32, and check "full range"...so ffdshow won't temper w/ the avisynth stream ;)
"hq yv12 conversion" don't matter, as there won't be any conversion
Blue_MiSfit
8th December 2008, 21:33
The only problem with ffdshow RGB conversion is that it's very slow. It shouldn't be a problem, but I've had issues with it when handing 1080p material. I prefer Haali renderer for this reason (hardware based), plus you can change the luma range and color matrix on the fly and compare the differences. You can't do that with ffdshow.
rack04
8th December 2008, 21:39
You can't use ffdshow to process the output of MPC HC's DXVA decoders. If anything, they'll skip using DXVA and fall back to software decoding that way - DXVA will only work if you connect the decoder directly to a renderer in the DirectShow graph.
np: Swod - Frost (Sekunden)
So changing the output colorspace, YCbCr specification, and contrast in ffdshow has no effect on the video output from the MPC-HC DXVA decoder?
leeperry
8th December 2008, 21:41
The only problem with ffdshow RGB conversion is that it's very slow. It shouldn't be a problem, but I've had issues with it when handing 1080p material. I prefer Haali renderer for this reason (hardware based), plus you can change the luma range and color matrix on the fly and compare the differences. You can't do that with ffdshow.
good point, but HR's 601/709 coeffs are not green enough :
http://forum.doom9.org/showthread.php?p=1133980&highlight=YUY2#post1133980
doesn't matter if your display is not calibrated, though ;)
Blue_MiSfit
8th December 2008, 21:49
@leeperry:
Interesting! I had no idea.
Still, I consider that to be a minor issue - which will hopefully get fixed eventually :)
~MiSfit
leeperry
8th December 2008, 21:54
Interesting! I had no idea.
Still, I consider that to be a minor issue - which will hopefully get fixed eventually :)
well I've spoken to Haali quite a lot lately, he used to have a lot of free time when he was working on HR....but this is now history.
don't count on a fix anytime soon(same goes for the ghost lines on ati/nvdia cards when using the built-in bicubic scaler..)
oh sure if your display is not carefully D65/2.2 calibrated, it's a very minor issue...HR remains the smoothest PC video renderer hands down to me(and many friends from HCFR) :)
Blue_MiSfit
8th December 2008, 22:06
Indeed. I am somewhat D65/2.2 calibrated, but my Huey Pro doesn't do a very good job :(
I never noticed any green shift, so I'm just going to pretend I never heard this :)
Too bad about Haali - actually good for him (assuming he's working a lot). Hopefully sometime he'll have time for us again :D
~MiSfit
wozio
8th December 2008, 22:26
oh right, Leak created a PS script to progressively upsample YV12/YUY2 chroma in MPC HC...
How did he do this? MPC gets RGB data from renderer, how it is possible to get yuv->rgb convert process in here? But maybe I need to ask him directly...
[QUOTE]you got a non-HD ATI card, apparently these cards also don't suffer from the "ghost lines" in HR....these ancient cards are very valuable apparently, I would strongly advise you to keep it until the end of days./QUOTE]
I don't use HR (do you read what you're answering to?), for me it doesn't have any advantages over VMR9 renderless in fullscreen exclusive mode.
leeperry
8th December 2008, 22:45
Indeed. I am somewhat D65/2.2 calibrated, but my Huey Pro doesn't do a very good job :(
did you try w/ ARGYLLCMS ?
that's the kind of calibration ARGYLLCMS offers on my old ass 19" iiyama CRT w/ an i1d2 :
http://pix.nofrag.com/5/6/f/7244b3a94c3a062791a8f8eec4ce8tt.jpg (http://pix.nofrag.com/5/6/f/7244b3a94c3a062791a8f8eec4ce8.html)
add gamut conversion on top of it w/ proper REC601/709 conversion, and I'd say that the colors look pretty damn good :eek: :D
there's a tool in the ARGYLLCMS package to check the LUT accurary, and I've noticed that they were processed in 9 bits in VGA on ATI, and 10 bits on nvidia...funny world heh :D
Leak
8th December 2008, 23:20
How did he do this? MPC gets RGB data from renderer, how it is possible to get yuv->rgb convert process in here? But maybe I need to ask him directly...
There's a thread somewhere around here where I cooked up that shader, but it boils down to this:
MPC's renderer gets an RGB image with point upsampled chroma (i.e. the chroma pixels were just duplicated in every direction) - that means no data has been lost, save for a bit of rounding during YUV -> RGB conversion.
I simply take all pixels, convert them back to YUV, keep the Y values but interpolate linearly between the U and V values of neighbouring pixels then convert back to RGB. Sure, that doesn't create extra chroma detail, but it smooths out the blocking just like ffdshow's high quality conversion does.
np: It's A Musical - Pain Song (The Music Makes Me Sick)
Leak
8th December 2008, 23:24
So changing the output colorspace, YCbCr specification, and contrast in ffdshow has no effect on the video output from the MPC-HC DXVA decoder?
Check the "Filters" contextmenu and/or your system tray - if there's no ffdshow video decoder entry/icon it's not used. And if it were used, it still couldn't magically get the decoded video off the graphics card. That's just not supported with DXVA - okay, you could probably write a custom renderer to do it, but I'd be surprised if there were any program that supported using more than one video renderer, and as soon as you start moving 1920x1080 frames back and forth over the graphics card's bus you might as well decode them in software...
np: It's A Musical - The Music Makes Me Sick (The Music Makes Me Sick)
leeperry
8th December 2008, 23:27
I simply take all pixels, convert them back to YUV, keep the Y values but interpolate linearly between the U and V values of neighbouring pixels then convert back to RGB. Sure, that doesn't create extra chroma detail, but it smooths out the blocking just like ffdshow's high quality conversion does.
and the man is humble, but it's thanks to him that we got avisynth support in ffdshow http://forum-images.hardware.fr/images/perso/roi.gif
besides I'm also a big fan of autechre & warp records :D
EDIT: if you could add support for neuron2's CUDA decoder in ffdshow, that would be the shiznit :p
Leak
9th December 2008, 00:50
EDIT: if you could add support for neuron2's CUDA decoder in ffdshow, that would be the shiznit :p
You'd need to get nVidia to support ATI cards first, and even then that's not something I'd be interested in, sorry...
np: It's A Musical - What All People Know (The Music Makes Me Sick)
leeperry
9th December 2008, 01:35
You'd need to get nVidia to support ATI cards first, and even then that's not something I'd be interested in, sorry...
ok no biggy, I guess CoreAVC will support CUDA soon or later...so I can use LSF + Avishader() on full bitrate BD :D
at this point Avishader() copies the frames back and forth between the CPU<>GPU so it sucks a helluvalot of CPU time..luckily my Q6600 is up to the task on 720p downscales, so I can get gamut conversion in HR :cool:
wozio
9th December 2008, 08:01
MPC's renderer gets an RGB image with point upsampled chroma
What drivers/graphic cards use point sampling for chroma? I though it ended few years ago. I ask to know what to avoid.
Leak
9th December 2008, 11:14
What drivers/graphic cards use point sampling for chroma? I though it ended few years ago. I ask to know what to avoid.
I do know for a fact that my ATI 4850 does it... maybe it does proper upsampling in NV12, but I haven't tried it.
wozio
9th December 2008, 12:41
So you fed renderer with yuy2? Well if my ATI 1650 pro does properly upsample nv12 then your 4850 does too. NV12 is best supported color space in drivers, good quality deinterlacing is also supported only on nv12. Is nv12 colorspace used in encoded streams? If yes then what is the reason of converting to yuy2?
Leak
9th December 2008, 12:58
So you fed renderer with yuy2? Well if my ATI 1650 pro does properly upsample nv12 then your 4850 does too. NV12 is best supported color space in drivers, good quality deinterlacing is also supported only on nv12.
That's the point - I don't use NV12 because I don't like my graphics driver/graphics hardware messing with the image, be it "Dynamic Contrast", "Noise Reduction" or just deinterlacing.
Is nv12 colorspace used in encoded streams? If yes then what is the reason of converting to yuy2?
NV12 (NV as in nVidia) is just YV12 labelled differently (and maybe the U and V planes swapped, but that doesn't affect image quality in any way) and is nowadays used to signal the graphics card to process the video with whatever optimizing functions the hardware has.
I don't like that, so I use YV12 (which is what most video codecs process internally) instead.
And where did you get the idea I was using YUY2?
wozio
9th December 2008, 18:24
That's the point - I don't use NV12 because I don't like my graphics driver/graphics hardware messing with the image, be it "Dynamic Contrast", "Noise Reduction" or just deinterlacing.
Well all of this enhancements can be disabled and must be if one cares about image quality (except deinterlacing of course, I watch a lot of interlaced content and hardware deinterlacing is only option for me). Deinterlacing doesn't switch on progressive frames. I'm unable to spot difference between source image and rendered one on my system, that means processing is only by converting yuv->rgb.
NV12 (NV as in nVidia) is just YV12 labelled differently (and maybe the U and V planes swapped, but that doesn't affect image quality in any way) and is nowadays used to signal the graphics card to process the video with whatever optimizing functions the hardware has.
As I wrote it can be disabled.
And where did you get the idea I was using YUY2?
I don't know ;-)
Wilbert
9th December 2008, 22:32
NV12 (NV as in nVidia) is just YV12 labelled differently (and maybe the U and V planes swapped, but that doesn't affect image quality in any way) and is nowadays used to signal the graphics card to process the video with whatever optimizing functions the hardware has.
It isn't the same accordingly to fourcc.org. First the luma plane, then the chroma interleaved: http://www.fourcc.org/yuv.php#NV12 (if i understand it correctly).
tetsuo55
10th December 2008, 00:11
add gamut conversion on top of it w/ proper REC601/709 conversion, and I'd say that the colors look pretty damn good :eek: :D
what is this "gamut conversion". Why does it help?
And how do we do it?
Leak
10th December 2008, 10:57
It isn't the same accordingly to fourcc.org. First the luma plane, then the chroma interleaved: http://www.fourcc.org/yuv.php#NV12 (if i understand it correctly).
Oh, okay. Makes (some) sense to do it that way, since you only have to walk 2 planes instead of 3 when converting the image to RGB...
leeperry
10th December 2008, 11:36
what is this "gamut conversion". Why does it help?
And how do we do it?
http://www.avsforum.com/avs-vb/showthread.php?t=912720
you get proper colors from the BD/DVD original mastering basically.
most displays nowadays have wide gamuts, but movies are still mastered in SMPTE-C/EBU...so it ends up in grossly oversaturated colors :eek:
once you start watching movies in their native gamuts, there's no looking back....just like watching movies w/ Reclock & a perfectly matching refresh rate
the big triangle is the original JVC RS1 gamut, the small one SMPTE-C(thanks to the PS script) :
http://i64.photobucket.com/albums/h173/prairie_2006/shader1.png
tetsuo55
10th December 2008, 12:23
Here is the diagram for my color settings.
i don't have the chart for gamma but it was calibrated for 2.2, as this picture is too dark for my viewing environment i have hightend it a bit, but i have no clue what the value is now.
the chart is REC709
littleD
10th December 2008, 12:39
I finally found that (http://forum.doom9.org/showthread.php?t=140003&highlight=gamma+test) thread.
There you have clips for testing with levels and gamma. Download them and play level test in full screen and gamma test in actual size but remember: they are full range.
leeperry
10th December 2008, 13:13
Here is the diagram for my color settings.
i don't have the chart for gamma but it was calibrated for 2.2, as this picture is too dark for my viewing environment i have hightend it a bit, but i have no clue what the value is now.
the chart is REC709
well a properly calibrated display depends on several things :
-proper D65 calibration(through gray levels)
-proper gamma correction(between 2.2 & 2.5 depending on the room & native gamma....professional gear is 2.5, consumer is 2.2)
-proper gamut conversion(SMPTE-C for US/ASIAN DVD/BD, EBU for EUR BD/DVD, HDTV for HDV)
then I shall add proper primaries/secondaries saturations, but Colorfacts doesn't measure them...only Color.HCFR does, but then it's too annoying to fix them(24 manual DVD test patterns, enough to turn anyone nuts :D )
Steveo08
10th December 2008, 18:44
@leeperry
how can i enable/disable "gamut conversion" in haali?
is that in the haali renderer, YUV Colorspace, BT.601/BT.709?
shaolin95
10th December 2008, 18:58
I dont mean to intrude but...what does the buil in MPC-HC decoder outputs RGB or something else?
When I run them in Vista 64 I get a lot more intensity in the colors displayed by the MPC-HC decoder and EVR Custom combination than with the ffdshow (avisynth covertion to RGB32 and 701) with EVR Custom.
One thing to notice is that the ffdshow+EVR is using mpc-hc 32bit and the mpc-hc decoder+EVR is using mpc-hc 64bit.
PS BTW, all my files are 1080p
leeperry
10th December 2008, 20:34
how can i enable/disable "gamut conversion" in haali?
is that in the haali renderer, YUV Colorspace, BT.601/BT.709?
well there is a way, through Avishader() but it's very CPU consuming, and pretty complicated to set up.
if you don't have an overclocked quad, you're be better off waiting for Haali to add it in HR through PS scripts(it's almost working at this point, still needs some work though....but i doesn't use any CPU at all!)
another option is MPC HC w/ this :
http://www.avsforum.com/avs-vb/showthread.php?t=912720
I dont mean to intrude but...what does the buil in MPC-HC decoder outputs RGB or something else?
use test patterns to see whether it outputs 16-235 or 0-255(you can also change it in the nvidia drivers I think) :
http://www.burosch.de/shop/shop_content.php?coID=51
Steveo08
10th December 2008, 21:15
[QUOTE=leeperry;1222770]well there is a way, through Avishader() but it's very CPU consuming, and pretty complicated to set up.
if you don't have an overclocked quad, you're be better off waiting for Haali to add it in HR through PS scripts(it's almost working at this point, still needs some work though....but i doesn't use any CPU at all!)
another option is MPC HC w/ this :
http://www.avsforum.com/avs-vb/showthread.php?t=912720
thank you, so i will wait for a new version from haali.
tetsuo55
15th December 2008, 20:18
Reclock doesn't seem to work for me
Display 50hz
Video 25hz
Reclock set to "auto" and doing its magic.
All pans have tearing at about 1/3rd distance from the top of the screen when panning/moving.
(using VMR9, fullscreen-tearing-fix disabled)
leeperry
15th December 2008, 21:06
well use Reclock/MPC HC tearing tests, maybe your display converts to 60Hz internally :D
some motherboards(Asus?) are know to create tearing as well...do you also get tearing with HR at 50.000Hz ?
tetsuo55
15th December 2008, 22:01
well use Reclock/MPC HC tearing tests, maybe your display converts to 60Hz internally :D
some motherboards(Asus?) are know to create tearing as well...do you also get tearing with HR at 50.000Hz ?
i will try that
PS my display was set to 60hz before and the tearing was much worse, it claims to natively support 24/25/30/50/60
Steveo08
16th December 2008, 23:42
i will try that
PS my display was set to 60hz before and the tearing was much worse, it claims to natively support 24/25/30/50/60
what is better for mkv movies with 23,98 fps, 50Hz or 60Hz?
my display is working with 50,59 and 60Hz. and i use 60Hz, because i mean i had a little tearing with 50Hz or was it just an imagination?
Edit:
i am know testing my display with 50Hz and enables in haali for output to force 25fps, is that the best option for me? because 50HZ is the multiple of 25fps. and how much does help the function "vertical sync" in the nvidia driver settings?
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.