.kkapture 0.01 - demo capturing made easy (hopefully)

I'm pretty sure that's oasiz's channel. See this post for further info also.

Regarding kkapture, it definitely seems to be completely incompatible with 64-bit applications. With the rewrite of our demoengine we moved to 64-bit and simultaneously lost kkapture compatibility. I think this would honestly be the most essential upgrade to this wonderful software. DX11 compatibility seems kind of nonexistent as well, but I could be wrong.

noby: In fact, I managed to compile a 64-bit kkapture yesterday (getting rid of Direct3D 8 and DirectShow support helped), but none of my testcases ran: Still demos stop at the first frame, and "We Stand Divided" crashes my graphics driver even without kkapture. Now that I know that Epoch demos are 64-bit too, I'll try these tonight.

Is there still really anything else worth even considering than h264 (and x264, specifically)? Googles VP9 is good too I guess, but not really any better and with worse options and support. x265 is out there too, I guess, but it hardly offers any benefits and has piss poor support at the moment.

As for container, mp4 is probably the most well rounded option. Mkv doesn't benefit anything in this case and has worse support. My current workflow is 1. kkapture into segmented .avi files (uncompressed) (the DirectShow option has been unreliable) 2. join into one file with ffmpeg 3. just upload the enormous file to youtube, OR compress with HandBrake if needed (mp4/x264/AAC, custom settings etc..).

Note that my modified version isn't just a 64-bit port, it also contains a direct interface to the x264 command-line encoder. If you are going to encode in single-pass quality-based "CRF" VBR mode (which you absolutely should!), you save a few gigabytes of temporary data this way. Also, you don't need to wait for kkapture to finish, set up encoding, and then wait again for x264. Instead, when kkapture is done, all the time-consuming stuff is done too, and all that's left to do is encode the audio and mux it into a container of your choice, which takes less than a minute.

Regarding the useful formats:
- For best compatibility, video should be H.264 High Profile Level 4.1 or lower. This is sufficient for 720p60 or 1080p30 (Blu-ray spec). Somewhat recent mobile devices should play that too; for older phones and tablets, try Main Profile Level 3.0 (720p30). If you want more resolution or framerate (1080p60: Level 4.2, 2160p30: Level 5.1, 2160p60: Level 5.2), be aware that most hardware players won't cope with that. High10 profile and H.265 would be nice, but are even less well supported by the devices out there. Stay clear of VP8/9 unless you absolutely need to use it (licensing issues or HTML5 video compatibility with pre-H.264 browsers).
- The typical container format is MP4 with LC-AAC audio. This will work basically everywhere. Don't use HE-AAC; many devices don't play that properly and at the bitrates you're likely going to use, it doesn't make a difference anyway.
- You can also use M2TS with AC-3 audio or Matroska with uncompressed PCM, LE-AAC or MP3, but there aren't as well supported.
- Don't even think about using AVI. Really. AVI doesn't even have proper support for B frames, let alone H.264's byzantine and fragile reference frame management stuff.

FYI: After five years of total radio silence, I got two independent "bug reports" for kkapture today, so I revisited it again. Long story short, I forked the official repo and added some stuff:
- version 1.02 (which was already tagged in the original repo, but not merged on master)
- my x264 feature
- my 64-bit port (+ fixes)
- D3D11CreateDeviceAndSwapChain fix (see the other thread)
- VS2017 build fixes