【问题标题】:How to convert DirectShow Filter to C++\C#?如何将 DirectShow 过滤器转换为 C++\C#?
【发布时间】:2023-04-07 07:38:02
【问题描述】:

我们有一些 DS 过滤器。它可以工作 - 使用标准 win dll。

我们希望将该过滤器转换为某种不依赖于使用 DS 的程序。我们希望它以正确的顺序调用 dll,做 DS 正在做的所有事情,但不以任何方式依赖 DS - 仅依赖于过滤器 dll。

那么...如何将 DirectShow Filter 转换为 C++\C#?

【问题讨论】:

    标签: c# c++ dll directshow


    【解决方案1】:

    更好的解决方案是在单一用途图表中使用过滤器,其中您有一个自定义源从应用程序提供过滤器,以及一个自定义接收器接收输出并将其传送到应用程序。 www.gdcl.co.uk 上有一个例子。我知道这不是您所要求的,但是您对 dshow 的依赖非常有限,并且很难看到过滤器二进制文件可以工作但 dshow 基础知识不可用的环境。

    G

    【讨论】:

      【解决方案2】:

      可以在不使用 DirectShow 的情况下使用 DirectShow 过滤器,但您需要编写自己的 Graph 实现。

      这意味着您必须实现IFilterGraphIMemInputPinIMemOutputPin 接口,以使 DirectShow 过滤器认为它在其本机环境中运行。

      为了通过过滤器传递缓冲区,您可能需要实现IMemAllocatorIMediaSample

      缓冲区传递,特别是不能在托管代码中完成。您也许可以使用互操作来做到这一点,但我认为这在 C++ 中比在 C# 中更容易做到。很多年前我做过一次。花了大约3个月的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多