Fork Direct Show 三通过滤器

Fork Direct Show Tee Filter

我需要一个 'Infinite Pin Tee filter' 允许 enable/disable 传送到特定的 pin 实例。

起初,我想以 Windows SDK 中的 "Inifinite Pin Tee Filter" 示例作为基点,并开始从该基点分叉代码。 但这迫使我复制大量 "unecessary" 代码。

其他选项是继承自Direct show Pin Tee filter,只重写必要的方法。

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

InfTee Filter Sample 看起来并不复杂,是一个很好的起点。您提到的另一个选项不包括 "end of stream" 交付的场景,停止到暂停的特定过渡,试图避免不必要的数据复制。尝试修补那些你最终会得到与 InfTee 示例相当的代码。

您的另一个真正的替代选择是构建一个非常简单的 "one in, one out" 过滤器,它根据其 IsEnabled 属性 提供或不提供媒体样本。这使您可以按原样使用现有的 InfTee,并将您自己的阻塞过滤器的几个实例添加到其输出中,以实现数据切割逻辑。两种方法都有意义。