我使用此函数创建有效的DirectShow过滤器实例:
private IBaseFilter CreateFilter(Guid category, string name)
{
object source = null;
Guid guid = typeof(IBaseFilter).GUID;
foreach (DsDevice device in DsDevice.GetDevicesOfCat(category))
{
if ( device.Name == name )
{
device.Mon.BindToObject(null, null, ref guid, out source);
break;
}
}
return (IBaseFilter)source;
}
当我尝试使用此功能创建“GPL MPEG-1/2 Decoder”过滤器的实例时,我的应用程序在 BindToObject 功能崩溃。它曾经工作但我格式化我的笔记本电脑,我面临这个奇怪的问题。你知道为什么我不能创建这个过滤器的实例吗?
P.S:GraphEdit可以插入此过滤器和打开属性对话框。