Commit graph

936 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
3883c4759c encoders/handlers/amf: Deprecate encoder 2023-04-05 18:58:34 +02:00
Michael Fabian 'Xaymar' Dirks
fb09e98a5f gfx/shader/param-texture: Use obs::weak_source instead of obs::source 2023-04-05 18:58:33 +02:00
Michael Fabian 'Xaymar' Dirks
8f8b8839e5 obs/weak-source: Further optimization and modernization 2023-04-05 18:58:33 +02:00
Michael Fabian 'Xaymar' Dirks
808f5c63fb obs/gs/effect: Revert #836
The use of const references breaks '#include' for relative paths.
2023-04-05 18:58:32 +02:00
lainon
6e1566386e project: Apply more C++ paradigms to the code
- Use auto in places where code clarity is improved or identical.
- Replace trivial constructors and destructors with default.
- Use true random for random generation.
- Use std::string_view where it is valid to do so.
- Apply const where it is valid to do so.
- Use references where it is valid to do so.
- Manually optimize memory usage with std::move and std::copy.
- Opt for memory efficient containers where the size is known ahead of time.

Signed-off-by: lainon <GermanAizek@yandex.ru>
2023-04-05 18:58:32 +02:00
Michael Fabian 'Xaymar' Dirks
cbddee5b90 nvidia: Assign to std::string_view& instead of swapping
For unknown reasons this results in an error only when the project is built within git-bash and with cmake. It does not occur with cmake-gui or VS itself.
2023-04-05 18:58:32 +02:00
Michael Fabian 'Xaymar' Dirks
16a52ca126 ui/updater: Include QActionGroup for Qt6 support
In some cases, this include is provided automatically when it shouldn't exist at all. The exact cause is unknown.
2023-04-05 18:58:32 +02:00
Michael Fabian 'Xaymar' Dirks
30134bd284 gfx/source-texture: Fix bad ref with Debug compiles 2023-04-05 18:58:30 +02:00
Michael Fabian 'Xaymar' Dirks
a149531fb8 cmake: Upgrade version code to shared cmake-version module
This module handles parsing, generating, modifying and comparing of versions with pure CMake.
2023-04-05 18:58:28 +02:00
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
ba15203c67 gfx/source-texture: Apply formatting as required by clang-format 14 2023-04-05 18:58:26 +02:00
Michael Fabian 'Xaymar' Dirks
8a31b986ab project: Update to new classes 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks
3667426f49 obs/signal-handler: Update to new classes 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks
b108362ee1 gfx/source-texture: Update to new classes 2023-04-05 18:58:21 +02:00
Michael Fabian 'Xaymar' Dirks
fc693e0210 obs/tools: Remove more legacy tools 2023-04-05 18:58:21 +02:00
Michael Fabian 'Xaymar' Dirks
39548e760d obs/tools: Replace scene_contains_source
As the recursion checking code is somewhat broken in libOBS, we need something to prevent accidental recursion from occurring. While the alternative fix is to simply make all of libOBS support recursion, unfortunately that endeavor would be too large for a single person to take on.
2023-04-05 18:58:21 +02:00
Michael Fabian 'Xaymar' Dirks
e3c7b13d6f obs/source-factory: Add support for OBS Studio 27.x
Also improves the functionality logic slightly to be more in line with real behavior.
2023-04-05 18:58:21 +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
6dd661a41c obs/source-tracker: Fix missing sources and modernize singleton design
In some rare cases, a bug is observed where some sources end up missing despite being visible in the OBS Studio UI. This is most likely related to us actually missing the events due to plugin load order. We can fix this by explicitly enumerating sources in the constructor.

