Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

The DMO Wrapper filter enables a Microsoft® DirectShow® application to use a DirectX Media Object (DMO) within a filter graph. The filter wraps the DMO and handles all the details of using the DMO, such as passing data to and from the DMO. Also, the filter aggregates the DMO, so the application can query the filter for any COM interfaces that the DMO exposes.

Limitations

The current implementation of the DMO Wrapper has the following limitations:

  • It does not support DMOs with zero inputs, multiple inputs, or zero outputs. (It does support DMOs with one input and multiple outputs.)

  • It does not support custom transports. All data transport is done through the IMemInputPininterface.

  • It does not support IMediaObjectInPlace. It always uses IMediaObjectinstead.

For information on using this filter, see Using DMOs in a DirectShow Application.

The following table shows the filter properties.

Property Description

Filter Interfaces

IBaseFilter, IDMOWrapperFilter

Input Pin Media Types

See Remarks

Input Pin Interfaces

IMemInputPin, IPin, IQualityControl

Output Pin Media Types

See Remarks

Output Pin Interfaces

IAMStreamConfig, IMediaPosition, IMediaSeeking, IPin, IQualityControl

Filter CLSID

CLSID_DMOWrapperFilter

Executable

Quartz.dll

Merit

See Remarks

Filter Category

See Remarks

Remarks

  • Pins: For each input stream on the DMO, the filter creates a corresponding input pin. For each output stream, it creates a corresponding output pin. The media types that each pin supports are determined by the DMO.

  • Encoder Interfaces: If the DMO is a video encoder or an audio encoder, the output pin exposes the IAMStreamConfiginterface.

    If the DMO is a video encoder, the output pin also exposes the IAMVideoCompressioninterface. In both cases, if the DMO supports the interface, the pin delegates to the DMO. Otherwise, the pin provides its own implementation.

  • Streaming: The filter uses the IMemInputPininterface to handle all streaming. It does not support IAsyncReaderconnections. The filter calls IMediaObject::ProcessOutputon the DMO only when it receives data from upstream (including end-of-stream notifications). Therefore, it does not support DMOs with zero input streams. In the current implementation, the filter always uses IMediaObjectmethods; it does not use the IMediaObjectInPlaceinterface.

  • Seeking: All seek requests are passed to the upstream filter, through the first input pin on the DMO Wrapper. For multiple-output DMOs, this means that the upstream filter might receive multiple seek requests when the application seeks the graph.

  • Merit: A key in the DMO's registry setting HKEY_CLASSES_ROOT\CLSIDdetermines the merit value assigned to a DMO.

    You must define a key named Meritat this point in the registry and assign it a specific DWORDvalue corresponding to the DMO's merit. Without this registry setting, DirectShow will not be recognized and use the DMO. DirectShow will not assign a default merit value to a DMO.

    The filter graph manager will only select a DMO decoder over a decoder filter if the DMO decoder's merit value specified in the registry setting is greater than the merit value of the decoder filter.

  • Category: The DMO Wrapper filter does not appear by itself in any category. When it wraps a DMO, it appears in the DirectShow category that corresponds to the DMO's category, under the name of the DMO. For more information, see Using DMOs in a DirectShow Application.

See Also