我有一个视频解码器过滤器,它位于一个图形中,其中VMR9或EVR作为视频渲染器。
VMR9和EVR使用Direct3D进行实际渲染。使用EVR,我可以相对轻松地访问D3D设备(我只是使用IMFGetService :: GetService请求它)。
然而,VMR9不公开IMFGetService,更一般地说,IMFGetService似乎特定于Vista&以上,就像整个DXVA2架构一样。
有没有办法到达VMR9内的Direct3D设备?
答案 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接口的一部分。