Welcome Guest ( Log In | Register )

Outline · [ Standard ] · Linear+

 Video Renderers., OpenGL/Directshow-based video renderers

views
     
TS1024kbps
post Oct 20 2007, 05:00 PM, updated 16y ago

李素裳
*******
Senior Member
5,780 posts

Joined: Feb 2007



Video renderer play an important role on video playback, choosing a correct video renderer will improve video playback quality or performance too.
this guide is just a rouge explanation of various Directshow renderer and mplayer video renderers.
tips on zoomplayer and here:
http://xs220.xs.to/xs220/07426/zp.png
on zoom player, press ctrl + o, press the button "swtich to advanced mode" > playback > video, to select custom video renderers.

here is the example how to select custom video renderers from media player classic:
http://xs220.xs.to/xs220/07426/mpcr.png


Overlay mixer
Its a good old renderer since Direcshow 6.0, support YV12 and YUY2 colorspace output on most case.(depend on video cards, new cards even support RGB15/16/32 colorspace) Support DXVA1
If user overrided the video decoder output colorspace other than YUV/unsupported format,
DirectDraw will be used and it will show pixelated picture when resize to fullscreen mode because it dont use any scaler,
unless the video resolution is match the user monitor, or using software scaler resize the video to match the monitor resolution.
This can be happend too if user attemp to run 2 video players at the same time, first video player use overlay mixer, second one will use non-hardware accelerated DirectDraw interface too.

its the fastest video renderer becasue it use Hardware Overaly,
With AMD x2 6000+, no laggness when playback 1080p Apple HD trailer with ffdshow, video delay less than 400ms
(ahh yes because ffdshow will turn off h264 loop filter if the delay is more than 350ms LOL)
In order to use Overlay mixer to playback a video, Aero must be turned off(Vista basic theme).
and so far only some player can choose custom renderer, eg media player classic, inmatrix zoom player and mplayer.


Video Mixing Renderer 7
Introduced on Windows XP and its default renderer for Windows XP, support YUV and RGB colorspace.
can be rendered as plain offscreen, 2D and 3D mode, support frame queuing up to 62 samples(depend on amount of GPU video memory/video file fps by default, adjustable trough registry.).
its a stable and a little bit slower than Overlay mixer, use DirectDraw, and use overlay mixer while it can(according the media player classic tooltips :P)
Much faster and less problems than VMR9/HVR, but does not support hardware deinterlacing.


Video Mixing Renderer 9
Introduced on DirectX 9.0, support YUV mixing mode(less cpu cycle), DXVA, exclusive fullscreen mode(with renderless mode, remove tearing, but might cause stability issue, cant use menu during this mode).
slower than VMR7 and never use overlay mixer, use shader to resize video, use simple bilinear if video card doesnt support Pixel shader 2.0
able to use custom pixel shader, from mpc build-in/atitraytool to manually written one.
ATI control panel's(directx) pixel shader option will affect the video output.(no longer working)
support frame queueing(can be actived by using latest version of ffdshow, with adjustable amount of queueing frames), its run on seperate thread, so it will run better on SMP/HT and multicore processor.
Both VMR7/9 windowed mode will use DDraw rendering mode when vista is running without aero, and video will look pixelated when playing on fullscreen mode.
actually it has many adjustable options, its only can configure through graphedit, but the setting will not be saved upon exit graphedit.

here is the screenshot from mpc, with VMR9 renderless YUY2 colospace, its showing the incorrect black level, and YUV colorspace artifact porblem,
altough it can be fixed by usng ffdshow level filter and resizer, use renderless mode or use RGB32 colorspace output:


YUY2 mode on ATI 2600xt:
http://xs321.xs.to/xs321/07446/yuy2.png

RGB32 mode on ATi 2600xt:
http://xs321.xs.to/xs321/07446/rgb32.png

YV12 mode on nv6150:
http://xs221.xs.to/xs221/07454/vmr9-yv12.png

YV12 mode on nv6150 with EVR:
http://xs221.xs.to/xs221/07454/evr-yv12.png

SRT sub decoding with ffdshow, vmr9 windowed mode. awesome quality isnt it?
ASS/SSA sub are un-tweakable on ffdshow, and its look different with mplayer's opengl.
http://xs124.xs.to/xs124/08093/vmr9-ffdshow440.jpg

ASS sub decoding wit mpc internal sub decoder, with VMR9 renderless mode, it can look as good as opengl, or above one, just need a little tweaks on font color, alpha, shadows and border thickness.
http://xs225.xs.to/xs225/08090/vmr9-render...-mpc-ass478.jpg

