I have some DSLR-camera's that creates images. I created a DirectShow "Virtual Webcam" to output the images as a "webcam-device". I got this working using "vivek vcam". But there are still some issues. Currently I have this "this ugly setup".
Creation:
// each .dll has hardcoded DSLR-id
// each .dll used unique GIUD. for class derived from CSource
regsvr32 Virtcam1.dll
regsvr32 Virtcam2.dll
regsvr32 Virtcam3.dll
Usage:
DSLR 1 ---> VirtCam1 --> OBS-software
DSLR 2 ---> VirtCam2 --> OBS-software
DSLR 3 ---> VirtCam3 --> OBS-software
I want to use more DSLR-camera's but building a DLL-file for every camera is stupid. Also when I add more camera's this way, OBS will keep them all active, consuming CPU and creating some other bottlenecks.
What I want to create is something like this:
|-----------|
DSLR 1 ---> | VirtCam_x | --> OBS-software
DSLR ... ---> | VirtCam_y | --> OBS-software
DSLR n ---> | VirtCam_z | --> OBS-software
| |
|-----------| <---> CameraManager.exe
I want to build a CameraManager.exe that alters the "Virtual DirectShow Webcams" while they are in use by OBS. (for for example throttling down framerates for camera's that are Idle).
So my main question is this: How or where can I store data that is accessible from inside the "CStreamSource" and from the "CameraManager.exe"?
Maybe it's obvious, but I'm a big newbie to COM/Directshow. I also have no clue about windows registries. I got lost in the MSDN-pages. It would be nice to know what principles to use to make it work.
Thanks in advance for time and effort spend.