Winapi 如何编写无输入流DMO(directx媒体对象)组件

Winapi 如何编写无输入流DMO(directx媒体对象)组件,winapi,directshow,dmo,Winapi,Directshow,Dmo,DMO似乎用于替换DirectShow变换过滤器。一些文件说可能存在没有输入流的DMO。但是它应该如何工作呢?如果没有输入流,在函数IMediaObject::CheckInputType中应该写入什么 您可以实现无输入DMO,例如,假设DMO在内部生成输出。没有人会调用CheckInputType,因为不存在任何输入,这很好(您的CheckInputType正文将为空,例如返回e\u NOTIMPL) 然而,你应该退后一步,解释一下它的用途。不,DMO不是DirectShow筛选器的替代品。D

DMO似乎用于替换DirectShow变换过滤器。一些文件说可能存在没有输入流的DMO。但是它应该如何工作呢?如果没有输入流,在函数
IMediaObject::CheckInputType
中应该写入什么

您可以实现无输入DMO,例如,假设DMO在内部生成输出。没有人会调用
CheckInputType
,因为不存在任何输入,这很好(您的
CheckInputType
正文将为空,例如返回
e\u NOTIMPL

然而,你应该退后一步,解释一下它的用途。不,DMO不是DirectShow筛选器的替代品。DMO可以通过DMO包装过滤器映射到DirectShow过滤器空间,但是后者会使您的DMO对DirectShow管道毫无用处


要创建自定义DirectShow源代码,您需要实现完整过滤器。

THANS Roman R。感谢您回答我的问题。我将DirectShow源代码过滤器作为flashplayer中使用的虚拟摄像头。它在许多flashplayer版本中都能正常工作,但在borwser firefox中只有一个版本。所以我想看看firefox是否使用DMO而不是directshow源代码过滤器。DMO不太可能参与其中。使用AdobeFlash,作为DirectShow管道主机的播放器可能会对摄像头的实现做出一些意想不到的假设,它不喜欢您的虚拟摄像头。这可能是一个缺少的界面,未能遵守特定的用例等。他们为真实的摄像头调整它,虚拟设备由他们自己决定。好的,我将尝试找出其他地方是否有错误。如果使用没有输入流的DMO,什么是DMOCATEGORY(dmoreg.h中的dmo_类别似乎都是一输入一输出的dmo,如视频解码器、视频效应器..)应该在注册DMO时写入?这无关紧要。您的零输入DMO是有效的,可以在任何有意义的视频类别上注册。但它与DMO包装器不兼容,因此您的DMO对于DirectShow将保持不可见。