DVD decoding with Microsoft MPEG2 dshow decoder on VMR9 renderless YUV mixing mode, 2600XT with mpc-hc, well Dxva does work with MPEG1 video too.
It works with EVR/Custom presenter mode too, but that would be Dxva2 MPEG2 IDCT mode. and hardware deinterlacing works perfectly as well.
http://xs128.xs.to/xs128/08241/mpeg2-dxva1799.jpg


Haali's Video Renderer
available if Haali Media Splitter installed. only works with YUY2/UYUY and RGB32 colorspace.
this renderer runs on seperate thread. many options are adjustable during playback, eg color plane, frame, buffer, YUV colorspace, luma range and sharpness.
All renderer(renderless mode) above share similar problems, user must pause video before can use menu to adjust options, else the video gonna lag behind alot untill unwatchable if user are using weak GPU.
Read more about it on doom9 haali's renderer discussion threads.

its great renderer if you have a mid-end GPU, eg 2600xt equivalent or better,
this renderer's frame buffer quite efficient,it can quickly restore the video frame buffer after the high complexity scenes.
might be due to it can use GPU video memory and frame buffering together, i tried to play bbc_japan_1080p(quicktime hd trailer),
with ffdshow, YUY2 colorsapce, "Drop frame on delay" and "skip H264 deblokng on delay" are turn of during test, its perform better than other video renderers but of course with minor lags.
ATi 3D setting "balanced/Optimal performace" profile is used during test.

The max amount of video frame buffering largely depend on video resolution and colorspace used during playback,
eg a 480p video, HVR will buffer all frames specified in the settings to video/system memory,
while RGB output colorspace will reduce tiny amount of max video frame buffering,
1080p will reduce almost 4x(=64).
CPU/GPU usage also affect the amount of buffered video frames, if user's system too slow(CPU/GPU usage maxed out),
the available video frame buffer will reduce to minimum and video/audio will out-of-sync.
This renderer does not have incorrect black level problem, and blocky red color problem like VMR/EVR on yuv renderless/mixing mode/custom presenter mode.
the only downside is, seeking will reset the buffer, means after seeking, video buffer will be empty and HVR will need to re-buffer it again.

screenshot for quick glance:
http://xs220.xs.to/xs220/07420/hvrp.png
http://xs220.xs.to/xs220/07420/hvrp2.png
BT.601, BT.709 explaination on wiki.

HVR is showing ghost lines on highlighted area, its a known issue with ati card(hd2000 series iirc) when renderer using pixel shader 2.0 for resizing, VMR and EVR has the same problem too, although ffdshow software scaler can fix this bug, but there is no point to use this renderer anymore :p
newer version of mpc-hc fixed this display bug by using pixel shader 3.0 on VMR/EVR
http://xs322.xs.to/xs322/07524/shakugan.jpg

screenshot of the japan bbc hd motion gallery, 1080p. this red leaf scene is the one of the most complex scene on this clip,
without GPU accelerated decoding, software decoding mode(coreavc or mpc internal h264 decoder) need atleast dual core 2.4GHz CPU or better to playback it without any frame drop.
http://xs124.xs.to/xs124/08086/japan_bbc_m...ry_1080p473.jpg

screenshot of graphedit rendering video using HVR, probably the proof of HVR is d3d9 video renderer.
http://xs225.xs.to/xs225/08116/hvr-d3d9-graphedit793.jpg


Enhanced Video Renderer
Available if.NET framework 3.0 installed, support DXVA2 under vista, and its the only renderer that can use it, unlike windows xp, which have 3 renderer support DXVA, overlay mixer and VMR7/9.
the normal rendering mode still have the so called "wash out" problem when the decoder use YV12/YUY2 output, unless the video is hi-res type, eg apple quicktime HD video,
windows media player 11 will show this kind of symtomp,
just use ffdshow and the internal resize filter to restore the color/brightness, or use renderless mode with "16-235->0-255" shader on mpc.
EVR should be the best directshow renderer on vista, why? because its almost as fast as Overlay Mixer, no quality problem with YV12/YUY2 output colorspce, and it can co exist with Aero.

Here is the screenshot of EVR custom presenter mode, using media player classic build in shader:
http://xs221.xs.to/xs221/07440/evr.png

EVR custom presenter mode on mpc-hc, playback with internal h264 dxva2 decoder.
http://xs323.xs.to/xs323/08012/awayuki.jpg

