I'm running a video app on a Sandy bridge I7, Nvidia 4200, and Windows 7. The file is a 60fps, 1920X1080 H.264 progressive video. Whether I use the ffdshow Quicksync decoder or my own filter that uses Quicksync to decode the file and VideoMixingRenderer 9 to display it, at full resolution the renderer drops about half the frames and the frame rate is around 25 to 40 fps max. I suspect this is because both Quicksync and the renderer use Direct3d and bottleneck going through it (due to the heavy surface locking by both). If I replace the VideoMixingRenderer 9 with my modified version of the SampleRenderer (which uses BitBlt and GDI to display at 1920X1080) to display the video, the video plays at the expected frame rate of 59.9 and no frames are dropped. To further buttress my suspicion I replaced BitBlt in the Sample Renderer with Direct2D (which once again uses Direct3d infrastructure) the frame rate drops again to 25 to 40 fps and many frames are dropped.
So here are my questions:
1, Am I correct in my suspicions?
2, If so, is Windows 8 and or Direct3D11 any better ?
3, Since Microsoft is on a path to deprecate GDI, what is the solution in the future?
I realize that faster chips etc. may mitigate this problem, but to take a 50% hit in performance is unacceptable even if these faster chips make a 60fps possible, since I would like to do real-time analysis of the video which also take may milliseconds out of the 16 msec. that the 60fps video allows.
Any suggestions, or are Quicksync decoding and Direct3d video display inherently in conflict over resources??
The performance of the relatively old VMR9 Renderer is why the SampleRenderer is provided. In general, the DirectShow model of working with media is being deprecated long before any talk of GDI. Note that DirectShow is not part of modern Windows SDK and direction has been toward Media Foundation architecture.
The Intel Media SDK provides a lower-level building block and can be used by (implemented in) any framework, but modern platforms also include optimized Media Foundation Transforms.