You will need a working Windows 8 SDK and DirectX SDK, files for VS 2013 are included.
--------------------------------------------- Compiling ---------------------------------------------
Required (and included) libraries:
To compile OBS and all its sub-libraries, you can use OBS-All.sln and compile everything all at once, or you can compile everything individually yourself. x264 and libmp3lame are pre-compiled for convenience.
--------------------------------------------- Windows SDK ---------------------------------------------
It requires the latest windows SDK, as it uses features from Windows Vista, Windows 7 and 8. The Windows 8 SDK should also come with the latest DirectX includes and libraries.
---------------------------------------------
Compiling LAME (if desired)
---------------------------------------------
I compile lame through the VC makefile.
Command line: nmake -f Makefile.MSVC CPU=P3
Get nasm if you want to compile with assembly, otherwise use ASM=NO command line option. Use MSVCVER=Win64 to compile 64bit. View lame/makefile.msvc for more info.
--------------------------------------------- Compiling x264 (if desired) ---------------------------------------------
x264 is slightly more troublesome, primarily because it's written in C99, yasm, and compile configuration is totally dependent on bash scripts. Usually it's recommended to cross-compile on linux, but I just used msys and mingw for windows. There's a guide on how to get x264 compiled on windows at http://doom10.org/index.php?topic=26.0
Make sure to use the --enable-win32thread configuration option, though I suppose you could make it use posix threads with a bit of work, but it's fairly pointless and you'd probably have to add some more stuff to the Hacks.cpp file.
If compiling static (which I don't do anymore), please make sure to include the static libgcc.a that your mingw provides. Depending on your mingw version you may need to add/remove stuff from Hacks.cpp to get it properly working. It sucks, I know, but I'm not the one who decided to make x264 uncompilable on microsoft's C compiler.
--------------------------------------------- Other notes ---------------------------------------------
You may have noted that every single library I use is statically linked. Even the CRT is static on all projects. Personally, I despise having any outside DLL dependencies. Having to install the damn visual studio runtimes every single time you install an application is the most annoying thing on earth. Sure, I understand why they're used, and I know that there are often vulnerabilities that need to be patched, but I personally go around it by centralizing all such stuff in the utility library (see the Utility files in OBSApi). Generally when I get an application I like it to work right from the start with as little setup as possible. It's a personal preference.
If you need to allocate, use the Allocate and Free functions. new and delete is automatically wrapped to these as well.
At some point in time I will get around to some proper documentation of the utility library, but in the mean time, look around in the utility files of OBSApi if you wish.