访问VMR9内的Direct3D设备

发布于 2024-10-02 09:13:33 字数 284 浏览 0 评论 0原文

我有一个视频解码器过滤器,位于以 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野稚 2024-10-09 09:13:33

如果您提供自己的分配器/演示器实现,您将可以访问 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文