Commit graph

660 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
34ae5dd64b util/curl: Add C++ wrapper for CURL 2020-09-24 02:01:40 +02:00
Michael Fabian 'Xaymar' Dirks
5ead6260bb ui: Fix support for disambiguation in translations 2020-09-10 10:14:05 +02:00
Michael Fabian 'Xaymar' Dirks
1509d73ef6 util/threadpool: Don't hold work endlessly after processing it 2020-09-10 10:02:06 +02:00
Michael Fabian 'Xaymar' Dirks
778fc7f3fe encoders/handlers/nvenc: Don't list encoders on unsupported systems
Removes the NVENC entry on systems without an NVIDIA GPU by checking if the library for it can be loaded. If it can't be loaded, it's likely that the user does not have a system with NVENC capabilities - and guaranteed that they can't use the encoder as FFmpeg relies on these libraries.
2020-08-10 20:39:08 +02:00
Michael Fabian 'Xaymar' Dirks
2010dc0a87 encoders/ffmpeg: Add function to get info object 2020-08-10 20:39:08 +02:00
Michael Fabian 'Xaymar' Dirks
53d3f1ae6c util/library: Cross-platform handler for library loading
Adds a utility class and functions to load libraries and symbols from libraries somewhat safely. Libraries are immediately unloaded when the last reference to them is lost, so the shared_ptr should be stored if the library is actually needed.
2020-08-10 20:39:08 +02:00
Michael Fabian 'Xaymar' Dirks
070fc41918 encoders/handlers/nvenc: Make code C++ standard compliant again 2020-08-10 19:51:21 +02:00
Michael Fabian 'Xaymar' Dirks
315b996ab3 encoders/ffmpeg: Support for FFmpeg versions older than 58.x 2020-08-10 19:51:21 +02:00
Michael Fabian 'Xaymar' Dirks
0c1a37a76c encoders/ffmpeg: Disable hardware path on Linux 2020-08-10 19:51:21 +02:00
Michael Fabian 'Xaymar' Dirks
284dec3a80 encoders/handlers/prores_aw: Fix override warning 2020-08-10 19:51:21 +02:00
Michael Fabian 'Xaymar' Dirks
805afd9064 encoders/codecs: Add missing includes 2020-08-10 19:51:21 +02:00
Michael Fabian 'Xaymar' Dirks
b4a727cb86 ffmpeg/tools: Fix compatibility with Ubuntu 18.04 2020-08-10 19:51:21 +02:00
Michael Fabian 'Xaymar' Dirks
a53518cdb9 project: Remove non-standard std:: prefix from types 2020-08-10 19:51:21 +02:00
Michael Fabian 'Xaymar' Dirks
9b98f5e756 templates: Add generated configuration file 2020-08-10 02:33:54 +02:00
Michael Fabian 'Xaymar' Dirks
5ba3d7e478 ffmpeg/tools: Ensure we aren't comparing against a nullptr 2020-07-30 07:52:42 +02:00
Michael Fabian 'Xaymar' Dirks
08cedfcadc project: Apply formatting 2020-07-30 07:32:22 +02:00
Michael Fabian 'Xaymar' Dirks
ad64314b37 obs/gs/effect: Use the actual shared_ptr, not a pointer to it
Fixes several warnings and potential memory corruptions that could happen. Also makes the entire thing easier to read.
2020-07-29 05:17:42 +02:00
Michael Fabian 'Xaymar' Dirks
d332007ae0 project: Code cleanup and reapply formatting
Changes applied:

* Moved utility files to /util/.
* Removed unused #includes.
* Removed unused ::ffmpeg::tools function.
* Removed unused variables.
* Fixed missing parentheses in the version macro.
* Fixed missing override on virtual function overrides and removed unnecessary virtual keyword from them.
* Disabled additional warning for ATL headers on MSVC only.
* Replaced direct printf parameters with their macro equivalent.
* Replaced C-style casts with C++-style casts.
* Applied clang-format again after an earlier change to the CMake file broke the integration for it.
2020-07-29 05:17:42 +02:00
Michael Fabian 'Xaymar' Dirks
6e02ee5fef util/threadpool: Show warnings for uncaught exceptions
Tasks should not leak exceptions, so it is better if we actually log them instead of silently ignoring them.
2020-07-29 02:13:02 +02:00
Michael Fabian 'Xaymar' Dirks
e84b44f8bf ui-about: Add new 'Thank You' entries 2020-07-29 01:47:27 +02:00
Michael Fabian 'Xaymar' Dirks
46b5928de1 encoders/handlers/nvenc: Remove 5.2 from H.264
The levels 5.2 and above were added in a newer FFmpeg version than OBS Studio is shipping with. Ideally we'd take these options directly from FFmpeg, but that is for a future commit.
2020-07-29 01:47:17 +02:00
Michael Fabian 'Xaymar' Dirks
eff661c5b2 encoders/handlers/nvenc: Fix incorrect values being logged
Fixes the issue where "high444p" shows as "high", and "high" shows as "main", caused by the internal option mapping never being correct across version changes. Instead of keeping our own copy of things that has to be adjusted for each FFmpeg version, it's easier to just use the FFmpeg values and names.
2020-07-29 01:47:04 +02:00
Michael Fabian 'Xaymar' Dirks
53d7c2c396 ffmpeg/tools: Add string value mapping to print_av_option 2020-07-29 01:47:04 +02:00
Michael Fabian 'Xaymar' Dirks
970801dce7 encoders/ffmpeg: Fix fallbacks, hide handler-less encoders and clean up
* Changes the encoder name to 'streamfx-{name}' from 'streamfx--{name}' as the latter is a typo, but adds a proxy to still support the latter in bad configurations.
* Some of the warning messages have been improved in order to better support end-users, and support for the new encoder error messages has been added.
* Adds support for the is_hw argument instead of blindly relying on obs_encoder_get_caps() which actually returns the wrong values due to rerouting.
* Fixed handler-less encoders showing up in the UI outside of debug builds.
2020-07-28 20:22:45 +02:00
Michael Fabian 'Xaymar' Dirks
fa76c2fbcd obs/encoder-factory: Fix encoder rerouting not working properly
Due to an oversight in the code, the fallback code would simply fail to work as the encoder was always the zero-copy version. This resulted in weird crashes and encoders not working that used to work before.

