Commit Graph

155 Commits

Author SHA1 Message Date
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 4947ae9a13 cmake: Enable FFmpeg Encoders on Linux 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 0ecf971446 templates: Move template files to better directory 2023-03-28 12:52:21 +02:00
Michael Fabian Dirks d2f81d8956 project: Version 0.9.0a2
* #270 Add additional shadertoy effects (by Oncorporation/Surn).
* #275 Improve installer user experience.
* #277 Add CI caching to improve build speeds.
* #286 Rename LOG_ to DLOG_ to avoid macro confusion.
* #287 Add new 'Thank You' entries.
* #288 Fix memory leaks caused by obs::source_tracker.
* #289 Fix memory leaks caused by configuration and UI.
* #290 Don't use namespaces that don't exist.
* #292 Fix/Work around a memory leak in gs::vertex_buffer.
* #293 Fix missing include in plugin.hpp.
* #294 Fix Clang toolset integration.
* #296 Fix FFmpeg encoder fallback support.
* #298 Fix NVENC logging incorrect values.
* #300 Remove level 5.2 from NVENC H.264.
* #301 Show warnings for exceptions thrown from tasks in a threadpool.
* #302 Clean up code to fix all warnings and reapply formatting.
* #304 Update Ubuntu 19.10 to 20.04 and revert to system-installed clang.
2023-03-28 12:52:21 +02:00
Michael Fabian 'Xaymar' Dirks 09c151a9d2 cmake: Don't enable useless warnings on GCC
Using '-Wpedantic' on any GCC warnings enables a lot of annoying warnings that don't actually warn about anything. Some of the warnings seem to exist purely for maintaining a certain code style, and have no actual effect on the program itself. Since there is no way to selectively disable warnings like on MSVC, removing it is the easiest choice.
2023-03-28 12:52:20 +02:00
Michael Fabian 'Xaymar' Dirks dbb71cf801 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.
2023-03-28 12:52:20 +02:00
Michael Fabian 'Xaymar' Dirks 12a6a76341 cmake: Fix Clang toolset support 2023-03-28 12:52:18 +02:00
Michael Fabian 'Xaymar' Dirks 731dbd26a7 cmake, ci: Add caching support to speed up builds 2023-03-28 12:52:17 +02:00
Michael Fabian 'Xaymar' Dirks 16489c4180 project: Improve user experience in the Installer
Adds a BeforeInstall step to the InnoSetup installer which uses the msvc-redist-helper tool to automatically check for the necessary DLLs and install the required redistributable if some are found to be missing.

