Status report - I'm almost out of the core, thank god. That took forever. Was an incredibly difficult thing to write and design, especially considering the fact that I am anal against any sort of code complexity, and refuse anything that's overly complicated in design or with any "gotchas" (though "gotchas" will no doubt crop up at some point). The core was very difficult to get right, and has a very large number of features that makes OBS1 look like a cardboard box in comparison.
I'm finally just about to get out of it and focus on other things for once. Somewhat of a major milestone.
The only things on my "todo" list for the core are:
- Changing video/audio settings on the fly when not outputting (OBS1 turned completely off when not outputting. obs-studio is always on, so need to somehow "reset" video and/or audio without breaking or losing important data)
- Checking for bugs, code review, things like NULL pointer dereference checks, try to break things on purpose and make sure it handles it properly
- Other tiny things that don't need to be implemented right now, or can be implemented as needed/later (especially a number of functions that aren't needed yet)
The API is starting to solidify, and I'm really liking how it currently feels. It's partly documented, there are a lot of doxygen comments in the core headers with more to come later. There are still some things in question about the API (for example I feel a bit iffy about how to handle custom plugin user interface stuff, but I'm just going to have to test it out and get a feel for it to see), but outside of that I'm really liking the state of things currently.
After this I'm going to be focusing on outputs, UI, captures, etc. Both for windows and mac. We already have some captures for linux going thanks to the awesome linux coders: computerquip/benklett who programmed the X opengl stuff, leonhard and Ziemas who programmed the linux audio/video captures. Mesa support will still be a while because I didn't know about it beforehand, and have to reprogram a good chunk of GL shader code to make it function properly.
For mac, we have both opengl working and a working mac monitor capture already thanks to Palana. We now just need audio capture and later on device capture (which will suck). I'm probably going to try to get audio capture going for mac just to get it out of the way first.
After that mac audio capture I'll probably start working on some outputs, basic x264 encoder support, RTMP output, and UI for all that sort of stuff.
Windows of course has both opengl and direct3d working great. No captures right now though, I'll probably do all the windows-specific stuff a bit later, after outputs. I am going to redo all the captures for windows. I am going to completely rewrite game capture and directshow capture as well, as they absolutely need rewriting, the code in OBS1 for those things is absolutely disgusting (actually you could say that for most OBS1 code in general).
Note that there will be more than one UI, it depends on what type of project you'll be using. There'll be a "basic" interface for casual users which is basically similar to OBS1 and functions on the same simple scenes/sources system, and there'll be a "production" interface which will probably be nothing at all like OBS1 which functions completely different. We decided to separate them out because they are just so vastly different.
That more advanced interface in particular will probably have to come a bit later after those things as I'm somewhat anxious to get a test version out, so I hope people don't mind if I just try to get a single basic interface first.