Eugene Smith
Eugene Smith

Reputation: 9378

Accessing the Direct3D device inside VMR9

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?

Upvotes: 0

Views: 748

Answers (1)

user206705
user206705

Reputation:

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.

Upvotes: 1

Related Questions