View Full Version : Enlighten me about colorspaces and renderers
So, for years I've been using MPC and FFDShow but I have never understood the differences between the renderers and especially the colorspaces. I've been using the VMR9 renderer but after reading this forum gave the Haali Renderer a try and really can't tell a difference.
Therefore I ask you, what are the pros and cons of using the Haali Renderer over the VMR9? Haali requires the YUY2 or RGB32 colorspace while VMR9 can use the YV12 that seems to be what many videos I watch use. What are the benefits and disadvantages of using different colorspaces?
Note that I only watch videos on my monitor, not through a TV. Do the colorspaces matter more if you use a TV?
ExtraEye
2nd June 2007, 23:16
here's what i understand:
colorspaces are different techniques to store picture/frame detail. RGB uses red, green and blue at different quantities to create a picture. yuy and yv12 use luma and chroma mainly. the luma is the lines and tones - it alone creates a picture without color. the color is stored in the chroma. yv12 and yuy take less memory when you store with them. convertions between RGB and yuy/yv12 aren't lossless (they lose a little detail) so shouldn't be made too much.
halli renderer is the same as VMR9 with the addition of better(?) resizing (when your video's size is adjusted to your monitor's size it's "resizing") and also it's supposed to take care of the color problems with yv12 in VMR9 since some people have bad results with yv12 video in VMR9 mode.
please correct me if I'm wrong.
check
3rd June 2007, 12:07
For colourspaces, give this a read: http://mewiki.project357.com/wiki/Ffdshow_reference#Output
As for renderers, I recommend haali's first, overlay mixer second, VMR7 third and VMR9 last. The reasons are simple:
o haali's renderer always gives the correct picture (in terms of black levels and visual quality), and has a high quality resizer implemented (bicubic). The only disadvantage is that it requires a reasonably recent video card and isn't as fast as overlay mixer.
o overlay mixer has very high compatibility, is the fastest renderer and also always gives correct picture output (the default bright/contrast settings in the nvidia control panel are borked though and must usually be changed). I recommend this whenever haali's cannot be used.
o both VMR7 and VMR9 suffer from numerous issues. As they are implemented differently with varying video cards and drivers the list of problems changes, but the big common ones are: bad black levels (TV scaling), slow decoding, green tint on everything and occasionally bad resizing.
erikt
6th June 2007, 16:34
I'm in a similar boat as the OP with regards to trying to understand this stuff. I'd like to pose a few of follow-on queries if I may...
First, I gather that any video file will have been encoded using a particular colourspace, and that converting between colourspaces is lossy and should be avoided as much as possible. Correct so far? Are there colourspace conversions that are non-lossy?
Presumably my monitor inputs have a native colourspace, for example a component input uses YPbPr which I believe is similar (but not identical?) to YUV, while a VGA input would accept RGB (I think). What about a DVI input? Is there a colourspace conversion between the monitor input and the screen?
So, it seems to me the goal should be to ideally have at most 1 colourspace conversion, so I should set FFDShow (and my renderer) to output whatever the monitor input native colourspace is. Is this an oversimplification, or just plain wrong?
I'll leave it at this for now, I'd appreciate any responses pointing out where I've gone wrong or missed some important point...
cheers,
erikt
check
7th June 2007, 04:50
Colourspace conversions between YUV formats are generally close enough to lossless to be considered lossless for playback, and there is even less colour change between RGB formats. It's only in conversion between the two that you'll run into problems. I'd simply advise you output YV12 from your decoder, which is the colourspace used by 99% of all video codecs.
bmnot
13th June 2007, 10:35
Since we are discussing renderers here, can I ask what my buffer and frame settings should be for Haali renderer? I have a rather high end PC (2.5 X2, 2GB Ram, Geforce8). Also, does Haali support YV12 yet?
check
13th June 2007, 10:57
1) Use the defaults
2) No
cyberbeing
18th June 2007, 21:54
I always use a frame setting of 120 frames to be a multiple of both 24fps/30fps and have a buffer 5 and 4 seconds respectively. The buffer size I set to the max of 256MB because if you don't allocate enough buffer it can use less then your frame setting (don't set this higher then the amount of memory your graphics card has). I have a fast computer and a moderately recent 512MB graphics card so truthfully I can't see a difference between any of the value choices but it makes me feel better to pick a logical value.
Also note that Haali just doesn't support YV12 output but it will accept YV12 input and just do the conversion to YUY2 for you. So your best bet is to just use ffdshow's "pick closest matching colorspace" and not worry about it.
vBulletin® v3.8.4, Copyright ©2000-2010, Jelsoft Enterprises Ltd.