如何在 DirectShow 转换过滤器中实现 ReceiveMultiple 方法?

How to implement ReceiveMultiple method in DirectShow transform filter?

我已经编写了派生自 class AM_NOVTABLE CIntTransformFilter : public CBaseFilter 的 directshow 变换过滤器。它与 receive 方法一起工作正常,但在使用 receivemultiple 方法实现后它不起作用或可能没有被调用。

我已关注 this 文档。

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

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

是否有任何示例或文档说明如何在转换过滤器中实现接收多个。

您不想实现它的可能性很高,因为它几乎从未被调用过(当上游过滤器实现队列并且碰巧有几个样本要一次传送时,有时可能会调用它)。特别是在transform filter中,其base已经被设计成一个一个地处理样本。 Stock 实现简单地转换为 Receive 调用序列。

要处理多个样本,请使用 Receive 方法继续接收它们,在内部积累,当您对现有数据感到满意时进行处理。请务必处理停止和刷新情况并释放您在内部引用的数据。