DirectX Media Objects (DMOs) are COM-based multimedia and data-streaming components. In some respects, DMOs are similar to DirectShow filters. Like DirectShow filters, DMOs take input data and use it to produce output data. As the APIs for DMOs are much simpler than the corresponding APIs for DirectShow, they are easier to create, test, and use. For encoding/decoding, audio capture, audio processing and video processing effects, Microsoft encourages developers to write a DMO instead of a DirectShow filter. DMOs can be used in many scenarios:
- Applications based on DirectShow can use DMOs through a DirectShow filter called the DMO Wrapper filter. The distinction between filters and DMOs is transparent to the application. The application does not directly call the DMO APIs.
- Applications based on DirectSound can use audio effect DMOs. Again, the application is shielded from the low-level DMO APIs by the higher-level DirectSound APIs.
- Applications can also use DMOs directly, such as DMOs for video effects, audio capture effects etc.
- The Windows Media SDK and ASF framework support DMO-based codecs. The codecs shipping as part of Windows Media Player/Encoder are not DirectShow filters but DMOs. Through the DMO wrapper filter, they are usable in DirectShow.
Windows Media-based software encoders from Microsoft use DMO-based codecs through encoder profiles. Windows Movie Maker can also use encoder profiles. Only Microsoft tools use DMOs. Third party DMO codecs are very rare or almost non-existent, unlike Video for Windows, ACM or DirectShow codecs. The Leadtools, for example, install DMO-based H.264 codecs. Using the Windows Media Profile Editor (part of Encoder 9 Series), an encoder profile which uses such third party codecs instead of the Windows Media codecs can be created. Then, Windows Media Encoder and Windows Movie Maker would be able to export WMV/ASF files with non-Microsoft codecs.
Media Foundation Transforms (MFTs) have replaced DMOs as developers transition from DirectShow to Media Foundation.