Additionally in order to reduce the human error factor, we should avoid explicit initialize() and finalize() calls for our singleton. Instead the get() function should do all of the heavy lifting, including thread safety, so that the human writing the code will have next to no chances to break it.
2023-04-05 18:58:20 +02:00
Michael Fabian 'Xaymar' Dirks
0627628884 obs/tools: Remove work-around for obs_properties_remove_by_name
The bug fix to this was applied upstream, so we no longer need to support the broken behavior
2023-04-05 18:58:20 +02:00
Michael Fabian 'Xaymar' Dirks
98e2447ec8 common: Add macro to force inlining 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
Chris Pence
f93d5c2202 encoder/ffmpeg: Remove legacy API usage (#783)
The build breaks if compiling against a newer version of ffmpeg which does not define the FF_API_NEXT macro and has fully removed the av_codec_next() API.
2023-04-05 18:58:18 +02:00
Michael Fabian 'Xaymar' Dirks
03b16786e7 encoders/ffmpeg/nvenc: Improve compatibility with FFmpeg
Replaces some very specific code with generic support for FFmpeg, which should last us much longer than the old way. Also improves the migration of settings, which wasn't quite working with the previous way.
2023-04-05 18:58:17 +02:00
Michael Fabian 'Xaymar' Dirks
378f2b3f0e ffmpeg/tools: Improve helper functions for AVOption lists 2023-04-05 18:58:17 +02:00
Michael Fabian 'Xaymar' Dirks
36aec3be54 encoders/ffmpeg/nvenc: Ensure compatibility with more than just FFmpeg 4.2
When FFmpeg Encoders was originally written, FFmpeg 4.2 was still new and OBS Studio did not seem to want to update to anything newer for a while. This led to code being fine-tuned for FFmpeg 4.2, which stops working the moment OBS Studio upgrades FFmpeg. This removes the dependency on FFmpeg 4.2 hopefully, and allows using newer FFmpeg versions - or perhaps even older versions.

Additionally the nonsensical behavior of the Target Quality slider was fixed. It is now from 0 to 51, instead of from 0 to 100, and as such matches FFmpeg exactly.
2023-04-05 18:58:17 +02:00
Michael Fabian 'Xaymar' Dirks
7f6047f43f ffmpeg/tools: Helpers for easily populating OBS property lists 2023-04-05 18:58:17 +02:00
Michael Fabian 'Xaymar' Dirks
a32c2b1104 ui/about: Remove additional spacers
These just break the flow, with no visual improvement.
2023-04-05 18:51:55 +02:00
Michael Fabian 'Xaymar' Dirks
b5cb3440f2 filters/autoframing: Always set projection matrix
Fixes #739
2023-04-05 18:51:55 +02:00
Michael Fabian 'Xaymar' Dirks
decca6e906 ui/about: Use auto-generated credits for "About StreamFX"
As contributors and translators always increase in number and never decrease, it was getting difficult to thank everyone properly with every update. So instead of manually writing each entry we should take advantage of the power of automation and use APIs to gather this information properly. As long as the user is not actively hiding their profile, they will be thanked properly.

This also includes a potential fix for the problem with multi-lingual text in the About StreamFX window.
2023-04-05 18:51:54 +02:00
Michael Fabian 'Xaymar' Dirks
d15e8d58da encoders/ffmpeg/nvenc: Fix new Reference Frames setting 2023-04-05 18:51:54 +02:00
Michael Fabian 'Xaymar' Dirks
2505b193c8 encoders/ffmpeg/nvenc: Allow OBS to detect or override bitrate
We won't allow OBS to override everything, just the bare minimum necessary for Replay Buffer, Dynamic Bitrate and generic Streaming.
2023-04-05 18:51:54 +02:00
Michael Fabian 'Xaymar' Dirks
567620a6ad encoders/ffmpeg/nvenc: Support reconfiguration during encoding 2023-04-05 18:51:53 +02:00
Michael Fabian 'Xaymar' Dirks
19689d1a11 encoders/ffmpeg: Add support for re-configuration of encoders 2023-04-05 18:51:53 +02:00
Michael Fabian 'Xaymar' Dirks
977716d679 encoders/ffmpeg/nvenc: Always set rc_max_rate if needed 2023-04-05 18:51:53 +02:00
Michael Fabian 'Xaymar' Dirks
6cf663ffff encoders/aom-av1: Set proper packet priority and drop priority 2023-04-05 18:51:53 +02:00
Michael Fabian 'Xaymar' Dirks
ac466a65f8 encoders/ffmpeg: Set proper packet priority and drop priority
With increasing complexity in video encoders, we end up with complex priority and drop priority structures. While the fields are currently ignored by the default libOBSs output plugins, in the future this might no longer be the case. In any case, the increase in complexity requires us to adjust to it.
2023-04-05 18:51:53 +02:00
Michael Fabian 'Xaymar' Dirks
b151a44790 encoders/ffmpeg: Support proper settings migration 2023-04-05 18:51:53 +02:00
Michael Fabian 'Xaymar' Dirks
132c58632e obs/encoder-factory: Support proper settings migration 2023-04-05 18:51:52 +02:00
Michael Fabian 'Xaymar' Dirks
bc5de8061f encoders/codecs/h264: Basic support for parsing NALs 2023-04-05 18:51:51 +02:00
Michael Fabian 'Xaymar' Dirks
afa47646f5 encoders/ffmpeg/nvenc: Don't migrate already correct settings 2023-04-05 18:51:51 +02:00
Michael Fabian 'Xaymar' Dirks
cce33eef80 gfx/shader/texture: Fix incorrect placement of modified_type
The previous placement would result in the properties not yet existing.
2023-04-05 18:51:49 +02:00
Michael Fabian 'Xaymar' Dirks
ba05258547 gfx/shader/texture: Improve load/acquire behavior
Prevents massive stalls from happening unexpectedly due to repeatedly loading the same thing over and over.
2023-04-05 18:51:49 +02:00
Michael Fabian 'Xaymar' Dirks
7994d03166 gfx/shader/texture: Add default file annotation 2023-04-05 18:51:49 +02:00
Michael Fabian 'Xaymar' Dirks
c3b1dc2ec2 gfx/shader: Call defaults before update before properties
Fixes an unusual order of initialization bug resulting in poor user experience
2023-04-05 18:51:48 +02:00
Michael Fabian 'Xaymar' Dirks
86cb224783 gfx/shader: Clear render target before rendering
Accidentally left as a comment, this causes things like SMAA to freak out.
2023-04-05 18:51:48 +02:00
Michael Fabian 'Xaymar' Dirks
89f1affe32 gfx/shader: Shaders don't render in sRGB mode 2023-04-05 18:51:47 +02:00
Michael Fabian 'Xaymar' Dirks
ab84537a6e gfx/shader/param-texture: Fix detection of enumerations and paths 2023-04-05 18:51:46 +02:00
Michael Fabian 'Xaymar' Dirks
4b86d67517 obs/gs/effect: Only add defines to the top level shader
Fixes certain warnings that are caused by duplicate '#define' lines.
2023-04-05 18:51:46 +02:00
Michael Fabian 'Xaymar' Dirks
2962be9d52 obs/gs/effect: gs_get_device_type() requires graphics context 2023-04-05 18:51:45 +02:00