DirectShow IBaseFilter EnumPins什么都不返回

时间:2013-03-12 15:32:31

标签: directshow directshow.net

使用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;
}

0 个答案:

没有答案