I integrated Intel QuickSync with Intel MediaSDK into a product, which uses OpenGL for video displaying.
My integration receives frame data into system memory.
While benchmarking I encountered, that decoding into Direct3D memory is much faster.
So, I imagine, that QuickSync decodes frame into Direct3D, and then copies it (probably via DMA) into system memory.
So, in my system, each decoded frame happens double copying of frame data from GPU memory to System memory and back.
As far as I didn't find simple way to copy or use Direct 3D data in OpenGL, I got an idea to copy media frame data inside of GPU memory.
There is OpenCL to DirectX interoperability and OpenGL-openCL interoperability.
The question is: Will this work?
If yes - will it be more efficient, than double DMA via System memory?