使用 GraphEdit,我可以将过滤器添加到编辑器并使用它来渲染视频。当我通过 COM(使用 DirectShow.NET)创建实例时,方法 EnumPins(后跟 Next 检查)不返回任何引脚。
为什么 GraphEdit 会显示引脚而我无法通过 COM 接口获得对引脚的引用,这是有原因的吗?
编辑:这是我用来获取第一个可用引脚(任何类型)的方法。此过滤器没有返回任何内容,但我可以在图形编辑中看到 4 个引脚(两进两出)。
public static IPin GetPins(IBaseFilter vSource, int iIndex)
{
IEnumPins pins;
var ppPins = new IPin[1];
if (vSource == null)
return null;
DsError.ThrowExceptionForHR(vSource.EnumPins(out pins));
try
{
while (pins.Next(1, ppPins, IntPtr.Zero) == 0)
{
return ppPins[0];
}
}
finally
{
Marshal.ReleaseComObject(pins);
}
return null;
}