Additionally slightly modernized the installer with a design that isn't from the 90s, and paves the way for preventing updating StreamFX while OBS Studio is still running.
2023-03-28 12:52:16 +02:00
Michael Fabian 'Xaymar' Dirks df97f71655 project: Version 0.9.0a1 2023-03-28 12:52:16 +02:00
Michael Fabian 'Xaymar' Dirks 161f10a921 encoders/ffmpeg: Rename files to match naming scheme 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks d3c2f288b4 obs/encoder-factory: Factory to create encoder instances 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks 5cccedc2e4 cmake: Add support for code signing 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks 96d270ba73 cmake: Fix generated version resource file 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks 917a74e75e project: Version 0.8.0 2023-03-28 12:40:47 +02:00
Michael Fabian 'Xaymar' Dirks 2fb2b07990 cmake: Don't set version for Mac dynamic libraries 2023-03-28 12:40:47 +02:00
Michael Fabian 'Xaymar' Dirks 4fb3228c04 cmake: Add an option to turn off clang integration
This allows building the plugin with compilers that pretend to be clang but aren't actually clang, like Googles 'Depot Tools' and some Clang-like compiler tools.
2023-03-28 12:40:47 +02:00
Michael Fabian 'Xaymar' Dirks a2fd4dd2f6 gfx/shader: Inlining, std::string_view and optimizations 2023-03-28 12:40:45 +02:00
Michael Fabian 'Xaymar' Dirks 51b58ee9f3 project: Version 0.8.0b3
* Fixed Linux distros not being able to load the plugin.
* Fixed vertex buffers not being zero initialized.
* Removed all unused mipmapping options and drastically optimized it.
* Added lots and lots of optional performance profiling.
* Optimize Dual Filtering Blur by re-using rendertargets.
* Optimized everything to use single fullscreen tri instead of quads.
* Removed broken effects.
2023-03-28 12:40:42 +02:00
Michael Fabian 'Xaymar' Dirks 624570b862 examples: Remove broken effects 2023-03-28 12:40:42 +02:00
Michael Fabian 'Xaymar' Dirks 49f1cbc15e project: Improve performance profiling support
Adds a new CMake option "ENABLE_PROFILING" which enables all CPU and GPU performance profiling available in StreamFX for tracking what's actually causing things to be slow.
2023-03-28 12:40:41 +02:00
Michael Fabian 'Xaymar' Dirks 50671c7f69 project: Version 0.8.0b2hf2 2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks 7e192f3f17 project: Version 0.8.0b2hf1
* #186 Write alpha channel to render target in shaders.
2023-03-28 12:40:39 +02:00
Michael Fabian 'Xaymar' Dirks 685ed27efc project: Version 0.8.0b2
* #153 #167 #178 Update localization.
* #157 Fix a few example shaders and add some new ones.
* #160 Fix Look Ahead setting
* #162 Increase Direct3D11 texture eviction priority.
* #163 Asynchronous Nvidia Face Tracking.
* #164 Add clang-tidy support to CMake.
* #165 Fix some clang-10 errors.
* #168 Updated StreamFX logo.
* #169 Redesigned version string generation.
* #170 Fix compiler error with C++17 when using libobs.
* #171 Add global configuration handler.
* #172 Move Windows exclusive library handler into its own file.
* #174 Refactor everything into the streamfx:: namespace.
* #176 Implement a new UI/UX experience for StreamFX users.
* #177 Link to stdc++fs on GNU and Clang.
* #179 Fix incorrect render sizes and performance with gfx::shader.
* #181 #183 Fix locale strings missing info or no longer being used.
* #182 Add a default path for gfx::shader based on the selected file or the examples directory.
2023-03-28 12:40:39 +02:00
Michael Fabian 'Xaymar' Dirks 910ebd91cc cmake: Link to stdc++fs on GNU compatible and Clang 2023-03-28 12:40:37 +02:00
Michael Fabian 'Xaymar' Dirks f58ce9f421 project: Implement a brand new UI with fancy windows
Implements support for various new UI features that weren't possible up until now, such as an 'About StreamFX' window with a thank you to everyone that supported the project up until now.
2020-04-23 01:09:02 +02:00
Michael Fabian 'Xaymar' Dirks 2ab8949ba5 cmake: Place Windows exclusive functionality into own file 2020-04-22 23:32:22 +02:00
Michael Fabian 'Xaymar' Dirks 9ddc9051c7 configuration: Add global configuration handler 2020-04-22 23:15:32 +02:00
Michael Fabian 'Xaymar' Dirks c93789f6dc cmake: Slightly redesign version string generation 2020-04-22 23:11:01 +02:00
Michael Fabian 'Xaymar' Dirks 92fc2b3ccb cmake: Add support for running clang-tidy
Adds supports for running clang-tidy from within CMake, if the Clang toolset was found. This feature is experimental, but should work on many compilers, as it relies on generated compile_commands.json which are fully generated by the clang subproject. Using clang-tidy we can find hidden bugs that other static analyzers do not detect, or compilers don't even bother throwing an error for.
2020-04-18 19:11:53 +02:00
Michael Fabian 'Xaymar' Dirks 771f41381e project: Version 0.8.0b1
* Updated translations from CrowdIn.
* Fixed FFmpeg Encoder not using the Color Format option.
* Fixed ProRes not overriding the Color Format with the correct one.
* Fixed CMake adding a lib prefix to Linux builds.
* Fixed some sources not tagging the settings object with the plugin version, resulting in impossible to migrate settings.
* Massively improved GCC and Clang support, fixing almost all warnings and errors.
2020-04-09 00:29:18 +02:00
Michael Fabian 'Xaymar' Dirks c49bbfc1d0 cmake: Fix broken CMake code in 57dcdcd393 2020-04-05 11:25:03 +02:00
Michael Fabian 'Xaymar' Dirks 57dcdcd393 cmake: Add support for OBS Frontend API and Qt UI 2020-04-05 10:58:48 +02:00
Michael Fabian 'Xaymar' Dirks a138f95126 cmake: Fix clang support in native OBS Studio build 2020-04-05 06:50:21 +02:00
Michael Fabian 'Xaymar' Dirks d54630a197 cmake: Don't add lib prefix to binary files 2020-04-05 04:14:21 +02:00
Michael Fabian 'Xaymar' Dirks 994215a65f plugin: Version 0.8.0a4
* Updated libOBS to 25.0.3.
* Improved support for Ubuntu 16.04 and 18.04, for both GCC 8 and GCC 9.
* Fixed #116: Regression from 0.7.1 to 0.8.0.
* Fixed transitions not showing up.
* Added Shader Transitions, Shader Sources and Shader Filters.
* Added new example files for the new Shaders integration.
* Added Nvidia Face Tracking filter (requires compatible Nvidia RTX GPU and Nvidia AR SDK Runtime).
2020-04-03 01:49:06 +02:00
Michael Fabian 'Xaymar' Dirks c13b9c3641 cmake: Add support for local Unix installs 2020-04-03 01:16:33 +02:00
Michael Fabian 'Xaymar' Dirks 34e3601eda cmake: Add support for Linux standalone builds 2020-04-02 20:37:45 +02:00
Michael Fabian 'Xaymar' Dirks 59fa1d36d7 common: Common header include for improved platform support
This header includes all common data between headers used in the plugin. This should improve cross-platform compiling support whenever possible, as all platform-dependent common includes and defines can be done here.
2020-04-02 17:02:01 +02:00
Michael Fabian 'Xaymar' Dirks 43f1dcf205 filter-nv-face-tracking: Nvidia exclusive Face Tracking filter
Ever wished you had a professional camera operator to highlight and follow the action, ensuring the audience never misses a beat? Thanks to NVIDIA, you can now do this at home for free! The new NVIDIA AR SDK unlocks augmented reality features, including motion tracking for faces.

