Skip to content

StreamFX 0.12.0 Beta 278

Pre-release
Pre-release
Compare
Choose a tag to compare
@Xaymar Xaymar released this 14 May 18:43
· 88 commits to root since this release

⚠️Pre-Releases are not meant for Production usage!⚠️

These releases are offered to Supporters with (early-)access to releases, and are not meant for Production usage. They are offered with no warranty or guarantees and the StreamFX project and its maintainers explicitly reject any responsibilities for damages or unexpected changes resulting from the use of these releases. Additionally, the project and its maintainers are not interested in any bugs, crashes or freezes found by using these releases, as we have enough automated tests to cover most functionality. Please use the Stable production-ready release if you do not wish to encounter unusual problems.

Support the development of StreamFX!

Patreon Maintaining a project like StreamFX requires time and money, of which both are in short supply. If you use any feature of StreamFX, please consider supporting StreamFX via Patreon. Even as little as 1€ per month matters a lot, plus you get a number of benefits!

System Requirements

Please read the Installation Guide and System Requirements!
The installation of StreamFX requires that you follow certain instructions, as well as fulfill a minimum hardware and software requirement. Please ensure that you have read and verified both before asking for help, as many issues can be fixed by reading both of them in their entirety.

Windows
Windows
Linux
Linux
MacOS
MacOS
OS Windows 10 (21H2 or newer), Windows 11 Ubuntu 20.04 (or equivalent)
Ubuntu 22.04 (or equivalent)
MacOS 10.15 (or newer)
CPU Any x86-64-v3 compatible: AMD Excavator Series, Intel Haswell Series or better
Required Instruction Sets: x86-64-v2, AVX, BMI1, BMI2, F16C, FMA, MOVBE
Any ARM64-v8.5-A compatible: Apple M1 Series or better
Memory (RAM) 16 GiB (total) or more
Video (GPU) DirectX 11 / OpenGL 3 capable, Shader Model 4, 4 GiB VRAM (total) or more
Disk Space 4 GiB (free)
OBS Studio Version 29.1.1
Other Microsoft Visual C/C++ Redistributable 2017-2022 Qt for obs-studio
FFmpeg for obs-studio
System Libraries must match chosen Ubuntu version!
A working GPU

What's Changed

New Release process: Alpha -> Beta -> Candidate -> Release!

The old two stage system didn't work out quite as I'd have hoped: It didn't communicate the dangers of Testing well, and did not differentiate between different stability levels. To solve this I've adopted a new release process now available in StreamFX, which follows the usual development cycle of Software itself: Alpha -> Beta -> Candidate -> Release. The further right you go in that graph, the more stable software is supposed to be, at the cost of new features and changes. The further left you go, the more up-to-date things will be, but you sacrifice stability and safety.

Unstable and Experimental features are no longer shipped with all Releases

As Experimental and Unstable features are causing the vast majority of stability issues, we've decided to split the releases by their actual stability. Stable releases will no longer contain Experimental or Unstable features, and Candidate releases will no longer contain Experimental features. This should hopefully speed up the process to a stable release significantly, as we no longer have to worry about the problematic features dragging us down.

🔧 Fixes

Shader Texture Inputs no longer corrupt Scene Collections

For quite some time, Shader Texture Inputs were haunted by ghosts from the past, also known as work-arounds and deprecated code. This resulted in Shader Texture Inputs keeping stale references around and requiring an OBS Studio restart to actually update. Several code modernization cycles later, this is now fixed and Shader Texture Inputs immediately update as expected - while also no longer keeping stale references around, so your Scene Collections are safe again.

Dynamic Mask no longer self-references and double-frees its Input mask

This should have gone up in flames way sooner than it did, and yet it was almost completely invisible until OBS Studio 27.1. The bug dates as far back as v0.7 and is pretty severe: The Dynamic Mask filter would increment their own reference count every frame if no Input was selected, and would double-free the Input without clearing the pointer to it. And somehow, this didn't explode until now.

Switching Scene Collections is safe again

As StreamFX was built on a lot of legacy code that gradually gets replaced with modern code, one modernization introduced a bug that was invisible during testing. StreamFX does not rely on OBS Studio to tell it what Sources and Scenes exist at any moment in time, but instead uses its own hash map to figure out what Sources and Scenes exist. This code was modernized, and incorrectly introduced an additional reference to each Source and Scene - making it impossible to delete anything, and leaking Scene Collections into other scene collections. The bug has been fixed, and should no longer occur.

