2014-02-27 127 views
0

是否正确过滤器转换方法被称为whener其中一个输入引脚发送数据?如果是:如何在滤波器转换方法中确定它是哪个输入引脚?DirectShow过滤器:转换

回答

1

没有内置的方法来做到这一点。如果您的滤波器有多个输入引脚,并且每个引脚都提供了不同的介质类型,则可以使用介质类型来确定哪个引脚。另一种方法可能是为您的输入引脚的每个实例分配一个唯一的ID,并将其传递给您的转换函数。您可能必须从基类中派生输入引脚才能执行此操作。

+0

谢谢你的回答。请回答我的两个问题中的第一个,我会接受你的回答。 – Luke

+1

是的..转换函数只有当输入引脚有数据处理时才被调用...另外,顺便说一句,如果你使用CTransformFilter类,它只会提供一个输入引脚和一个输出引脚... if你需要多个引脚,你需要从CBaseFilter派生。 – Saibal

2

TransformCTransformFilter类的方法。来自MSDN:

CTransformFilter类是实现转换过滤器的基类。该类设计用于实现具有一个输入引脚和一个输出引脚的变换滤波器

在单个输入引脚滤波器中,该方法设计为不给数据源的任何标识,因为数据可能来自一个引脚。

通常,数据通过IMemInputPin::Receive方法进入输入引脚。如果您在引脚类上覆盖它,则可以在将数据传递给过滤器类时附加标识源的信息。