访问VMR9中的Direct3D设备

时间:2010-11-13 03:12:49

标签: video directshow direct3d

我有一个视频解码器过滤器,它位于一个图形中,其中VMR9或EVR作为视频渲染器。

VMR9和EVR使用Direct3D进行实际渲染。使用EVR,我可以相对轻松地访问D3D设备(我只是使用IMFGetService :: GetService请求它)。

然而,VMR9不公开IMFGetService,更一般地说,IMFGetService似乎特定于Vista&以上,就像整个DXVA2架构一样。

有没有办法到达VMR9内的Direct3D设备?

1 个答案:

答案 0 :(得分: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接口的一部分。