我有一个像Source-> InfTee-> VMR7 / VMR9这样的过滤图

当我连接诸如Source-> VMR7 / VMR9之类的图形时,图形工作正常,但是一旦插入InfTee
源和VMR之间的滤波器,然后我在InfTee滤波器的o / p引脚和VMR的i / p引脚之间的引脚连接问题。
我不想添加任何其他滤镜,例如AVIdecompressor或色彩空间转换器滤镜黑白InfTee和VMR。

连接继续
直到InfTee输出引脚的DecideAllocator()函数正常
叫。该函数具有以下代码:

hr = pPin-> NotifyAllocator(pTee-> m_pAllocator,TRUE);

NotifyAllocator返回E_FAIL。

这里的pPin是接收引脚(VMR的输入引脚),而pTee-> m_pAllocator
将InfTee从输入引脚接收的分配器自己存储
NotifyAllocator()实现。

我在网上检查后发现InfTee过滤器因其笨拙的性质而出问题。

有人可以帮我吗?

最佳答案

VMR-7,VMR-9,EVR-所有渲染器“坚持”在自己的内存分配器上,并以视频表面的内存为后盾。这些分配器有特定的要求。您无法更改此行为。

另一方面,InfTee在其自己的输出引脚内存分配器上“保持”,并在输出引脚之间共享它,因此在准备提要时不会发生数据复制(这就是您所说的“哑巴性质”) 。

您无法使其完全协同工作,在这之间需要一个额外的过滤器,以将数据从tee复制到视频渲染器的内存。就性能而言,理想的是定制转换过滤器,该复制过滤器会考虑扩展的步幅来复制数据。没有它,您将拥有最接近的库存/注册过滤器,以实现相同的目的。

10-07 12:55