--------------------------------------------- Compiling --------------------------------------------- Required (and included) libraries: libmp3lame - MP3 encoder - obs/lame libfaac - AAC encoder - obs/libfaac librtmp - RTMP protocol - obs/librtmp libsamplerate - audio resampler - obs/libsamplerate libx264 - x264 encoder - obs/x264 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. Required environment variables: WindowsSDK80Path - Points to windows sdk path. Must include ending backslash. DXSDK_DIR - Points to DirectX SDK path. Must include ending backslash. --------------------------------------------- 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 (admittedly worthless) 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.