2015-08-13 41 views
1

我已经编写了directshow变换过滤器,它源自class AM_NOVTABLE CIntTransformFilter : public CBaseFilter。它使用receive方法正常工作,但在使用receivemultiple方法实现后,它不工作或者可能没有被调用。如何在DirectShow转换过滤器中实现ReceiveMultiple方法?

我跟着this文档。

预期行为:我想用receivemultiple方法提取多个帧。因此我实现了类似于变换过滤器的代码,而不是收到我用收到多个方法。

观察到的行为:receivemultiple方法未被调用。

是否有任何示例或文档显示如何在变换过滤器中实现接收倍数。

+1

请提供相关的代码和更有帮助的问题描述。您需要包含*期望的行为*和*观察到的行为*。 – IInspectable

回答

1

你不想实现它的可能性很高,因为它几乎没有被称为曾经(当上游过滤器实现一个队列时,有时可能会调用它,并且巧合有几个样本一次传送)。特别是在变换过滤器中,哪个基座已经设计为逐个处理样品。实施库存只需转换为Receive调用的顺序。

要处理多个样品,请使用Receive方法继续接收它们,在内部积累,当您对已经保存的数据满意时进行处理。请务必处理停止和冲洗情况并释放您在内部参考的数据。

+0

是的,我阅读变换过滤器过程单个样本,我已经测试过它。但我想处理多个样本,这就是为什么我使用receivemultiple方法,并且我写了从basefilter类派生的过滤器。有没有办法处理多个样本。 – Mohan

+0

是的,使用'Receive'和'ReceiveMultiple'来获得它们,不要指望ReceiveMultiple'只是因为你实现了而被调用。 –

+0

但如果我想'ReceiveMultiple'被调用每次都有可能实现。 – Mohan