访问VMR9内的Direct3D设备
我有一个视频解码器过滤器,位于以 VMR9 或 EVR 作为视频渲染器的图表内。
VMR9 和 EVR 使用 Direct3D 进行实际渲染。借助 EVR,我可以相对轻松地访问 D3D 设备(我只是使用 IMFGetService::GetService 请求它)。
然而,VMR9 并没有公开 IMFGetService,而且更一般地说,IMFGetService 似乎特定于 Vista 和 Windows 7。上面,就像整个 DXVA2 架构一样。
有没有办法访问VMR9内的Direct3D设备?
I have a video decoder filter that lives inside a graph with VMR9 or EVR as the video renderer.
VMR9 and EVR use Direct3D to do the actual rendering. With EVR, I can access the D3D device with relative ease (I just ask for it using IMFGetService::GetService).
However, VMR9 does not expose IMFGetService, and, more generally, IMFGetService seems to be specific to Vista & above, like the entire DXVA2 architecture.
Is there a way to reach the Direct3D device inside VMR9?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您提供自己的分配器/演示器实现,您将可以访问 vmr9 的 d3d 表面。
查看有关 vmr 无渲染模式的 msdn 页面
http://msdn .microsoft.com/en-us/library/dd390957(VS.85).aspx
GetSurface 调用是获取 d3d 表面所需的:
http://msdn.microsoft.com/en- us/library/dd390502(v=VS.85).aspx
GetSurface 是 IVMRSurfaceAllocator9 接口的一部分。
you'll have access to the vmr9's d3d surfaces if you provide your own implementation of an allocator/presenter.
Check out the msdn page on vmr renderless mode
http://msdn.microsoft.com/en-us/library/dd390957(VS.85).aspx
The GetSurface call is what you need to get the d3d surface:
http://msdn.microsoft.com/en-us/library/dd390502(v=VS.85).aspx
GetSurface is part of the IVMRSurfaceAllocator9 interface.