Commit Graph

43 Commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks e4474c29c4 ui/nvenc: Improve and fix some options and logging
Some of the options shown to the user were never actually being applied, which resulted in encoding that looked worse than it could have. With this these options are now applied and users may experience a sudden increase or decrease in quality if they had these options changed.

In addition to that, some options now use a triple state field, which allows them to also have a default/middle state instead of being On or Off.

Furthermore, log output is now read from the actual AVCodecContext, which contains the actual values used in the encoding, instead of relying on the OBS settings to be the actual values.
2019-11-16 21:44:03 +01:00
Michael Fabian 'Xaymar' Dirks 59e33a132b ui/nvenc: Remove "Encoder" from name
It's already known that this is an encoder.
2019-11-16 13:04:10 +01:00
Michael Fabian 'Xaymar' Dirks be7b2737b4 encoder, ui/handler: Massive Refactor
This refactor is primarily to make the entire interface more unified and capable of more than before.
2019-11-15 17:29:24 +01:00
Michael Fabian 'Xaymar' Dirks 18c50b3cbb ui/handler: Refactoring 2019-11-13 11:44:40 +01:00
Michael Fabian 'Xaymar' Dirks 2184e5bc71 project: Reapply formatting 2019-11-04 18:32:47 +01:00
Michael Fabian 'Xaymar' Dirks f21cbe9aba ui/nvenc_shared: Fix lag calculation for rc-lookahead 2019-10-19 02:40:50 +02:00
Michael Fabian 'Xaymar' Dirks 2f8acc58cf encoder: Separate get_defaults and get_properties for SW/HW encoders 2019-10-04 19:27:45 +02:00
Michael Fabian 'Xaymar' Dirks e4e76dae8f ui/nvenc: Override lag in frames to use Max. B-Frames 2019-10-03 20:10:03 +02:00
Michael Fabian 'Xaymar' Dirks 4cac28a8a3 ui/handler, encoder: Allow overriding lag in frames
The lag in frames is not dictated by the number of threads being used by some encoders. At least for hardware encoders, the expected frame lag in real time encoding is 1 + the number of bframes
2019-10-03 20:09:34 +02:00
Michael Fabian 'Xaymar' Dirks 0461b20e1b ui/handler: Allow Codec handlers to select the proper device 2019-09-29 19:16:26 +02:00
Michael Fabian 'Xaymar' Dirks fe71944199 ui/prores_aw_handler: Workaround for FFmpeg bug with ProRes in Matroska
In current FFmpeg, whenever Matroska with ProRes is demuxed it creates an atom that is just 8 bytes short of the true size necessary.

We can work around this by padding the actual packet by 8 0x00 bytes, which should result in older FFmpeg versions working fine.

