@1Miguel1: sorry for the late answer. I'm also sure, that the audio under Windows was AAC. Given the fact that I have used the Mac OS X version of the drivers, things might be slightly different. Nevertheless, it's encoded in 384 kbit/s, which is equal to CD quality. As soon as I have figured out most of the stuff, I will work on AAC support.
@All: I have managed to work on the driver a bit over the weekend. I figured out many things in the official script files and reverse engineered some of their functions. Additionally, I was able to use the output file as a video input in OBS Studio. This means, we're actually able to live stream under Linux with the limitation of 720p60 output and 720p input. Unfortunately, the output file will grow with the length of your stream. So it means, that you won't be able to stream once you go out of disk space. Currently, I'm trying to implement a function, where I'm gonna make the driver output to a filesize-limited, temporary file (in /tmp). This might be a good temporary solution, until things get really rolling with this driver. I still need to figure out, how to do this (circular buffer? Named FIFO pipe?). I need to read about this.
I have also read about V4L. Unfortunately, it's not meant for user space, so I can't use it to pass our video buffer to a /dev/videoX file. I'd need to write a kernel module for the Elgato, which I'm definitely not going to do on my own.
Therefore, I have switched the codebase to plain old C again and started commenting out my code, so porting it to kernel space gets a bit easier, if someone else is willing to try it. I have already written a kernel module once. However, it was not a pleasing experience, since debugging is a NIGHTMARE (even with VMs) and the kernel space are very limiting (also license-wise). Also, writing code as a hobby programmer, which gets accepted by kernel developers is extremely difficult. Getting your code refused after months of hard work is extremely frustrating.
If you can think of another method, how to use the data stream in OBS, please share. I'm unaware of anything else, besides V4L (kernel space) and FIFO pipe.
Cheers,
Tolga
//Edit: I've read about FIFO pipes (also called named pipes). Yepp, they should do it. I'm gonna implement it tomorrow and keep you up-to-date.
//Edit 2: Ok, I have implemented a FIFO pipe now. VLC seems to work well with it: reduced delay, no infinitely growing file on your harddrive, no stutter, 60 fps. However, OBS seems to have problems reading from a FIFO pipe. It just shows around 1 second of footage, then the video freezes. Any comments from the OBS devs?
Also, OBS is looking for file extensions. It hides files, which don't have a file extension. But that's a minor issue (?).