如何在 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
方法继续接收它们,在内部积累,当您对现有数据感到满意时进行处理。请务必处理停止和刷新情况并释放您在内部引用的数据。
我已经编写了派生自 class AM_NOVTABLE CIntTransformFilter : public CBaseFilter
的 directshow 变换过滤器。它与 receive 方法一起工作正常,但在使用 receivemultiple 方法实现后它不起作用或可能没有被调用。
我已关注 this 文档。
预期行为:我想使用 receivemultiple 方法提取多个帧。因此我实现了类似于转换过滤器的代码,但我使用了 receivemultiple 方法而不是 receive 方法。
观察到的行为:未调用 receivemultiple 方法。
是否有任何示例或文档说明如何在转换过滤器中实现接收多个。
您不想实现它的可能性很高,因为它几乎从未被调用过(当上游过滤器实现队列并且碰巧有几个样本要一次传送时,有时可能会调用它)。特别是在transform filter中,其base已经被设计成一个一个地处理样本。 Stock 实现简单地转换为 Receive
调用序列。
要处理多个样本,请使用 Receive
方法继续接收它们,在内部积累,当您对现有数据感到满意时进行处理。请务必处理停止和刷新情况并释放您在内部引用的数据。