Commit graph

795 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
b535dec38b encoders/handlers/nvenc: Fix NVIDIA trademark 2023-04-05 18:50:56 +02:00
Michael Fabian 'Xaymar' Dirks
dbfd27860c filters/nv-face-tracking: Apply coding guidelines 2023-04-05 18:50:56 +02:00
Michael Fabian 'Xaymar' Dirks
298e32dad4 nvidia/ar: Fix NVIDIA Trademark 2023-04-05 18:50:55 +02:00
Michael Fabian 'Xaymar' Dirks
3c760d8e9c filters/nvidia-face-tracking: Update for new SDK and OBS 27.x 2023-04-05 18:50:53 +02:00
Michael Fabian 'Xaymar' Dirks
96c7b101e5 obs/gs/texture: Add new flags and fix flag decoding 2023-04-05 18:50:53 +02:00
Michael Fabian 'Xaymar' Dirks
1d183ae680 uitl/bitmask: Add 'has' function 2023-04-05 18:50:53 +02:00
Michael Fabian 'Xaymar' Dirks
47ef5dd995 nvidia/cuda: Add function to query version directly 2023-04-05 18:50:52 +02:00
Michael Fabian 'Xaymar' Dirks
f316e0aa70 nvidia/cuda: Update to match CUDA 11.1 and later
Adds several new functions that may be required for operation
2023-04-05 18:50:52 +02:00
Michael Fabian 'Xaymar' Dirks
70f54b312b nvidia/cuda: Print the Driver CUDA version to the log 2023-04-05 18:50:52 +02:00
Michael Fabian 'Xaymar' Dirks
3c05d892e6 filter/nvidia-face-tracking: Update to nvidia::cuda::obs 2023-04-05 18:50:52 +02:00
Michael Fabian 'Xaymar' Dirks
18afbdea25 filter/nvidia-face-tracking: Update to new CUDA code 2023-04-05 18:50:52 +02:00
Michael Fabian 'Xaymar' Dirks
fc05b3e4d2 nvidia/ar: Fix bad function definition 2023-04-05 18:50:51 +02:00
Michael Fabian 'Xaymar' Dirks
5adebc5f03 project: Apply formatting 2023-04-05 18:50:51 +02:00
Michael Fabian 'Xaymar' Dirks
7bedb337b9 nvidia/cuda/obs: Add simple CUDA manager for OBS 2023-04-05 18:50:51 +02:00
Michael Fabian 'Xaymar' Dirks
c0a108bf4a nvidia/cuda/stream: Add synchronize function 2023-04-05 18:50:51 +02:00
Michael Fabian 'Xaymar' Dirks
4dac477500 nvidia/cuda/gs-texture: Add accessors for internals 2023-04-05 18:50:51 +02:00
Michael Fabian 'Xaymar' Dirks
5cd1d13d5f nvidia/cuda/context: Merge context-stack into context header 2023-04-05 18:50:50 +02:00
Michael Fabian 'Xaymar' Dirks
7b38114469 nvidia/cuda: Log extra information when built for Debug 2023-04-05 18:50:50 +02:00
Michael Fabian 'Xaymar' Dirks
9332d9377c nvidia/cuda: Add custom exception for CUDA 2023-04-05 18:50:50 +02:00
Michael Fabian 'Xaymar' Dirks
98f711523e nvidia/cuda: Use util::library and remove CUDA library argument
The CUDA library is always available as a singleton, so it does not make sense for it to be passed in. Instead we can simply grab it from the singleton and use it as it is, which makes the code easier to maintain and automates certain code.
2023-04-05 18:50:50 +02:00
Michael Fabian 'Xaymar' Dirks
b4a229e26f util/logging: Add logging utility
Also contains the function signature and name macros.
2023-04-05 18:50:49 +02:00
Michael Fabian 'Xaymar' Dirks
ab22b0d69e ui/about: Update Supporter and Translator entries 2023-03-28 13:11:22 +02:00
Michael Fabian 'Xaymar' Dirks
d1c5cb4fce ui/about: Fix stack size problem 2023-03-28 13:11:22 +02:00
Michael Fabian 'Xaymar' Dirks
d1747ff403 ui/about: Remove outdated entry roles 2023-03-28 13:11:21 +02:00
Michael Fabian 'Xaymar' Dirks
f040588570 ui/about: Replace buttons with clickable Entries
This reduces the total amount of links Supporters can submit to just one instead of two. Additionally by removing the buttons and making the entry itself clickable, the UI can show more entries at once and allow users to easily make the connection between the entry and the link it opens when clicked.
2023-03-28 13:11:21 +02:00
Michael Fabian 'Xaymar' Dirks
3533a86b96 ffmpeg/tools: Adjust to match ffmpeg-mux color settings
The 'obs-ffmpeg-mux.c' file specifies different color parameters than StreamFX does. This causes re-muxing to go haywire, and editors that trust these tags suddenly spew out bad colors for BT.601 and sRGB.