Fixes #295
2020-07-28 20:22:45 +02:00
Michael Fabian 'Xaymar' Dirks
bbfacbc30b obs/gs/vertexbuffer: Cleanup and add workaround for OBS Studio memory leak 2020-07-27 03:39:59 +02:00
Michael Fabian 'Xaymar' Dirks
b57c7975e3 obs/gs/helper: Throw exception if we aren't in a context 2020-07-27 03:39:59 +02:00
Michael Fabian 'Xaymar' Dirks
b2dd816ff2 utility: Don't crash on nullptr in free_aligned 2020-07-27 03:39:59 +02:00
Michael Fabian 'Xaymar' Dirks
69b925a3c8 plugin: Fix missing include 2020-07-27 03:39:36 +02:00
Michael Fabian 'Xaymar' Dirks
fd22746c98 common: Rename LOG_ to DLOG_ to avoid macro confusion 2020-07-26 21:02:32 +02:00
Michael Fabian 'Xaymar' Dirks
cfdc0754ea plugin: Fix problematic 'using namespace' code 2020-07-26 19:22:48 +02:00
Michael Fabian 'Xaymar' Dirks
d410b4296f obs/source-tracker: Don't leak pointers to sources 2020-07-26 19:22:35 +02:00
Michael Fabian 'Xaymar' Dirks
aad7f64800 configuration: Don't leak pointers and add messages to exceptions 2020-07-26 19:22:23 +02:00
Michael Fabian 'Xaymar' Dirks
f10258becb encoders/handlers/nvenc: Don't list 'each' mode for H.264 2020-07-06 01:28:30 +02:00
Michael Fabian 'Xaymar' Dirks
1ba3db5719 encoders/handlers/nvenc: Improve UI/UX for NVENC
* "Quality" Minimum/Maximum is actually QP Minimum/Maximum
* Bitrate Limits is now just Limits
* Buffer Size and Quality Target have been moved into "Limits".
2020-07-06 01:28:30 +02:00
Michael Fabian 'Xaymar' Dirks
b142f363db encoders/handlers/nvenc: Update names 2020-07-06 01:28:30 +02:00
Michael Fabian 'Xaymar' Dirks
82a1260ddc encoders/ffmpeg: Add support for settings migration 2020-07-06 01:27:34 +02:00
Michael Fabian 'Xaymar' Dirks
717b38f3f7 gfx/shader: Add Per-Instance/Activation/Frame Random values 2020-07-06 01:27:23 +02:00
Michael Fabian 'Xaymar' Dirks
3de7a87de6 filters/shader: Fix occasional invisibility problem 2020-07-06 01:27:09 +02:00
Michael Fabian 'Xaymar' Dirks
c9769637be sources/mirror: Retrieve source size on acquire 2020-07-06 01:20:00 +02:00
Michael Fabian 'Xaymar' Dirks
cc6a2a1b1a filters/shader: Don't use scaled size for input capture 2020-07-06 01:06:54 +02:00
Michael Fabian 'Xaymar' Dirks
dcf0bb49b8 gfx/shader: Increase size limit and function to get base size 2020-07-06 01:06:54 +02:00
Michael Fabian 'Xaymar' Dirks
d1fcb73435 obs/encoder-factory: Fix incorrect proxy registration 2020-07-06 01:03:58 +02:00
Michael Fabian 'Xaymar' Dirks
95f022feea project: Adjust object Ids and add proxies for compatibility 2020-06-21 19:28:10 +02:00
Michael Fabian 'Xaymar' Dirks
cf398d01da obs/source-factory: Add function to register proxy objects
Proxies allow for older configurations to work fine on newer versions, without having to manually adjust the scene collection to match the new ids at all. Thanks to the migration system we can freely support any number of old versions, as long as we write migration code.
2020-06-21 19:28:10 +02:00
Michael Fabian 'Xaymar' Dirks
7eaaab8630 nvidia/cuda/cuda: Convert to global Singleton 2020-06-21 19:27:58 +02:00
Michael Fabian 'Xaymar' Dirks
379d96044d nvidia/cuda: Remove 'cu_' prefix from types 2020-06-21 19:27:57 +02:00
Michael Fabian 'Xaymar' Dirks
b89281f320 strings: Add global id prefix 2020-06-21 19:27:57 +02:00
Michael Fabian 'Xaymar' Dirks
77bf25d8fb encoders/ffmpeg: Rename files to match naming scheme 2020-06-21 19:24:59 +02:00
Michael Fabian 'Xaymar' Dirks
6e0f85d3f7 encoders/ffmpeg: Rebase onto obs::encoder_factory 2020-06-21 19:24:58 +02:00