DShow源过滤器:过滤器的哪个实例?

时间:2012-04-17 21:59:19

标签: video camera directshow capture source-filter

我有一个自定义源过滤器,通过从dshow基类实现CSourceCSourceStream来实现。它使用IFilterMapper2::RegisterFilter方法以不同的名称多次导出。 现在,在我的过滤器中,我想(尽快)知道正在打开哪个过滤器的已注册实例。 例如,假设我有一个模拟虚拟网络摄像头的DLL。同一个dll导出过滤器的两个实例,因此在(比方说)Skype中我可以选择虚拟摄像机#1 虚拟摄像机#2 。在我的CSourceCSourceStream的构造函数中,我想知道它是虚拟凸轮#1 还是虚拟凸轮#2 正在建设中。可以这样做吗?

1 个答案:

答案 0 :(得分:2)

没有记录的方法,但有一种解决方法。由于DirectShow稳定,它应该可以正常工作。

在您的过滤器类中覆盖IPersistPropertyBag::Load,并使用提供的IPropertyBag::Read读取映射到从HKEY_LOCAL_MACHINE\SOFTWARE\Classes...\CLSID_VideoInputDeviceCategory\Instance\<your-instance>读取的注册表。因此,您可以在此处输入您需要的所有身份证明,并使其可以访问。

请注意,这是从应用程序的BindToObject调用中调用的。

Call Stack

我在由IP摄像机http://alax.info/blog/1233

支持的虚拟视频输入中执行此操作