Microsoft Windows has a lot of multimedia capabilities built-in which can be accessed through the Media Foundation SDK (https://docs.microsoft.com/en-us/windows/win32/medfound/about-the-media-foundation-sdk).
After scanning through a bunch of C++ and SharpDX (which provides the bindings for .NET) examples I’ve finally managed to put all pieces together for a nice and easy to use VideoIn node (as well as its reactive counter-part in case one wants to process data in the video thread).
It outputs a B8G8R8A8 image which can easily be made available to other nodes from Skia or OpenCV.
Hardware acceleration can be turned on if needed. I didn’t see much of a difference though with a 720p stream, maybe it’s different with higher resolutions. Would be eager to get some feedback on that topic.
Once VL.Xenko/VL.Stride gets available we can also think about making the video frames directly available as textures (by-passing the CPU completely) because the used DirectX11 device for hardware acceleration can be fed from outside.
The repository and install instructions can be found here: https://github.com/vvvv/VL.MediaFoundation