I have uploaded the EVR enabled WPF MediaKit to Codeplex. This is only a test build at the moment. To enable the MediaUriPlayer to use the EVR, just add "USE_EVR_PRESENTER" to the conditional compilation symbols of the WPFMediaKit project. The project is setup to compile both 32 and 64bit native code and the WPF MediaKit automatically loads the correct dll based on its environment.
A couple notes on this build. I have build this EVR presenter off the Microsoft supplied example from the Windows SDK. I thought it was a great place to build from as it had quite a bit of what I needed and looked to have been written to be extended on. Right on MS! I have written COM interop so the MediaKit can initiate the EVR custom presenter and get callbacks to notify WPF of new D3D surfaces and to notify that it needs to redraw a frame. I decided to go with pure COM interop over CLI/C++. COM interop is more brain challenging ;). Also, because it seems the EVR presenter and the WPF D3DImage are fighting over the D3D surface (big problems, crashes, leaks, etc), I copy the D3D surface from the presenter to a single surface, which is then sent to the D3DImage. This allows me to actually have more than one queued sample in the presenter. You will need the Windows 6.1 or 7.0 SDK and DirectX SDK (I've been using August 2008) to compile. Oh, and you may need Vista too. I added support to the EVR to use IDirect3DDevice9 on XP (instead of 9Ex), but I have no way of testing. To tell with XP anyways! If anyone is too lazy to install those SDKs, well, I can upload the compiled binaries if you wanted to play around with this.
Right now the EVR is using more CPU than the VMR9. Not sure why, but its not the actual rendering of the video to WPF, so maybe I'm doing something wrong. I'm looking heavily into it though. I did notice that the EVR loses *much* *much* less frames and the video on some media seems noticeably more fluid. This Alexander clip was night and day between the EVR and VMR9.
Hook me up with some feedback,
-Jer