I'm investigating three approaches.
First, run VCS in Windows, add a Window Capture source to OBS, and add the "NDI Output" filter to that source. This works very well, but is not performant on my capture system: Core i7 4770k with only iGPU. The video arriving by NDI is not smooth. I'm unsure why though, the CPU and GPU load are not high at all, perhaps a memory bottleneck? This is preferred for the "capture box" setup, as I can use VCS presets and filter chains.
Next is exporting the DirectShow device directly over NDI, using the "Desktop Capture" applet in NDI Tools (despite the name, it also allows to export one DShow device or "webcam" in high quality at source resolution and frame rate). This provides no access to the input settings however, so I'm writing a small C# application against the RGBEasy API (rgbeasy.dll), to expose them. It allows you to alter the parameters, even though the capture is going a different route. The C# app may have a WinForms interface, or maybe a simple web based thing, not sure yet. Windows only until I find the right library to access these functions in Linux. This is highly performant, let down only by the configurability aspect.
The last is to further pursue the virtualisation avenue. Apparently there is a way to virtualise the entire IOMMU group as a unit, instead of trying to pass the individual PCI devices. Though I haven't been able to unravel this yet, it would allow me to run a VM with Vision 7.27, kernel 5.x, Qt5, and VCS without the missing modes and system crashes I was experiencing before. To reiterate, this is only complicated because my device, the E2S, is a composite device, consisting of a PCI-PCI bridge and two capture 'cards', together in one IOMMU group, sharing a single IRQ. A single-input card shouldn't have this issue, and such a setup would be delightfully straightforward. This route would still need something like NDI to get the video out of the VM and into OBS on the host, but my desktop is a Ryzen 9 7900X with the Radeon iGPU, much more grunt than the i7 above.
The latter may not be possible without a setup more complicated than libvirt and virt-manager alone can facilitate, I may need to pursue Proxmox or something like that.
The icing on the cake, is that as of Vision 7.28, the dkms module does not compile on kernels 6.14+ out-of-the-box. The change is that the driver does no longer supports so-called realtime Linux kernels. Even though the default kernel in popular distributions probably are not compiled with RT enabled, there is a comment in the .config file, which the VisionSDK script detects and fails on. Removing the comment allows the module to compile and the script to succeed. Issues still exist though: https://gist.github.com/mrehkopf/1100b88178ae … 9d71f5610f08256
Anyhow, more work is needed, but I'm learning a lot in the process! 😀
VogonsDrivers.com | Link | News Thread