Ubuntu binaries now link against the proper libraries

An oversight in the scripts that generate the binaries resulted in them incorrectly treating C++ code as C. While this didn't seem to cause any obvious problems, it still affected what is actually linked into the binaries, and may have caused completely compatible systems to be treated as incompatible. This has now been fixed, so Ubuntu users should have a better experience.

➕ Additions & improvements

Loadable Bundles on MacOS

With OBS Studio 28.0 came the introduction of Loadable Bundles, a variation of MacOS's Bundle format. This format offers a lot of advantages for almost no drawbacks, and StreamFX from now on uses this packaging format on MacOS. As a bonus, FFmpeg Encoders should now be available on MacOS too.

⚠ This change requires that you cleanly remove old versions of StreamFX first!

As the packaging and installation method has changed, please follow the Uninstallation guide to clean up any left over old files. Failure to do so will result in undefined behavior and may render OBS Studio entirely unusable. You have been warned!

Improved System-wide installation on Windows

Investigation into how OBS Studio actually loads plugins revealed a change that had gone under the radar entirely. Since OBS Studio v0.15.0 it is possible to load plugins from %ProgramData%\obs-studio\plugins, which is a much safer option and now the only supported System-wide installation mode for StreamFX. This functionality has been so hidden that even the official obs-plugintemplate doesn't make use of it. An added bonus is that this should support Steam users of OBS Studio.

⚠ This change requires that you cleanly remove old versions of StreamFX first!

As the packaging and installation method has changed, please follow the Uninstallation guide to clean up any left over old files. Failure to do so will result in undefined behavior and may render OBS Studio entirely unusable. You have been warned!

User-only installation on Windows

StreamFX can now be installed for individual users, instead of installing for everyone on the system! This is possible thanks to a PR by @abcdw, which allows us to set two environment variable to install and load plugins from %LocalAppData%\Programs\obs-studio\plugins in addition to all the other locations. These installations will conflict with a System-wide install and as such can't coexist, but may still work with the Steam release of OBS Studio.

⚠ This change requires that you cleanly remove old versions of StreamFX first!

As the packaging and installation method has changed, please follow the Uninstallation guide to clean up any left over old files. Failure to do so will result in undefined behavior and may render OBS Studio entirely unusable. You have been warned!

Avid DNxHR Encoder (via FFmpeg) by @IceStormNG

A new contender for the visually lossless intermediate codec arrives: Avid DNxHR! Thanks to work done by @IceStormNG, it is now possible to use this encoder without configuration trickery and directly configure it with a proper user interface. As this encoder is based on the real codec specification, it may perform better than the Apple ProRes encoder while being way more compatible with video editing software.

Split Framerate support for FFmpeg Encoders

All FFmpeg Encoders now support encoding a different framerate than OBS Studio itself is running at. This allows for streaming at 30 FPS while recording at 60 FPS, or even recording at 120 FPS, or other strange things. Note that this is quite literally breaking several specifications, so use at your own risk - if things break, be happy that at least they broke with a noticable impact!

Universal Binaries for x86 & ARM64 support on MacOS

Users on ARM64 devices can now enjoy native ARM64 binaries for less CPU usage, and as such more overall performance on CPU focused tasks. While StreamFX is mostly GPU workloads, some of the internal code does actually do very heavy lifting that benefits from this.

Initial sRGB and HDR support for Sources/Filters/Transitions

With HDR support in OBS Studio finally being available, it was necessary to finally tackle the issue of sRGB and HDR support once and for all. Many Sources/Filters/Transitions will get proper sRGB and HDR support over future releases to catch up with OBS Studio. You can check the Version Information on the wiki to see if a certain feature supports sRGB or HDR yet.

➖ Deprecations & Removals

Deprecation of the AMD AMF (via FFmpeg) encoders

With OBS Studio 28.0 the old obs-amd-encoder project is finally laid to rest and a new AMD AMF integration is provided. This AMD AMF integration is technically and functionally superior to both the old obs-amd-encoder and FFmpegs AMD AMF integration. All users are urged to migrate as soon as possible, as no guarantees are made for how long this deprecated encoder will remain. Additionally, users on Linux should put their focus on the open Pull Requests for Linux support (1, 2).