An FFmpeg patch is available: http://ffmpeg.org/pipermail/ffmpeg-devel/2019-September/250724.html
2019-09-29 07:27:22 +02:00
Michael Fabian 'Xaymar' Dirks 62eae3827b ui/handler: Add function for packet processing 2019-09-29 06:55:42 +02:00
Michael Fabian 'Xaymar' Dirks 6bc1cb9c88 ui/nvenc*: Print all settings to the log file 2019-09-28 01:54:28 +02:00
Michael Fabian 'Xaymar' Dirks 9efda8af8d ui/prores_aw_handler: Print profile to log 2019-09-27 16:29:01 +02:00
Michael Fabian 'Xaymar' Dirks 0c9764a15c encoder: Use codec name instead of encoder info 2019-09-27 16:28:44 +02:00
Michael Fabian 'Xaymar' Dirks 5c5a235502 ui/handler: Always have a no-op function 2019-09-27 16:16:39 +02:00
Michael Fabian 'Xaymar' Dirks a32f8dd28b ui/prores_aw_handler: Override automatic color format when profile demands it
Certain ProRes profiles require a very specific color format, otherwise the avcodec_open2 will fail with EPERM, which is very confusing.
2019-09-27 12:41:13 +02:00
Michael Fabian 'Xaymar' Dirks a9f39527f6 handler: Additional functionality for handlers
Allows overriding color format, encoder info, importing and exporting from/to ffmpeg command line and most importantly logging actual settings to the log file.
2019-09-27 12:35:34 +02:00
Michael Fabian 'Xaymar' Dirks 7faea52d67 ui/nvenc_shared: Hide the QP group if mode is not CQP or VBR 2019-08-10 22:40:37 +02:00
Michael Fabian 'Xaymar' Dirks 0c9dd4b2f8 ui/nvenc_shared: Add Quality Target for VBR 2019-08-10 22:36:51 +02:00
Michael Fabian 'Xaymar' Dirks c6d842d52d ui/nvenc_shared: Reduce upper limit for lookahead to 32
This matches the actual limit in the SDK.
2019-08-10 19:39:00 +02:00
Michael Fabian 'Xaymar' Dirks 61c4c80c8f project: Add and apply new contributing guidelines 2019-08-10 19:31:57 +02:00
Michael Fabian 'Xaymar' Dirks f5052f45c6 project: Fix support for avcodec version 58 and newer 2019-08-03 09:45:56 +02:00
Michael Fabian 'Xaymar' Dirks 6db094d778 ui/nvenc_hevc_handler: Add name override 2019-07-25 03:06:51 +02:00
Michael Fabian 'Xaymar' Dirks 8d0b12dfe3 ui/nvenc_h264_handler: Add name override 2019-07-25 03:06:42 +02:00
Michael Fabian 'Xaymar' Dirks 2c2d42ebaf encoder: Support Key-Frame options in all encoders 2019-07-24 20:53:18 +02:00
Michael Fabian 'Xaymar' Dirks c8f3f9201c ui/handler: Add ability to override UI name 2019-07-24 20:19:05 +02:00
Michael Fabian 'Xaymar' Dirks 8fdc944be8 codecs/hevc: Remove global option maps
These were moved into the actual UI handler now
2019-07-24 14:37:19 +02:00
Michael Fabian 'Xaymar' Dirks 9dcce1c655 project: Apply even more patches from const correctness checks 2019-07-24 14:20:11 +02:00
Michael Fabian 'Xaymar' Dirks d4ffd20085 ui/nvenc_shared: Fix support for Quantization Parameters 2019-07-24 12:58:15 +02:00
Michael Fabian 'Xaymar' Dirks 2840a7fbb1 ui/nvenc_shared: Fix Rate Control Mode CQP and AQ Strength 2019-07-24 11:19:33 +02:00
Michael Fabian 'Xaymar' Dirks fa5c421d34 project: Drop GPL in favor of MIT license 2019-07-24 11:04:24 +02:00
Michael Fabian 'Xaymar' Dirks d178200800 ui/nvenc_h264_handler: Add UI handler for NVENC H264 2019-07-22 12:34:50 +02:00
Michael Fabian 'Xaymar' Dirks a5d14c87ff ui/nvenc_hevc_handler: Add UI handler for NVENC HEVC 2019-07-22 09:12:07 +02:00
Michael Fabian 'Xaymar' Dirks de1a687b8d ui/nvenc_shared: Add shared UI for NVENC HEVC and H264 2019-07-22 09:11:25 +02:00
Michael Fabian 'Xaymar' Dirks f530f9ee9f ui/debug_handler: Fix warnings about unused variables 2019-07-22 00:55:02 +02:00
Michael Fabian 'Xaymar' Dirks f15769ddb7 ui/debug_handler: Don't leak the temporary AVCodecContext* 2019-07-21 02:41:45 +02:00
Michael Fabian 'Xaymar' Dirks b7fdd5491a ui/debug_handler: Print flags as normal values instead of hexadecimal 2019-07-13 00:16:42 +02:00
Michael Fabian 'Xaymar' Dirks 830ebf31d9 ui/prores_aw_handler: Disable profile file while encoding 2019-07-07 16:55:02 +02:00
Michael Fabian 'Xaymar' Dirks 076df05b37 ui/debug_handler: Fix flags 2019-07-07 16:54:48 +02:00
Michael Fabian 'Xaymar' Dirks 3bbbea7b42 ui/debug_handler: Add debug handler for implementing new UI Handlers 2019-07-07 16:34:15 +02:00
Michael Fabian 'Xaymar' Dirks e5bf18f2a6 ui/prores_aw_handler: Implement UI Handler for prores_aw 2019-07-07 13:46:11 +02:00
Michael Fabian 'Xaymar' Dirks dbdf915a07 ui/handler: Implement UI Handler interface class
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.
2019-07-07 13:42:22 +02:00