DMO Minimum Requirements

[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.]

Every DMO should meet the following minimum requirements:

  • It must support aggregation.
  • It must expose the IMediaObject interface.
  • The threading model must be 'both'. DMOs must function correctly in a free-threaded environment.

Audio effect DMOs should support the IMediaObjectInPlace interface, for use in DirectMusic and DirectSound.

The following interfaces are documented elsewhere, but are useful for many DMOs. They are not required, however.

  • ISpecifyPropertyPages, IPropertyPage: These interfaces enable a DMO to provide a property page, for the user to set properties.
  • IPersistStream: This interface enables the DMO to save its state to persistent storage.
  • IAMStreamConfig, IAMVideoCompression: These interfaces enable a client to configure an encoder's output format and compression settings. (These two interfaces are part of the DirectShow API, but are also recommended for DMOs.)

Writing a DMO