代码之家  ›  专栏  ›  技术社区  ›  tur

Fork Direct Show三通过滤器

  •  1
  • tur  · 技术社区  · 9 年前

    我需要一个“无限引脚三通过滤器”,允许启用/禁用特定引脚实例的交付。

    首先,我坚持以Windows SDK中的“Inifinite Pin Tee Filter”示例为基础,并开始从这个基础派生代码。 但这迫使我复制许多“不必要”的代码。

    另一个选项是从Direct show Pin Tee过滤器继承,并且只覆盖必要的方法。

    • 向pin添加新属性“IsEnabled”。
    • 覆盖Receive(IMediaSample*pSample)以检查新的“IsEnabled”属性。
    • 编写一个从过滤器交互的界面。

    第二种选择真的可行吗? 除了代码重复,这两种选项的优点和缺点是什么?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Roman Ryltsov    9 年前

    InfTee Filter Sample 看起来不太复杂,这是一个很好的起点。您提到的另一个选项不包括“流结束”交付的场景,即停止到暂停的特定转换,试图避免不必要的数据复制。尝试修补这些代码,无论如何都会得到与InfTee示例相当的代码。

    另一个真正的替代选项是构建一个非常简单的“一进一出”过滤器,它根据其IsEnabled属性提供或不提供媒体样本。这允许您按原样使用stock InfTee,并在其输出中添加一些自己的阻塞过滤器实例,以实现数据切除逻辑。这两种方法都有意义。