源过滤器cBuffers> 1和GetDeliveryBuffer

时间:2015-04-15 19:20:36

标签: c++ directshow

我正在为directshow编写一个源过滤器。 intel Media SDK H.264编码器需要ALLOCATOR_PROPERTIES->cBuffer > 1

DoBufferProcessingLoop时,我使用GetDeliveryBuffer(&pSample, NULL, NULL, 0)

获取缓冲区

我是否需要做任何事情以确保我获得下一个缓冲区,而我不会覆盖之前的缓冲区?
我注意到了示例编码器中的pSample->AddRef()。我GetdeliveryBufferFillBuffer时是否需要做类似的事情?

1 个答案:

答案 0 :(得分:1)

在对缓冲区的唯一引用是其拥有的内存分配器的引用之前,不会重用缓冲区。

这意味着在DoBufferProcessingLoop中你会得到干净的缓冲区,你可以填充它,然后将它传递到下游。然后魔术继续,最后缓冲区在被丢弃或呈现时准备重用,并且没有被其他任何人使用。你不需要做任何事情来确保这一点,它可以自己发生。