Commit Graph

315 Commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks e9283aec37 project: Add support for multi stage release cycles
To ensure better stability of future releases, we need to adopt multiple stages in the release cycle. As we already label Alpha, Beta, Candidate and Stable differently, simply adopting this classification system already does everything for us. This also allows us to maintain compatibility with the existing system, while offering something new entirely.
2023-04-05 18:58:27 +02:00
Michael Fabian 'Xaymar' Dirks 9e6171ab06 ci: Upgrade to LLVM/Clang 14.x 2023-04-05 18:58:26 +02:00
Michael Fabian 'Xaymar' Dirks d7dc5804d4 cmake: Update clang submodule
Fixes #799
2023-04-05 18:58:25 +02:00
Michael Fabian 'Xaymar' Dirks 0ea796de94 cmake: Fix some poorly formatted messages 2023-04-05 18:58:25 +02:00
Michael Fabian 'Xaymar' Dirks afdddd9381 cmake: Split optimizations by platform and compiler
Also make fast math optional on all platforms and compilers.
2023-04-05 18:58:25 +02:00
Michael Fabian 'Xaymar' Dirks a5b20c85b0 cmake: Add support for older libOBS versions
This is necessary for libOBS 27.2 and earlier, as the file name is LibObsConfig.cmake, not libobsConfig.cmake.
2023-04-05 18:58:24 +02:00
Michael Fabian 'Xaymar' Dirks 9fbbcdf89d cmake: Adjust install and package logic for libOBS 27.2
Also add basic support for libOBS 28.0
2023-04-05 18:58:24 +02:00
Michael Fabian 'Xaymar' Dirks 7e41414f57 cmake: Allow targeting a specific architecture level 2023-04-05 18:58:24 +02:00
Michael Fabian 'Xaymar' Dirks 5f050515ba cmake: Further improve libOBS and obs-frontend-api detection 2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks ad48e74410 cmake: Fix formatting 2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks 59411d42d5 cmake: Don't enable clang integration by default
Affects #799
2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks a5de211768 cmake: Add Link-Time Optimization option if supported 2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks 583ba282f8 cmake: Merge standalone detection into single conditional 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks 65afefd0ba cmake: Use CMAKE_MESSAGE_INDENT if available 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks 56f50fcc54 cmake: Require version 3.13 or newer 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks 6852a2468b project: Version 0.12.0a1 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks 9bbc35b293 obs/source: Refactor old deprecated classes 2023-04-05 18:58:21 +02:00
Michael Fabian 'Xaymar' Dirks f160580794 cmake: Improve build system with additional features and options
- Moved all auto-dependencies to a uniform subdirectory for easier caching and cleanup.
- Add an option to download or specify a path for libOBS+obs-frontend-api.
- Remove the dependency on the non-standard obs-frontend-apiConfig.cmake file.
- Add an option to download or specify a path for OBS Dependencies.
- Add an option to download or specify a path for Qt.
- Add an option to download or specify a path for AOM.
- Fix and improve architecture and platform detection.
- Fix some messages having two :, or no prefix at all.
- Fix detection of obs-frontend-api.
- Fix applying custom compiler and linker flags for MSVC and GNU-style builds.
- Use target_compile_options over add_compile_options for compatibility.
2023-04-05 18:58:20 +02:00
carsten.braun 0540a18f27 encoders/ffmpeg/dnxhr: Add Avid DNxHR Encoder based on FFmpeg 2023-04-05 18:58:18 +02:00
Michael Fabian 'Xaymar' Dirks 4d4db59b23 project: Version 0.11.0 2023-04-05 18:51:56 +02:00
Michael Fabian 'Xaymar' Dirks 53e9811f11 project: Version 0.11.0c1 2023-04-05 18:51:56 +02:00
Michael Fabian 'Xaymar' Dirks b72e4ee83e project: Version 0.11.0b3 2023-04-05 18:51:54 +02:00
Michael Fabian 'Xaymar' Dirks 292562b63e project: Version 0.11.0b2 2023-04-05 18:51:48 +02:00
Michael Fabian 'Xaymar' Dirks 7edda268e0 project: Version 0.11.0b1 2023-04-05 18:51:45 +02:00
Michael Fabian 'Xaymar' Dirks 1f78de676d cmake: Fix and improve Code Signing on Windows
It was sometimes impossible to sign the binaries on Windows, depending on how CMake was being run. By explicitly converting to the intended native format, we avoid this problem for most situations. Additionally we now support per-project certificates, instead of global certificates only. This also allows multiple uses of cmake-codesign in the same overall project.
2023-04-05 18:51:41 +02:00
Michael Fabian 'Xaymar' Dirks 655ff6e367 third-party: Add GLAD OpenGL wrapper 2023-04-05 18:51:40 +02:00
Michael Fabian 'Xaymar' Dirks 0e26018cd3 ci: Sign builds with the provided key automatically 2023-04-05 18:51:39 +02:00
Michael Fabian 'Xaymar' Dirks e7d17695c5 cmake: Add support for Code Signing on supported platforms 2023-04-05 18:51:39 +02:00
Michael Fabian 'Xaymar' Dirks 5d89b0d8b1 project: Version 0.11.0a8 2023-04-05 18:51:39 +02:00
Michael Fabian 'Xaymar' Dirks ad3ac69cd7 filter/auto-framing: Frame your face, automatically! 2023-04-05 18:51:36 +02:00
Michael Fabian 'Xaymar' Dirks e6ec0fc4c7 nvidia/ar/facedetection: Add Face Detection feature 2023-04-05 18:51:36 +02:00
Michael Fabian 'Xaymar' Dirks c1ecfe70b3 nvidia/ar/feature: Add wrapper for AR features 2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks 913ac4b309 nvidia/ar: Add modern wrapper for Maxine AR SDK 2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks c3440d2069 project: Remove undocumented "NVIDIA Face Tracking" feature
Originally intended to be an experiment with no future, it turned out to be very popular with streamers that move a lot. In the end it was popular enough that NVIDIA added their own variant to their Broadcast software, which works decently enough. Unfortunately my wrapper code around the library was written very poorly, so it didn't take long for it to break out of nowhere.
2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks 28fa127ead gfx/debug: Helper class to handle common debug rendering 2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks 22f0bd1da1 project: Version 0.11.0a7 2023-04-05 18:51:32 +02:00
Michael Fabian 'Xaymar' Dirks b4a7cc7f2f cmake: NVIDIA Video Effects SDK requires CUDA 2023-04-05 18:51:31 +02:00
Michael Fabian 'Xaymar' Dirks 6b0a14135c cmake: Fix is_feature_enabled and set_feature_disabled 2023-04-05 18:51:31 +02:00
Michael Fabian 'Xaymar' Dirks 90bb03779c filter/virtual-greenscreen: Add Virtual Greenscreen filter 2023-04-05 18:51:31 +02:00
Michael Fabian 'Xaymar' Dirks 6d20280956 nvidia/vfx/greenscreen: Simple wrapper for the Green Screen effect 2023-04-05 18:51:30 +02:00
Michael Fabian 'Xaymar' Dirks 1cb84fa6b5 project: Version 0.11.0a6 2023-04-05 18:51:26 +02:00
Michael Fabian 'Xaymar' Dirks d3808f3960 project: Version 0.11.0a5
- Updated the AOM library to libAOM v3.1.2-882-03b6f69.
- Fixed the Denoising filter not working correctly with unexpected sizes.
- Fixed the Denoising filter not rendering at the correct size.
- Fixed the Denoising and Upscaling filter destroying the Alpha channel.
- Fixed the Denoising filter running twice on the same image, resulting in a far worse image.
- Fixed Upscaling not automatically deciding on a proper scale factor for you when the selected one is not supported.
2023-04-05 18:51:23 +02:00
Michael Fabian 'Xaymar' Dirks 889fea6422 effects: Add standard effect file
There are a number of duplicate shader routines we should combine into a single shader to save disk space, and remove unexpected errors in one copy but not the other.
2023-04-05 18:51:22 +02:00
Michael Fabian 'Xaymar' Dirks 168d04293a project: Version 0.11.0a4
* The "Super Resolution" filter is now called "Upscaling" and in the future will support additional providers, like FidelityFX "Super-Resolution" and NVIDIA "Upscaling".
* The entire plugin now has identical logging behavior, so it should be easy to identify exact parts of the plugin in log files.
* A crash caused by log functions on Linux/Mac has been fixed, which was caused by reusing variable length arguments. (#632)
* Radeghast submitted a new 'Swirl' example shader. (#618)
* Added an AV1 encoder based on AOM-AV1, although its stability and quality may not be great so far.
* Denoising of Video content is now possible with the new "Denoising" filter on NVIDIA RTX hardware.
* Fixed a few bugs affecting the "Upscaling" (previously "Super Resolution") filter.
* Fixed references to NVIDIA missing the ®.
2023-04-05 18:51:19 +02:00
Michael Fabian 'Xaymar' Dirks a0fc00ed64 cmake: Fix incorrect target for interface include directories 2023-04-05 18:51:18 +02:00
Michael Fabian 'Xaymar' Dirks 247553fa74 filter/denoising: Add Denoising filter 2023-04-05 18:51:17 +02:00
Michael Fabian 'Xaymar' Dirks 843a76d1c6 filter/upscaling: 'Video Super-Resolution' -> 'Upscaling'
The previous name was too strict on what could be put into the effect, and would result in additional clutter in the Filter menu when we eventually decide to support other Upscaling methods than Super-Resolution networks.
2023-04-05 18:51:17 +02:00
Michael Fabian 'Xaymar' Dirks cebd8fa744 nvidia/vfx/effect: Implement managed effect wrapper
Slightly simplifies interaction with effects.
2023-04-05 18:51:16 +02:00
Michael Fabian 'Xaymar' Dirks 9a4ab558c0 encoders/aom-av1: AV1 encoder based on libaom 2023-04-05 18:51:15 +02:00
Michael Fabian 'Xaymar' Dirks 91c9df3097 project: Apply Coding Guidelines 2023-04-05 18:51:13 +02:00
Michael Fabian 'Xaymar' Dirks 668b8af213 project: Version 0.11.0a3 2023-04-05 18:51:12 +02:00
Michael Fabian 'Xaymar' Dirks 3dd65e8815 cmake: Check for provider instead of feature 2023-04-05 18:51:10 +02:00
Michael Fabian 'Xaymar' Dirks da339e6e26 project: Version 0.11.0a2 2023-04-05 18:51:09 +02:00
Michael Fabian 'Xaymar' Dirks bb03864664 filter/video-superresolution: Add Video Super-Resolution filter 2023-04-05 18:51:09 +02:00
Michael Fabian 'Xaymar' Dirks 02c6156f2e nvidia/vfx: Add wrapper for NVIDIA Video Effects SDK 2023-04-05 18:51:09 +02:00
Michael Fabian 'Xaymar' Dirks 04c3b88d5d nvidia/cv/texture: Wrapper for gs::texture Images 2023-04-05 18:51:08 +02:00
Michael Fabian 'Xaymar' Dirks 8784c91ec6 nvidia/cv/image: Wrapper for Images 2023-04-05 18:51:08 +02:00
Michael Fabian 'Xaymar' Dirks 84a7685d7b nvidia/cv: Add NVIDIA Computer Vision wrapper 2023-04-05 18:51:08 +02:00
Michael Fabian 'Xaymar' Dirks 5279993f4b plugin: If CUDA is requested, ensure it is loaded first 2023-04-05 18:51:07 +02:00
Michael Fabian 'Xaymar' Dirks 57f15b64f7 util/platform: Add Path and String conversion utility functions 2023-04-05 18:51:06 +02:00
Michael Fabian 'Xaymar' Dirks 8eef6ddd85 project: Version 0.11.0a1 2023-04-05 18:51:02 +02:00
Michael Fabian 'Xaymar' Dirks 5d4f88e614 gfx/blur: Reduce code duplication with shared file
A lot of the blur effects share quite a bit of code, which can be offloaded into a single include.
2023-04-05 18:51:01 +02:00
Michael Fabian 'Xaymar' Dirks bac7323357 cmake: Fix NVIDIA trademark 2023-04-05 18:50:55 +02:00
Michael Fabian 'Xaymar' Dirks 8ab8d66977 cmake: Update for OBS Studio 27.0.0
* OBS Studio 27.0.0 supports ARM64 on MacOS directly.
* Windows now uses "Detours" for hooking into Windows API functions.
2023-04-05 18:50:55 +02:00
Michael Fabian 'Xaymar' Dirks 9ed02fe079 cmake: Adjust minimum libOBS version to 27.0.0-rc2 2023-04-05 18:50:53 +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 5cd1d13d5f nvidia/cuda/context: Merge context-stack into context header 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 cf8b2c818a project: Version 0.10 2023-03-28 13:11:22 +02:00
Michael Fabian 'Xaymar' Dirks e4f3dd263d project: Version 0.10.0b3 2023-03-28 13:11:20 +02:00
Michael Fabian 'Xaymar' Dirks 2a48036e7d project: Version 0.10.0b2
* Fixed a bug preventing versions from being parsed correctly in CMake.
* Fixed a bug introduced between 0.9.3 and 0.10.0b1 which broke transparency support for Color Grading.
* Added support for direct rendering to some sources/filters/transitions.
* Added .pkg based Installer for MacOS, thanks to @cpyarger.
* Updated translations from Crowdin.
2023-03-28 13:11:18 +02:00
Michael Fabian 'Xaymar' Dirks af660cfc1d cmake: (Windows) Fix incorrect reference to CMAKE_PACKAGE_PREFIX 2023-03-28 13:11:16 +02:00
Christopher P Yarger 483e3a5f2d cmake: (MacOS) Add .pkg installer generation
Enables users of the Mac Operating System to use an automated installer instead of the manual installation method which is prone to user errors. This is done via the use of "Packages", which generates a .pkg file according to the requirements we present it.
2023-03-28 13:11:16 +02:00
Michael Fabian 'Xaymar' Dirks 8189076cd2 cmake: Fix version detection code
When the CMake script was rewritten, not much attention was put into the versioning code, resulting in odd behavior which was never found or fixed. For example, the automatic splitting of the suffix from the number never worked, and the build number was being stored in the wrong variable.
2023-03-28 13:11:15 +02:00
Michael Fabian 'Xaymar' Dirks d24fb07dcc cmake: Update download logic 2023-03-28 13:11:15 +02:00
Michael Fabian 'Xaymar' Dirks d8bb1cecc5 cmake: (MacOS) Fix linker path for libraries 2023-03-28 13:11:15 +02:00
Michael Fabian 'Xaymar' Dirks 597a240d73 project: 0.10.0b1 2023-03-28 13:11:14 +02:00
Michael Fabian 'Xaymar' Dirks 24f1cd0cde cmake: (MacOS) Install to a more reasonable structure 2023-03-28 13:11:14 +02:00
Michael Fabian 'Xaymar' Dirks cb2621f98b cmake: Don't require code signing on MacOS 2023-03-28 13:11:14 +02:00
Michael Fabian 'Xaymar' Dirks 5b893ca5d6 cmake: Add otool post-build steps for MacOS 2023-03-28 13:11:14 +02:00
Michael Fabian 'Xaymar' Dirks 03a8168beb project: Version 0.10.0a2
* 3D Transform should now appear again.
* Automatic disabling of unsupported features should now work in CMake.
* Fixed a compilation error on some versions of GCC.
2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks 01f16e6d1f cmake: Fix features being enabled on unsupported platforms 2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks be699c643c cmake: Fix TRANSFORM typo 2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks c95afab9d4 project: Version 0.10.0a1
- #437 Use 'git describe --tags' for versioning.
- #439 Add support for overriding the automatically detected version.
- #454 Fixed new versioning code breaking when the tag is on the current commit.
- #427, #428 Fix Qt interaction before OBS Studio is actually ready.
- #452 Fixed building without updater but with UI.
- #447 Redesigned Color Grading to support two rendering modes:
    - Direct Rendering applies the entire color grading function to every single pixel, and is thus more accurate, but much slower.
    - #-Bit LUT Rendering first applies the color grading function to a LUT that varies in accuracy, and then uses that LUT to render the actual output instead, which is much faster but less accurate.
- #447 Optimized Direct Rendering in Color Grading to be up to 25% faster, while using 50% less VRAM.
- #440 Removed support for Ubuntu 18.04 as it ships seriously outdated versions of libraries we use.
2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks e59a33423e cmake: Always use long git describe 2023-03-28 13:11:11 +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
Michael Fabian 'Xaymar' Dirks 73f9257633 effects: Add RGB, HSV, and YUV conversion functions 2023-03-28 13:11:11 +02:00
Michael Fabian 'Xaymar' Dirks a027a57d09 effects: Add generic shared header with common code 2023-03-28 13:11:11 +02:00
Michael Fabian 'Xaymar' Dirks b1b6fa2cf9 cmake: Add packaging support for Windows, Linux and Mac
Also adds packaging for the proposed unified plugin format.
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 851e1e8939 cmake: Add proper version override support 2023-03-28 13:11:09 +02:00
Michael Fabian 'Xaymar' Dirks 2d522f3c50 cmake: Improve versioning system 2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks 2f8a0935c5 project: Version 0.10.0a
* encoders/ffmpeg: Implement AMF H.264 and H.265 handlers
* locale: New Crowdin updates (Turkish) (#373)
* examples: Added adjustable luminance to hexagon size (#364)
* cmake: Add option to override download versions and hashes
2023-03-28 13:11:07 +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 2eb59a58f8 cmake: Add option to override download versions and hashes
Allows users to override the built-in download values with custom ones, in order to build with different versions of OBS or the depencencies used.
2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks f796c85527 util/bitmask: Move bitmask functionality its own file 2023-03-28 13:11:03 +02:00
Xaymar 5185c720ea cmake: Restore default visibility
The MODULE_EXPORT and EXPORT macros in libOBS do not correctly mark a function or type as visible on GCC, which results in the newly added flag hiding everything from view, instead of just what should be hidden.
2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks e866bc97d2 cmake: Update to libOBS 26.0.x 2023-03-28 13:11:02 +02:00
Michael Fabian 'Xaymar' Dirks 85a88902de cmake: Check for "Darwin" instead of "Mac" to support MacOS 2023-03-28 13:11:01 +02:00