Reverts #478
2023-03-28 13:11:21 +02:00
Michael Fabian 'Xaymar' Dirks
ba61329dd1 ui: Prevent Qt from automatically assigning Menu roles
Qt defaults to give every QAction a TextHeuristicRole, which means that certain key words will cause Qt to change how the QAction behaves. We do not want this, so we explicitly assign it to have NoRole instead.

Fixes #323
2023-03-28 13:11:21 +02:00
Michael Fabian 'Xaymar' Dirks
465158476a ui: Insert StreamFX menu before OBS "Help" menu
Instead of adding ourselves as the last entry which seems to confuse the MacOS Qt implementation, we instead insert ourselves before the Help menu. This should hopefully prevent the StreamFX menu from overriding the OBS About entry.

Fixes #323
2023-03-28 13:11:20 +02:00
Michael Fabian 'Xaymar' Dirks
f01d2e6db1 filters/sdf-effects: Improve user experience with visual property groups
Grouping properties by what they do improves the user experience as the user does not have to guess at what belongs to which part of the effect. Additionally toggleable groups automatically disable all child elements, so the user is not confused by them still being active.
2023-03-28 13:11:20 +02:00
Michael Fabian 'Xaymar' Dirks
a8c8d3beaa filters/displacement: Permanently deprecate the filter 2023-03-28 13:11:20 +02:00
Michael Fabian 'Xaymar' Dirks
5a65cf3525 plugin: Replace long descriptions with "Open Manual" button
While the long descriptions were useful, keeping the updated and translated is pretty much impossible. Technology moves fast and not everyone that translates the project knows a lot about technology.

