Choosing the Right Video Renderer

[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

DirectShow provides several video renderer filters, summarized in the following table.

Filter Remarks
Enhanced Video Renderer (EVR) Uses Direct3D 9. Requires Windows Vista or later.
Video Mixing Renderer 9 (VMR-9) Uses Direct3D 9. Requires Windows XP or later.
Video Mixing Filter 7 (VMR-7) Uses DirectDraw. Requires Windows XP or later.
Overlay Mixer Supports hardware overlays through DirectDraw.
Legacy Video Renderer filter. Uses DirectDraw or (rarely) GDI

 

Which renderer to use depends largely on which versions of Windows you need to support.

  • In Windows Vista and later, applications should use the EVR if the hardware supports it. Otherwise, fall back to the VMR-9 or VMR-7. The EVR offers better performance and better video quality than previous renderers. Also, it is designed to work with the Desktop Window Manager (DWM).
  • Prior to Windows Vista, use the VMR-9 if the hardware supports it and video port functionality is not required. Otherwise, use the VMR-7.
  • On older systems, you might need to use the Overlay Mixer (for video port or hardware overlay support) or the legacy Video Renderer filter.

The IGraphBuilder::Render and RenderFile methods use the VMR-7 by default. If the hardware does not support the VMR-7, these methods fall back to the legacy Video Renderer filter. The EVR and VMR-9 are never the default renderers.

Video Rendering