we're trying to protect video using DXVA 2.0 in a Direct Show
pipeline. We have created a library that protects images sent to a
graphics card in a standalone application, basically:
1. Direct3DCreate9Ex(D3D_SDK_VERSION,...) --> IDirect3D9Ex
2. IDirect3D9Ex ->CreateDeviceEx --> IDirect3DDevice9Ex (child of
IDirect3DDevice9)
3. IDirect3DDevice9Ex --> IDirect3DDevice9Video (UAB interface)
Everything is working fine and we're able to encrypt images and have
them displayed correctly.
Now we are trying to apply this to the EVR in a Direct Show
pipeline. At this moment, we have
1. EVR --> IDirect3DDeviceManager9
(GetService(MR_VIDEO_ACCELERATION_SERVICE,...) on EVR's service
interface)
2. IDirect3DDeviceManager9 -> OpenDeviceHandle, then LockDeviceHandle
--> IDirect3DDevice9
3. Can't get IDirect3DDevice9Video because not available on
IDirect3DDevice9!
The problem is that the IDirect3DDevice9 object returned from the
EVR is not an IDirect3DDevice9Ex, and hence does not support
IDirect3DDeivce9Video interface!
How do we force the EVR to create an IDirect3DDevice9Ex device
instead, so that we can enable UAB protections?
Cheers,
Andrew