Commit Graph

138 Commits

Author SHA1 Message Date
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 fbf5ffb921 encoder: Set unique Id to actual encoder name and add unsupported tag 2019-07-25 02:41:15 +02:00
Michael Fabian 'Xaymar' Dirks 8b2fafbbd1 encoder: Cleanup 2019-07-25 02:10:42 +02:00
Michael Fabian 'Xaymar' Dirks 10110cb62e encoder: Select best video format in get_video_info
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.
2019-07-25 01:37:01 +02:00
Michael Fabian 'Xaymar' Dirks e17fa119a1 ffmpeg/tools: Function to go from AVPixelFormat to video_format 2019-07-25 01:36:16 +02:00
Michael Fabian 'Xaymar' Dirks 3e7fd3ea55 encoder: Properly flush delayed encoders 2019-07-24 21:47:39 +02:00
Michael Fabian 'Xaymar' Dirks 97a68404c0 ffmpeg/avframe-queue: Unreference frames that may have a ref-counted obj 2019-07-24 21:22:35 +02:00
Michael Fabian 'Xaymar' Dirks 24bc913f53 encoder: Ensure that delayed encoders are flushed properly 2019-07-24 21:22:14 +02:00
Michael Fabian 'Xaymar' Dirks 11cc88deb6 encoder: Fix incorrect or missing Intra-Only check 2019-07-24 21:21:54 +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 7c3e313bcd encoder: Rename class from generic to encoder 2019-07-24 19:51:05 +02:00
Michael Fabian 'Xaymar' Dirks adeea2fb43 encoders/generic: Move file 2019-07-24 19:17:08 +02:00
Michael Fabian 'Xaymar' Dirks 8c80f6c79e project: Remove old Prores implementation 2019-07-24 19:14:21 +02:00
Michael Fabian 'Xaymar' Dirks ee0c7706a0 ffmpeg/swscale: Apply clang-tidy fix for l <-> L 2019-07-24 14:38:30 +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 034100e44b ffmpeg/tools: Fix BT.601 color format 2019-07-24 14:19:14 +02:00
Michael Fabian 'Xaymar' Dirks 0399989238 project: Apply patches from const correctness checks 2019-07-24 14:19:00 +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 c3d1793f14 encoders/generic: Only check MAX_AV_PLANES 2019-07-24 11:19:33 +02:00
Michael Fabian 'Xaymar' Dirks 57ebb9d866 encoders/generic: Handle frame queue in send_frame 2019-07-24 11:19:33 +02:00
Michael Fabian 'Xaymar' Dirks 9f8e4b67c6 encoders/generic: Don't use a pointer for AVPacket
Also allocate 8MB of storage initially, and free the buffers in the packet on stop.
2019-07-24 11:19:33 +02:00
Michael Fabian 'Xaymar' Dirks c61b2aead1 encoders/generic: Ensure that the packet is using default values 2019-07-24 11:19:33 +02:00
Michael Fabian 'Xaymar' Dirks f7db2d45af encoders/generic: Don't throw away AVFrames 2019-07-24 11:19:33 +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 9db2219582 encoders/generic: Prefer formats with no conversion
Fixes the issue where an encoder has RGB0 available as input, but avcodec_find_best_pix_fmt_of_list would choose YUV420P instead for RGBA.
2019-07-24 11:19:32 +02:00
Michael Fabian 'Xaymar' Dirks 68bacc07dc encoders/generic: Fix NV12 support and improve copy performance
FFmpeg's swscale does not properly copy all planes when the pixel format is NV12, so instead we will handle cases where nothing actually changes and we just have to copy memory.
2019-07-24 11:19:29 +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 ac68c2f4c8 codecs/h264: Add H264 codec information 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 855b3571b1 encoders/generic: Store actual decode timestamp instead of presentation timestamp 2019-07-22 08:59:32 +02:00
Michael Fabian 'Xaymar' Dirks c053933c25 encoders/generic: Fix threading and avoid property groups if broken 2019-07-22 05:02:44 +02:00
Michael Fabian 'Xaymar' Dirks e1fbfd707c utility: Add function to check for broken property groups
Even though property groups are supported in 23.x and above, there are quite a few bugs that result in completely bonkers behavior. So this function can be used to get the version of the currently running obs-studio.
2019-07-22 04:53:00 +02:00
Michael Fabian 'Xaymar' Dirks 69f7afef1f strings: Rename global strings to G_ from P_ 2019-07-22 02:15:16 +02:00
Michael Fabian 'Xaymar' Dirks 5ba4694890 strings: Add 'Manual' state and rename Rate Control Method to Mode 2019-07-22 00:57:34 +02:00
Michael Fabian 'Xaymar' Dirks e579b10dcd codecs/hevc: Fix issue with duplicated maps 2019-07-22 00:56:23 +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 8b429db62e ffmpeg/avframe-queue: Fix warning about 'unsigned/signed !=' 2019-07-22 00:55:01 +02:00
Michael Fabian 'Xaymar' Dirks 6851f2321a encoders/generic: Set the time base correctly
There is a small but important difference in the way OBS Studio and FFmpeg handle the FPS time base. This change fixes the problem and makes all encoders go back to sanity.
2019-07-22 00:55:01 +02:00
Michael Fabian 'Xaymar' Dirks 2472668f1d encoders/generic: Slight reformatting of the visible encoder name 2019-07-21 11:55:14 +02:00
Michael Fabian 'Xaymar' Dirks 6eadcfe821 ffmpeg/tools: Hide additional common capabilities
Shortens the visible encoder name by removing the "Requires Flush" and Threading clutter that no longer matters and is automatically handled.
2019-07-21 11:55:13 +02:00
Michael Fabian 'Xaymar' Dirks 7663a25bb3 encoders/generic: Hide encoders that don't have a UI handler
This prevents the uninformed from using an encoder that they really shouldn't be using, thus reducing the amount of issues that come from showing too many encoders.
2019-07-21 11:55:13 +02:00
Michael Fabian 'Xaymar' Dirks 38f154531c encoder: Deprecate encoders based on old implementation 2019-07-21 11:55:13 +02:00
Michael Fabian 'Xaymar' Dirks 666fe5fdfb plugin: Add function to check for UI handlers 2019-07-21 11:55:13 +02:00
Michael Fabian 'Xaymar' Dirks f744b1e9cb ffmpeg/avframe-queue: Set AVFrame buffer alignment to 32-byte
This is twice the required alignment for modern SSE, but it has a clear reason. On both Intel and AMD systems, a 32-byte alignment was ~15% faster than a 16-byte alignment when used with memcpy, which just so happens to be one of the main uses for these frames. Unless the encoder internally keeps its own queue of AVFrames and copies them itself, this will result in a massive speed up across all encoders.
2019-07-21 10:33:27 +02:00
Michael Fabian 'Xaymar' Dirks 9552d12ee8 codecs/hevc: Add shared codec data for HEVC 2019-07-21 02:42:52 +02:00