Deprecation of the AV1 (via AOM) Encoder

With OBS Studio 27.2.4, the SVT-AV1 and AOM-AV1 encoders were integrated into OBS Studio directly. This integration is functionally identical, and as such replaces the StreamFX provided AOM-AV1 encoder. All users are urged to migrate as soon as possible, as no guaratees are made for how long this deprecated encoder will remain.

Detailed Changelog

0.12.0b278
  • Fix encoder::ffmpeg attempting to create itself again by @Xaymar in #1048
0.12.0b277
0.12.0b275
0.12.0b252
  • ci: Don't use caches from a different compiler by @Xaymar in #1043
  • Fix strange issue with github.workspace by @Xaymar in #1044
0.12.0b249
  • project: Adjust issue templates by @Xaymar in #1039
  • Update to support OBS Studio 29.1.x and 29.0.x fully by @Xaymar in #1042
0.12.0b202
  • util/library: Allow loading of obs_module_t by @Xaymar in #1033
  • Add support for OBS Browser Source Qt Widgets by @Xaymar in #1034
  • code: Disable profiling on MacOS by @Xaymar in #1038
0.12.0b191
  • code: Initialize worker count to 0 by @Xaymar in #1021
  • project: Adjust clang-tidy configuration by @Xaymar in #1024
  • obs/source-tracker: Fix occasional leaked source reference by @Xaymar in #1026
  • ci: Remove build variants that will never be used by @Xaymar in #1028
  • Speed up builds on CI by @Xaymar in #1029
  • Clean up unused and duplicate files by @Xaymar in #1030
  • project: Update README to match latest info by @Xaymar in #1031
  • Fix license and copyright headers by @Xaymar in #1027
0.12.0a173
0.12.0a170
  • Update Third-Party dependencies by @Xaymar in #1013
  • cmake: Require generation of PATCH and TWEAK variables by @Xaymar in #1016
  • updater: Compare all parts of the version number by @Xaymar in #1018
0.12.0b164
0.12.0a151
  • Implement dynamically scaled Thread Pool by @Xaymar in #933
  • Save configuration after ~100ms have passed by @Xaymar in #934
  • templates/windows/installer: Don't create Icons in Portable mode by @Xaymar in #936
  • templates/windows/installer: Implement /Portable installer flag for CLI users by @Xaymar in #935
  • cmake, templates: Remove code signing integration by @Xaymar in #938
  • Don't show path selection for System & User mode by @Xaymar in #937
  • Fix some Use-After-Free issues with the D3D11 integration with FFmpeg by @Xaymar in #953
  • encoder/ffmpeg: Remove usage of avcodec_close by @Xaymar in #952
  • New Crowdin updates by @Xaymar in #932
  • Implement support for Color Spaces by @Xaymar in #968
  • Dynamic Mask: Implement sRGB and HDR support, and fix #819 by @Xaymar in #967
0.12.0a134
  • cmake: Require nlohmann-json when building the front-end by @rmnvgr in #914
  • encoder/ffmpeg: Assume extra data and sei are present on first frame by @Xaymar in #919
  • encoder/ffmpeg: Add split framerate with integer fractions by @Xaymar in #921
  • encoder/ffmpeg: Improve software scaling quality by @Xaymar in #925
  • Add support for HDR formats by @Xaymar in #922
  • encoder/handler/prores_aw: Don't enable Key-Frame options by @Xaymar in #926
  • encoder/handler/dnxhd: Use endian-independent formats by @Xaymar in #927
  • New Crowdin updates by @Xaymar in #915
  • Improve Windows installer with proper System install location, Current User install method, and better UI by @Xaymar in #930
  • New Crowdin updates by @Xaymar in #928
0.12.0a117
0.12.0a106
0.12.0a77
0.12.0a45
  • Improve CMake build script(s) by @Xaymar in #813
  • ci: Add GCC back to the build by @Xaymar in #820
  • Add ClangCL, and update Windows SDK requirements by @Xaymar in #821
  • ci: Allow failures for experimental CI tests by @Xaymar in #824
  • ci: Use specific LLVM/Clang versions by @Xaymar in #825
  • project: Add support for multi stage release cycles by @Xaymar in #823
0.12.0a1