winapidirectshowdmo

How to write a no-input stream DMO (directx media object) component


DMO seems to be used for replacing DirectShow transform filter. Some documents say there could be a DMO without input streams. But how is it supposed to work? If there is no input stream, in function IMediaObject::CheckInputType what should be written?


Solution

  • You can implement an inputless DMO, e.g. let's suppose the DMO generates output internally. Noone will call CheckInputType because no inputs exist, this is fine (your CheckInputType body will be empty and e.g. returning E_NOTIMPL).

    However you should rather step back and explain what it is for. No, DMOs are not a replacement for DirectShow filters. DMOs can be mapped into DirectShow filter space, through DMO Wrapper Filter, however the latter does not support DMOs with no inputs so your DMO is going to be useless for DirectShow pipeline.

    To create a custom DirectShow source, you need to implement full filter.