With libVLC 2.2.8, I was handling I420, but with version 3.0.x a new "dx11" format is provided first. I have been unable to find a way to handle it. In my app I ultimately need to copy the decoded video to a standard D3D11 texture.
Things I tried:
- return 1 from video_format_cb() when chroma is "dx11", but this is immediately followed by a callback to the same with a different format.
- passing a shared dx11 surface as **planes in video_lock_cb(), which is seemingly never touched by the library.
- return 0 for all formats except I420 (fall back to system memory copies), but even though this appears to work on the surface, the buffers I provide at video_lock_cb() are not modified. I verified the logic by swapping the 2.2.8 libVLC dll, and playback worked.
Please suggest the right approach here. Some sample code would be very helpful. I am targeting Windows 7+ with recent GPUs.
Thanks for providing and improving the library.