This allows me to provide you with an automated zoom and cropping solution for your video camera to transform your streams into a slick, polished broadcast, where you’ll always be the star of the show. Don’t forget - everything is customizable so the possibilities are endless. You can even recreate that Futurama squinting meme if you wanted to (with some scripting)!

The filter requires compatible Nvidia RTX hardware and the Nvidia AR SDK Runtime to be installed ahead of time. This filter is considered "stable" and shouldn't change much from version to version.
2020-03-31 21:46:47 +02:00
Michael Fabian 'Xaymar' Dirks 43b5d309eb transition: Add initial version of Shader filter
These allow you to apply any kind of filtering to a any source, using just standard HLSL. Just like transitions, one extra parameter is set called 'InputA'.

Fixes #95
2020-03-28 18:54:56 +01:00
Michael Fabian 'Xaymar' Dirks ead355beea transition-shader: Add initial version of Shader transitions
With this, the first proper shader effect is now possible. By using the four new automated shader parameters 'InputA', 'InputB', 'TransitionTime' and 'TransitionSize' you can write your own transition in HLSL.

Fixes #96
2020-03-28 18:38:45 +01:00
Michael Fabian 'Xaymar' Dirks 10fee7f048 util-profiler: Easy to use profiling helper 2020-03-27 20:10:09 +01:00
Michael Fabian 'Xaymar' Dirks 6776f2111c cmake: Disable some frequent unhelpful warnings
These warnings usually come from the standard code in MSVC or system headers, over which we have absolutely no control. Keeping them enabled does not improve our code at all.
2020-03-27 20:10:09 +01:00
Michael Fabian 'Xaymar' Dirks 67016ccd95 plugin: Version 0.8.0a3
* Updated libOBS to v25.0.1
* Fixed a freeze exclusive to v25.x with Source Mirror.
* Fixed audio mirroring only working on every 2nd configuration update with Source Mirror.
* Fixed audio being mirrored out of order on highly parallel systems (>4 Threads).
* Fixed discoloration of sources in 3D Transform.
* Fixed ffmpeg encoder not falling back to software if scaling is detected.
2020-03-21 09:23:54 +01:00
Michael Fabian 'Xaymar' Dirks 8f4313d8e8 cmake: Actually support delay loading on Windows 2020-03-20 23:39:21 +01:00
Michael Fabian 'Xaymar' Dirks 6d3c540349 cmake: Upgrade to OBS v25.0.1 2020-03-20 23:24:25 +01:00
Michael Fabian 'Xaymar' Dirks 6f2b50b0ad cmake: Redesign for future features 2020-03-20 23:09:46 +01:00
Brandon Edens 2dbed865bd
cmake: Fix file name for case-sensitive filesystem (#112)
Fixes #107 

Co-authored-by: Brandon Edens <bedens@fitbit.com>
2020-03-17 18:45:38 +01:00