DVD playback on vista with wmp11, onboard GPU like nv6150 will not be able to playback at constant 60fps, 1680x1050 fullscreen mode or higher, its require powerful GPU, due to hardware deintelacing need large amouth of bandwidth.
http://xs124.xs.to/xs124/08083/shakugan-wmp11-evr654.jpg


Mplayer's X11/OpenGL Renderer
Available on mplayer, This renderer might be the second fastest renderer from above directshow based renderers, probably the most advanced opengl renderer.
much less complicated, it can run on any video card as long as user's video card/driver support OpenGL 1.2 or above.
first generation have many tuneable options including costum fragment program, costum "gamma ramp" and scaling fucntions.
provide big speed up on hi-res video with direct rendering enabled(only works with nvidia GPU).

second generation(gl2) support multiple texture but abit slower, less options to tweak,
its unlikely to improve furthur because the multiple texture support increase the complexity of the codes.

runs better on fullscreen mode, less problematic than renderers above(only true if you are on linux platform lol).
ATI control panel's(OpenGL) pixel shader options will affect this renderer as well.(deprecated)
if nVidia user wan output thier video to uber hi-res lcd or hdtv, this render might be the best choise.
just type mplayer.exe -vo gl:yuv=6 -dr myvideo.mp4 on console to activate opengl renderer.

this OpenGL renderer is good at rendering sub, u probably cant find a second renderer that rendering subtitle as sharp as this renderer,
its fast when use with nVidia GPU, while ATi is much slower but still acceptable, unlike the VMR7/9/HVR/EVR(especially renderless mode)
which need a powerfull GPU to play video with high quality subtitle rendering.
this renderer doesnt have incorrect black level problem like directshow renderers above, so we dont have to mess with resizer or level filter to get correct colorimetry.

Currently the recommend OpenGL parameter for ATI GPU user is "-vo gl:yuv=2:force-pbo:ati-hack -dr -noslices",
the author claims its much faster than overlay mixer, but im not able to test it since it produce garbled output, its due to buggy ati driver,
And now its recommended settings since the bug was fixed.

here is the screenshot from mplayer's opengl renderer, default sub config:
http://xs121.xs.to/xs121/07445/opengl-mplayer.png

mplayer's opengl renderer with custom fragment program loaded, emboss.fp
http://xs124.xs.to/xs124/08084/crysis-embo...11opengl389.jpg

custom subtitle config, hardsubbed video prolly wont look better than this.
http://xs224.xs.to/xs224/08094/opengl-fontconfig-srt378.jpg

Matrixview
as the name said, it will make your video look like matrix array with lot of words;)
available on patched mplayer, patch can be obtain from here:
http://oss.netfarm.it/mplayer-win32.php

here is the screenshot of matrixview:
http://xs124.xs.to/xs124/08085/august-fanbox-demo538.png
original image:
http://xs125.xs.to/xs125/08135/august-fanbox-original241.jpg

look nice huh? with such high detailed image, hard frame drop must be enabled on mplayer to mantain audio/video sync, because this renderer is very slow,
and its hard to configure properly too, due to its ignoring video aspect ratio if playing on fullscreen mode.

CACA, Color ASCII Art library.
here is the screen shot of libcaca during playback on VLC:
http://xs320.xs.to/xs320/07420/caca.png


Vidix, Video interface for *nix, yeah for Windows platform too.
this renderer need to install direct hardware access driver before it can be used. Support many old video hardware to the latest one.
Rendering video in overlay mode, but doesnt work on vista iirc, not sure if its OS or hardware problem.
Crashed vista twice lol.
its work on windows xp, and my old ati radeon 9600xt(rv360), slower than overlay mixer, abit buggy, if this video renderer crashed, the OS might crash as well.

Direct3D video renderer, VLC, gpac player, virtualdub, mplayer(SDL, but its broken), divx player and quicktime has one too, but quality and performance varies between them. VMR/HVR/EVR are much advanced type of d3d renderers.

Conclusion:
1. disable aero will improve video rendering performance with renderers above if using weak GPU.

2. High quality SRT type subtitle rendering with ffdshow wont work with HVR/VMR7/9 renderless and EVR custom presenter mode, while SSA works on all renderers, but its tweaking the font/colors/ect options is only possible with mpc subtitle decoder.

3. VMR7/9/EVR/renderless only look better with RGB32 colorspace output but it cost alot of cpu cycles, and it doesnt have incorrect black level problem.(vista SP1 borked EVR custom presenter mode, so the workaround for this problem should be same as other video renderers to get rid of weird black level problem.)

