There are some rather interesting misunderstandings surrounding Direct Media Objects (DMO). I talked to one engineer the other day that called DMOs inferior to DirectShow filters. While I personally think that DirectShow is one of the most amazing technologies of all time, times are changing.
From what I understand, the DMO actually got its start with the DirectSound team. They wanted to integrate digital signal processing (DSP) plug-ins into their framework but didn’t want the overhead of using the full DirectShow implementation. The DMO was born.
You can think of the DMO as a light weight version of the DirectShow filter. If you write a DirectShow filter you can pretty much only use it within the DirectShow framework. It’s extremely difficult to wrap a DirectShow filter to get it to work outside of the framework. DMOs on the other hand are designed to be used wherever needed. You can simply chain them together, feed them data and watch them do their thing. No framework, no overhead, just pure DSP. Because of this they have become the DSP architecture choice here at Microsoft.
The DMO API is now considered the replacement for the very restrictive DirectShow filter paradigm. In fact, the new Media Foundation Transform (MFT) API is just an extension of the standard DMO APIs.
The great thing about DMOs is that if you write a simple DMO rather than a DirectShow filter, you are going to have a DSP that will work with all three media platforms on Windows, DirectShow, Windows Media Format and Windows Media Foundation with minimal effort.
So the next time you need to write a DSP take a serious look at the DMO.