gpt4 book ai didi

windows - DirectShow:如何通过IMediaSample::GetPointer方法获取传递缓冲区返回的物理地址

转载 作者:可可西里 更新时间:2023-11-01 10:37:07 31 4
gpt4 key购买 nike

我写了一个解码器变换过滤器,但它播放视频很慢。

有两个memcpy操作。从源媒体样本复制,然后复制到输出引脚的目标传送缓冲区。我不能完全避免 mem 拷贝,但是可以避免拷贝到 output pin 的 delivery buffer。

如果我获得输出引脚传送缓冲区的物理地址并将该物理地址直接分配给我的硬件解码器寄存器,这将帮助我避免第二次内存复制。通过探索“m_pOutput”的方法,没有任何函数返回IMediaSample::GetPointer方法返回的指针的物理地址。

请指导我如何获得这个实际地址?还有其他方法可以达到同样的效果吗?

最佳答案

  1. 您通过调用 IMediaSample::GetPointer 询问了您拥有的地址,因此看起来您已经拥有了您所要求的内容
  2. 输出引脚负责引脚上的内存分配器,因此您的解码器可以使用自己的内存分配器,尤其是 IMediaSample::GetPointer 方法。您可以使用您分配的缓冲区,并与 HW 解码器实现共享(此外,您可以在那里进行特定对齐等,反之亦然)从解码器获取缓冲区以在 DirectShow 管道中进一步使用。
  3. 我看到它是 Win CE,但是无论如何,过多的 memcpy 似乎不太可能在视觉上变慢,也许您还有其他瓶颈。

关于windows - DirectShow:如何通过IMediaSample::GetPointer方法获取传递缓冲区返回的物理地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19494534/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com