Allows overriding color format, encoder info, importing and exporting from/to ffmpeg command line and most importantly logging actual settings to the log file.
Breaks more than intended, and this way is better anyway as the error that used to show up gave no indication as to what went wrong. With this reverted it now shows that starting encoding failed.
Adds support for the full on-GPU encoding path for texture encoding, which just needs to be actually implemented.
In addition this commit also ensures better stability by catching all C/C++ exceptions that could leak to C code which can't handle this at all.
Fixes a crash due to reading/writing out of bounds when the resolution, color and framerate end up different than initially expected during the creation of the encoder. While this does change the error message that appears when the encoder can't be initialized, it is better than outright crashing OBS Studio.
Skips a later conversion step if we can find a potential identical or better quality video format, without ignoring the color format override in the settings itself.