Video Mixing Renderer Filter (Compact 2013)

3/26/2014

In Windows Embedded Compact 2013, the Video Mixing Renderer (VMR) filter replaces the DirectShow Video Renderer filter as the default video renderer. The VMR filter uses DirectDraw internally to provide the following features:

  • True alpha blending of up to 16 input streams.
  • Access to the composited image before it is rendered.
  • A plug-in that can be implemented to create custom video effects. For more information, see VMR Renderless Playback Mode.

If the platform provides a hardware decoder/renderer, such as Sigma SMp 865x, it will automatically be used by the filter graph manager instead of the VMR.

The following table lists the properties of the VMR filter:

VMR filter property

Description

Filter Interfaces

All presentation and mixing modes:

IAMFilterMiscFlags

IBaseFilter Interface

IKsPropertySet Interface

IMediaPosition Interface

IMediaSeeking

IQualityControl

IQualProp Interface

IVMRFilterConfig

IVMRMixerBitmap

Windowed mode:

IBasicVideo Interface

IBasicVideo2

IVideoWindow Interface

IVMRMonitorConfig

Windowless mode:

IVMRWindowlessControl

IVMRMonitorConfig

Renderless mode:

IVMRSurfaceAllocatorNotify

Mixing mode:

IVMRMixerControl

For information about the VMR modes, see VMR Modes of Operation.

Input Pin Media Types

MEDIATYPE_Video

For more information, see DirectShow Media Types.

Input Pin Media Subtypes

Depends on the graphics hardware. Must be uncompressed video.

Input Pin Interfaces

IMemInputPin Interface

IOverlay Interface (see Remarks)

IPin Interface

IQualityControl

IVMRVideoStreamControl

Filter CLSIDs

CLSID_VideoMixingRenderer: Creates the VMR. If system resources are insufficient to create the VMR, the call to CoCreateInstance returns an error.

CLSID_VideoRendererDefault: Creates the VMR if system resources are available; otherwise, creates the previous DirectShow Video Renderer Filter.

Note: Use CLSID_VideoMixingRenderer if you need the specific capabilities of the VMR. Otherwise, use CLSID_VideoRendererDefault, which falls back to the previous video renderer filter, the DirectShow Video Renderer Filter.

Executable

Quartz.dll

Sysgen variable

SYSGEN_DSHOW_

Merit

MERIT_PREFERRED + 1

For more information, see Merit.

Filter Category

CLSID_LegacyAmFilterCategory

Remarks

The VMR filter is highly customizable and you can use it to create custom video effects and mix multiple video input streams. This filter is fully compatible with existing applications that use the DirectShow Video Renderer filter.

Use the component architecture of the VMR to configure it to operate in the following modes:

  • Windowed Mode: Use with existing DirectShow applications with a single video input stream.
  • Windowless Mode: Use with applications that render video inside an application window. The application provides the playback window and sets the video rectangle.
  • Mixing Mode: Render multiple input streams by blending the streams with the mixer and compositor subcomponents; operates in windowed or windowless mode.
  • Renderless Mode: For games that create custom video effects. The custom allocator performs rendering.
  • DirectDraw Exclusive Mode: When you want the application to take exclusive control of the graphics hardware and the DirectDraw object to create full-screen rendering.

The VMR filter contains from two to five subcomponents, depending on the configuration you choose.

The core synchronization unit is always present, but the VMR filter loads the following components separately into the filter as needed:

  • Mixer: A COM object that VMR loads when multiple input streams are detected.
  • Image Compositor: The subcomponent that blends the input streams onto the DirectDraw surface provided by the allocator-presenter.
  • Allocator-Presenter: A COM object that allocates the DirectDraw objects and communicates with the graphics card.
  • Window Manager: A subcomponent that the VMR Filter uses only in windowed mode for backward-compatibility with applications that use the DirectShow Video Renderer Filter.

For more information, see the Differences Between VMR for Windows and VMR for Windows Embedded.

For more information about the VMR, see Using the Video Mixing Renderer. For more information about filter graphs, see The Filtergraph and Its Components.

Input Pins

The input pin exposes the IOverlay Interface interface only when the VMR filter is in windowed mode. The only IOverlay Interface method that the pin implements is IOverlay::GetWindowHandle, which provides a handle to the filter's video window. All other IOverlay Interface methods return E_NOTIMPL. In windowless mode, the filter does not create a video window, so the pin does not expose the interface.

An application can provide a custom allocator-presenter object that exposes the following interfaces:

IVMRImagePresenter

IVMRImagePresenterConfig (optional)

IVMRMonitorConfig (optional)

IVMRSurfaceAllocator

IVMRWindowlessControl (optional)

For more information about custom allocator-presenters, see Supplying a Custom Allocator-Presenter for VMR-7.

An application can also provide a custom plug-in compositor that exposes the IVMRFilterConfig::SetImageCompositor interface. For more information, see IVMRImageCompositor.

See Also

Reference

Supported DirectShow Filters