4. vmr9 yuv mixing mode use less bandwidth than RGB32 mode but it has been disabled on vista due to various issue with mpc on vista, but it still can be used by enabling windows xp compatibility mode, afaik, now its only work if decoder are using YUY2/UYVY/NV12 output colorspace, and hardware deinterlacing(force bob.). so now only some DVD decoder, CoreAVC(with directshow deinterlacing enabled) and ffdshow can be used with this mode.

5. high anti-aliasing quality settings from ATI/nVidia control panel will cause VMR7/9/HVR/EVR(renderless/custom presenter mode) unusable, eg 8x, edge-detect filter with 24x samples(and probably mipmap quality setting), VMR9 gonna skip alot of frames, HVR doesnt skip frame but the decoder fps will be massively dropped, especially if playback DVD with hardware deinterlacing,
because non of these setting will make your video and subtitles look better, so its better set them to minimum or disable them to get a smooth dvd playback performance, or just use software deinterlacer.

6. VMR9 windowed mode on vista has weird behavior, video will look pixelated(nearest neighbourhood scaling) on fullscreen mode if Aero is disabled.

7. D3D renderers(VMR7/9/EVR/HVR)/renderless/cp on vista doesnt work with YV12/I420/IYUV(Planar YUV mode), mpc will fallback to system default renderer(a.k.a. VMR7).

8. Tearing problem on DDraw/D3D video renderer mostly cause by buggy video drivers, eg Ati Catalyst, thier drivers often cause tearing on various renderers include OpenGL, but mostly will got fixed on newer version lol.

9. here is the example a corrected "wash-out" color problem on D3D video renders, EVR custom presenter mode by using ffdshow level filter. i've merged the 3 different colorspace screencap for easier comparison.
http://xs128.xs.to/xs128/08220/rgb32vsyuy2819.png
Here is the settings, the good thing is, its work with "plain" renderer too, because they cannot use shader "16-235->0-255" to perform level correction, those shader are for " VMR7/9 Renderless/EVR Custom presenter" renderer only.
The bad thing is, if your video file has bigger than 720p resolution, these renderers will change to normal contrast mode(16-235),
and if level filter is active, the video will look "over-bright", because the level correction got applied twice. Though user can set ffdshow preset autoloading condition to avoid this kind of problem.

user posted image

10. "Blocky Red color" problem on EVR custom presnter mode with YUY2 colorspace. Mplayer OpenGL renderer has the same problem too, As i said above, They only look better with RGB32 colorspace when using "VMR7/9 Renderless/EVR Custom presenter", While OpenGL look great when using yuv=4 :3
http://xs128.xs.to/xs128/08231/evrvsogl746.png

11. VMR7/9/renderlss(when not using mixer mode) doesnt support hardware deinterlacing, it will show scan-line effect and the fps will remains 29.97(ntsc-dvd).
while other video renderers work best with NV12 colorspace when deinterlacing, it look much better than YUY2 because less jagged edge.

12. Here is the 3200x2400 video resolution playback conclusion, the video source is mpeg1 video with 800x600, resized by using ffdshow with Gauss resize method, YUY2 output colorspace.
VMR9 yuv mixing consume 216mb of video memory, HVR use about 481mb, while EVR cp use 700mb. Please note that video memory is different from system memory.
While Haali video renderer only able to playback smoothly with proper settings, and its still able to playback smoothly even there is only 3 video buffer.
VMR9 renderless yuv mixing mode is same too, but lock-back buffer must be disable, it was meant to solve the tearing problem, but with this kind of insane resolution, it needs to disable to prevent choppy playback.
On Vista, the "superfetch" or whatever caching feature pretty much ruined those video renderer performance, both HVR and VMR9 playback will starting become jerky if vista increasing/decreasing the cached memory.
And those plain/normal renderers would be usefull here because, they consume afew system resource(60mb video memory, EVR), no tearing, no more wrong PC<->TV level.
and PS2.0 Bicubic resizer? ffdshow Gaussian scaler works very well lol.


Credits:
http://xs.to for free images hosting.
irfanview and pngout to optimizing png image for smaller size.
atitraytool and Rivatuner for realtime On Screen FPS and other infos display.


P.S. spoilers and direct image display removed, due to firefox will load all image even they are inside spoiler, without user clicking the spoiler, while opera is opposite. because most of my screenshot are large as 1680x1050, file size approximately 1mb with jpeg compression, while png will be ~150% larger.

my reviews are not entirely accurate because im not pro, and the testing environment is very limited.


This post has been edited by 1024kbps: Aug 16 2008, 03:23 PM

 

Change to:
| Lo-Fi Version
0.0170sec    0.32    6 queries    GZIP Disabled
Time is now: 28th March 2024 - 09:19 PM