我写了一个解码器变换过滤器,但它播放视频很慢。
有两个 memcpy 操作。从源媒体样本复制,然后复制到输出引脚的目标传递缓冲区。我不能完全避免 mem 副本,但可以避免复制到输出 pin 的传递缓冲区。
如果我获得输出引脚传递缓冲区的物理地址并将该物理地址直接分配给我的硬件解码器寄存器,它将帮助我避免第二次内存复制。通过探索“m_pOutput”的方法,没有任何函数返回IMediaSample::GetPointer方法返回的指针的物理地址。
请指导我如何获得这个物理地址?还有其他方法可以实现相同的目标吗?