Some encoders don't have all options available with the automatically detected color format, so allowing the user to override the detected color format opens up more options.
Instead of instantly dropping frames on EAGAIN, try first recieving a packet (if not already done so) and then resubmit the same frame. If it still doesn't work, drop the frame as we have no way to deal with that situation yet.
Adds the ability to override the UI for very specific encoders in order to properly support customized and detailed UI for each encoder. This design is flexible and allows for any kind of UI generator to work, without relying on an actual object too much.
* Improved encoding loop can now deal with early and late receive requests.
* Lots of warnings fixed.
* Removed all threading options (they were broken anyway).
* Added some profiler calls.
This implements video encoding for the generic encoder by using frame queue and a set lag amount (in frames). The lag amount determines for how many frames no repeated attempts at submitting or retrieving a frame should be made, and after that many frames have been submitted the generic encoder will try to retrieve packets if at all possible. If not possible, it will delay for as long as possible to show an Encoder overloaded message.
* Copyright updated to include current year.
* Description updated to no longer talk about AMD encoder.
* Increased minimum CMake version to 3.8 from 3.1.
* Renamed project to xmr-ffmpeg-encoders from enc-ffmpeg.
* Add additional compiler options for Clang, GNU GCC, Intel C and MSVC.
* Set the C++ standard to C++17 with no non-standard extensions.
* Slightly improve project generation.
OBS Studio is a little bit behind with the FFmpeg Binaries, so the Zeranoe binaries will lead to the plugin being unable to load - which is not what we want. Instead just use the OBS Studio dependencies and offer a way to specify an already downloaded directory and also respect FFmpegPath if set.
Massively speeds up repeated builds by not relying on random undeterministic download speeds of the AppVeyor machines, in addition to reducing the stress on the remote end for each build done. Additionally the logging changes make it so that the errors and warnings are shown in the AppVeyor UI.