Therefore the long descriptions have now been replaced with a button that opens the wiki page for the feature instead. This should drastically reduce the number of help cases, and improve the translation coverage at the same time.
2023-03-28 13:11:20 +02:00
Michael Fabian 'Xaymar' Dirks
48ba34538e plugin: Add function to open an URL 2023-03-28 13:11:19 +02:00
Michael Fabian 'Xaymar' Dirks
21d455b674 filters/color-grading: Add proper suffixes to UI properties 2023-03-28 13:11:19 +02:00
Michael Fabian 'Xaymar' Dirks
cd7f45eec4 source/shader: Fix missing buffered draw requirement (#516)
Fixes #516
2023-03-28 13:11:19 +02:00
Michael Fabian 'Xaymar' Dirks
b324ed2b28 filters/color-grading: Adjust range for Lift and Gain (#515)
Fixes #515
2023-03-28 13:11:19 +02:00
Michael Fabian 'Xaymar' Dirks
0a44333c11 transition/shader: Use direct rendering (#501) 2023-03-28 13:11:17 +02:00
Michael Fabian 'Xaymar' Dirks
a2f518224f source/shader: Use direct rendering (#501) 2023-03-28 13:11:17 +02:00
Michael Fabian 'Xaymar' Dirks
4a3d1d4fa5 filter/shader: Use direct rendering (#501) 2023-03-28 13:11:17 +02:00
Michael Fabian 'Xaymar' Dirks
e7dd44e3ec gfx/shader: Allow specifying effect for direct rendering (#501) 2023-03-28 13:11:17 +02:00
Michael Fabian 'Xaymar' Dirks
4e21830627 filter/dynamic-mask: Require buffered rendering 2023-03-28 13:11:17 +02:00
Michael Fabian 'Xaymar' Dirks
ed92e7390a filter/displacement: Require buffered rendering 2023-03-28 13:11:16 +02:00
Michael Fabian 'Xaymar' Dirks
29d60180cc filter/color-grade: Add direct rendering support (#501) 2023-03-28 13:11:16 +02:00
Michael Fabian 'Xaymar' Dirks
4c082ad3a9 filters/color-grade: Fix support for translucent Inputs
Additionally also document some of the code and enforce certain GPU states for rendering.
2023-03-28 13:11:16 +02:00
Michael Fabian 'Xaymar' Dirks
303c14de4e ffmpeg/tools: Fix incorrect transfer characteristics
Both Rec. 601 and sRGB looked extremely wrong before, resulting in weird or warped colors. Since it is very difficult to find up to date and accurate information on standards, we should simply go for what has the most widespread support.
2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks
1909ee01d6 obs/gs/vertex: Don't include unused headers 2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks
b0ac0b724a nvidia/cuda: Use reinterpret_case instead of static_cast 2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks
26a76e0451 filters/color-grade: Redesign for use with LUTs
There is hardly any reason for us to recalculate everything all the time. LUTs can cache the work once, and then re-use it every time necessary, drastically reducing the impact of Color Grading by almost 60% (on some GPUs even more). Additionally this fixes the negative gamma issue, which plagued the filter for a while.

In the future, once PR 4199 (https://github.com/obsproject/obs-studio/pull/4199) has been merged, we can cut away one intermediate rendering step currently required to make the effect work. Hopefully this will be with the 27.x release of OBS Studio.
2023-03-28 13:11:11 +02:00
Michael Fabian 'Xaymar' Dirks
eba0a467d5 gfx/lut: Add a simple but efficient LUT producer and consumer
For simple image and video editing, LUTs (Look-Up Tables) are vastly superior to running the entire editing operation on each pixel - especially if all the processing can be done inside a single shader.

Due to the post-processing requirements for our LUTs, we are limited to 8 bits per channel - though clever use of the unused Alpha channel may result in additional space. For our purposes however, this is definitely enough.
2023-03-28 13:11:11 +02:00
tytan652
6ccac3331a ui: Don't reference Updater if it's been disabled
Merges #446
2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
5ac894c59c cmake: Refactor component and dependency system
A complete redesign of the component and dependency system is necessary in order to support additional platforms, such as MacOS and other Linux platforms. Additionally it results in a much cleaner code base, which is less confusing overall.

Eventually it might be necessary to push components of StreamFX into their own CMake projects, as it is getting kind of complex now. Especially with the push for a proper plugin manager, things get dicey for big plugins like StreamFX.
2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
b8ff72d6c8 sources/mirror: Clamp minimum size to 1x1
This works around an issue in our code with asynchronous or delayed sources.
2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
675186a737 ui: Fix additional Qt issues 2023-03-28 13:11:07 +02:00
Xaymar
2c37e19266 ui/updater: Don't require Qt interaction before OBS is ready (#427)
Fixes one of the launch freezes caused by StreamFX due to interaction with the Qt message loop.
2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks
e7992cd776 source/mirror: Don't ignore data in initializer 2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks
3c2fbf2dc4 filter/shader: Initialize with given data
Ignoring the data parameter during initialization results in duplication and some third party plugins not working as expected, so it's better to not ignore it.

Fixes #315
2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
17ffbdc55e gfx/shader: Correctly cache shader rendering result
Fixes #392
2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
ff3f8cff03 encoders/ffmpeg: Implement AMF H.264 and H.265 handlers
Adds support for the AMD Advanced Media Framework H.264 and H.265 encoders via FFmpeg. The majority of settings are supported, and the UI/UX experience mimics that of the NVENC implementation. Various settings are left out due to their complexity and should be controlled via the custom parameters field.
2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
79ef573f5b filter/dynamic-mask: Explicitly increase showing/active references
Fixes #384
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
716da4f6cc obs/tools: Add active_source and visible_source helpers
These classes help us manage active and showing references to a source, which seem to be necessary for filters.
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
ad33066cd3 filter/blur: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
e2d342818a filter/color-grade: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
576606c712 filter/displacement: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
3da4526795 filter/dynamic-mask: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
785ffa0b7d filter/sdf-effects: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
54127f6ced gfx/shader: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
aacb1d41bc obs/gs/effect: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
cc1b9c1559 obs/gs/mipmapper: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
0a71af9d6a util/library: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
55ad82aac0 gfx/blur: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
71a969c30f configuration: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
4de094511a plugin: Implement proper functions to get config and data files
Using the obs_module_file and obs_module_config_path macros works okay, but it comes with a slight overhead as well as additional requirements when passing it to C++ functions that expect certain rules to be fulfilled. By instead wrapping the actual functionality into our own functions and using those we can avoid most of the issues that come with the old approach.

Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
f796c85527 util/bitmask: Move bitmask functionality its own file 2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
7e7ed80a9a util/library: Use string_view instead of string
Slightly improves performance and reduces memory impact, as string data is not duplicated.
2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
032a3c6deb obs/source-factory: Skip broken filter rendering by default
Fixes a black screen issue if a filter happens to run into an unexpected issue which it considers unrecoverable.
2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
d36e735bb1 util/curl: Add missing include for vector 2023-03-28 13:11:02 +02:00
Michael Fabian 'Xaymar' Dirks
74c621cde5 ui/updater: Set modal flag after hiding the dialog
This fixes a bug with older Qt versions which would not remove the modal window from the parent in the setModal() call, resulting in an unusable parent window.

Fixes #368
2023-03-28 13:11:02 +02:00
Michael Fabian 'Xaymar' Dirks
e6cef83588 ui/updater: Always initialize members to zero 2023-03-28 13:11:02 +02:00
Daniel Molkentin
3d5e752139 encoders/handlers/debug: Always return something in to_string (#354) 2023-03-28 13:11:01 +02:00
Daniel Molkentin
2c8687f4b7 encoders/ffmpeg: Use correct parameter for log (#355) 2023-03-28 13:11:01 +02:00
Michael Fabian 'Xaymar' Dirks
daa4a385d7 encoder/ffmpeg: Don't use hardware encoding for unsupported formats 2023-03-28 13:11:00 +02:00
Michael Fabian 'Xaymar' Dirks
6bc1a6b870 encoders/ffmpeg: Don't overwrite already correct settings 2023-03-28 13:11:00 +02:00
Michael Fabian 'Xaymar' Dirks
9938422d5c ffmpeg/tools: Set correct information when encoding
Improves the previous logic and makes it compatible with the new additions in 26.x, such as sRGB. This was previously broken as the focus was on existing features which could be tested without requiring a compiler to be installed.

Incorrect understanding of how sRGB works with RGB and YCC/YUV formats also caused sRGB to be treated as RGB when I444 was selected. This should also now be fixed, hopefully permanently.

Fixes #331
2023-03-28 13:11:00 +02:00
Michael Fabian 'Xaymar' Dirks
82413fd85c ui/updater: Apply workaround for OBS Studio checking for modals
In order to work around a bug in the OBS Studio UI code, we have to swap our modal status right before showing and right after hiding, so that the OBS Studio tray menu continuous working correctly. This is a bit of a weird solution, but it does work as expected.

Related: https://github.com/obsproject/obs-studio/issues/3518
2023-03-28 13:10:59 +02:00
Michael Fabian 'Xaymar' Dirks
07c892b6a4 ui/about: Fix incorrect icon for YouTube URL
Fixes #329
2023-03-28 12:52:28 +02:00
Michael Fabian 'Xaymar' Dirks
f907fc80b0 updater: Add functionality to check for updates
Implements a manual and automatic update checker with support for both release and testing update channels, allowing users to stay as up to date as possible. It is fully compliant with privacy regulations around the world, as it stays completely silent and inactive until the user gives the Ok to connect to GitHub for the latest releases.
2023-03-28 12:52:27 +02:00
Michael Fabian 'Xaymar' Dirks
1107c1e390 util/curl: Add C++ wrapper for CURL 2023-03-28 12:52:27 +02:00
Michael Fabian 'Xaymar' Dirks
59950bec3b ui: Fix support for disambiguation in translations 2023-03-28 12:52:27 +02:00
Michael Fabian 'Xaymar' Dirks
36976cb550 util/threadpool: Don't hold work endlessly after processing it 2023-03-28 12:52:27 +02:00
Michael Fabian 'Xaymar' Dirks
0e1377f359 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.
2023-03-28 12:52:23 +02:00
Michael Fabian 'Xaymar' Dirks
8306dc5b92 encoders/ffmpeg: Add function to get info object 2023-03-28 12:52:23 +02:00
Michael Fabian 'Xaymar' Dirks
a39fd89ba7 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.
2023-03-28 12:52:23 +02:00
Michael Fabian 'Xaymar' Dirks
ab9d9e8443 encoders/handlers/nvenc: Make code C++ standard compliant again 2023-03-28 12:52:23 +02:00
Michael Fabian 'Xaymar' Dirks
c445865111 encoders/ffmpeg: Support for FFmpeg versions older than 58.x 2023-03-28 12:52:23 +02:00
Michael Fabian 'Xaymar' Dirks
012027578a encoders/ffmpeg: Disable hardware path on Linux 2023-03-28 12:52:22 +02:00
Michael Fabian 'Xaymar' Dirks
2f6070d7a2 encoders/handlers/prores_aw: Fix override warning 2023-03-28 12:52:22 +02:00
Michael Fabian 'Xaymar' Dirks
6b57cdf019 encoders/codecs: Add missing includes 2023-03-28 12:52:22 +02:00
Michael Fabian 'Xaymar' Dirks
66b1715d78 ffmpeg/tools: Fix compatibility with Ubuntu 18.04 2023-03-28 12:52:22 +02:00
Michael Fabian 'Xaymar' Dirks
63a5873413 project: Remove non-standard std:: prefix from types 2023-03-28 12:52:22 +02:00
Michael Fabian 'Xaymar' Dirks
c20ac4a413 templates: Add generated configuration file 2023-03-28 12:52:21 +02:00
Michael Fabian 'Xaymar' Dirks
f3b3af2030 ffmpeg/tools: Ensure we aren't comparing against a nullptr 2023-03-28 12:52:21 +02:00