Notable changes:
* Windows: Add Qt 5 and 6 builds
* Windows: Remove nasm native build
* Windows: Update srt from 1.4.2 to 1.4.4
* Windows: Update SWIG from 3.0.12 to 4.1.0-git
* macOS: Update libvpx from 1.10.0 to 1.11.0
* macOS: Update srt from 1.4.1 to 1.4.4
* macOS: Update SWIG from 3.0.12 to 4.1.0-git
* macOS: Update x264 from r3059 to r3060
Due to changes on obs-deps, per-arch Qt builds do not contain universal
binaries anymore. To allow CI to cross-compile on x86_64 runners,
the universal release is used, which will run on both architectures.
CMake config files are required for building OBS plugins with the
Flatpak as a runtime.
Add a post-install command that installs the `obs_libraries`
component, which provides the config files.
Generally moves all the plugin code into xcomposite-input.cpp and
removes all C++ dependencies.
Migrate as much as possible to xcb from Xlib to enable us to handle
errors and attribute them to the correct callers. This caused many other
knock on issues such as wrongly attributed errors and cleanup code
working incorrectly.
That allows us to use the xcursor-xcb implementation and delete the pure
Xlib implementation. We also add the missing functionality from the Xlib
implementation to the xcb implementation.
Capture glXCreatePixmap errors which occur most commonly on
nvidia+gnome due to nvidia's driver being unable to allocate more than 1
pixmap per window and gnome being the only compositor to read window
data via glx pixmaps.
Fix cleanup after failed glXCreatePixmap that might have leaked pixmaps
and prevented later captures on nvidia drivers for the same reason.
The Windows build script would respect the user-specified build
directory for the configure step, but not for the build step. Fix that
by applying the same logic in Configure-OBS to Build-OBS.
Hardcode short hash length to 9 characters in CI and packaging scripts.
It is not guaranteed that short hashes are the same length across
different platforms or different versions of git. This caused problems
with upload/download action names, as the hashes sometimes didn't match.
Fix the download artifact name in the Windows installer job and the
macOS notarization job to prevent them from failing due to a name
mismatch.
Current build scripts rely on comparing a architecture string provided
by the OS which will be localised in certain languages.
This change uses a boolean 64-bit flag to use script-defined identifiers
to avoid this issue.
On master branch, client information for Twitch, YouTube and Restream
integration are set as CMake cache variables. The hashes can contain
otherwise "illegal" characters such as backticks which need to be
enclosed in a string, but also cannot be subject to variable
substition.
Using single quotes should fix this.
Bundles libraries are available via their specific versioned filename
as well as SOVERSION and versionless symlinks. Dylibbundler does _not_
include these symlinks when copying linked libraries into the bundle.
This change ensures that all libraries and their SOVERSION symlinks
exist in the created App Bundle.
Update the libaom and SVT-AV1 versions and also apply several
cherry-picked commits to FFmpeg for SVT-AV1.
The libaom commit is what will be used by obs-deps once
https://github.com/obsproject/obs-deps/pull/90 is merged.
It also apply obs-deps FFmpeg patches.
And cherry-pick the following commit to fix issues with VAAPI:
avcodec/vaapi_encode: Fix segfault upon closing uninitialized encoder
https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/d1b47f3
nv-codec-headers are also updated.
Note: The actual used commit hash is two commits after n4.4.1 tag.
CEF is installed in /app/cef. After OBS is built, it no longer needs
/app/cef because everything that OBS needs is copied elsewhere.
So removing /app/cef at the cleanup stage will not cause issue
and will also reduce bundle size.
We require PipeWire 0.3.40 or later in preparation for proper
DMA-BUF handling, which includes negotiation of modifier lists and
dropping of single modifiers.
This commit should be reverted as soon as the Freedesktop Flatpak SDK
contains this or a newer PipeWire version.
Tested on Ubuntu 18.04 CI and Ubuntu 20.04 desktop, built with sysroot
and is_official_build. Ensures this build of CEF will run on a variety
of system configurations.
This reverts commit 7bf7c01ff1b45e5e6c295982f89cfae896e94d8d.
The f639d8923 CEF wrapper fails to build on Ubuntu 18.04 due to
outdated glibc, and Jim's recent commits seem to solve the shutdown
assert. For now, revert to the known functional build.
Users on Wayland are displeased that they cannot see their hotkey
bindings. This enables key reporting like X11, and has the infrastructure
in place in case Wayland ever decides to allow for capturing input.
Add an extension point for org.freedesktop.LinuxAudio.Plugins,
and create the corresponding folder at post-install time.
Commit originally made by @hfiguiere for Flathub.
This is what the Flathub manifest does, which allows for plugins
distributed through Flatpak extension points.
Add extension point for Flatpak-distributed plugins.
In the future, a full FFMPEG build with x264 and nvenc will be
provided as an extension to the org.freedesktop.Platform runtime,
but for now we have to manually build it.
Update x264 to the latest git commit.
* aja: Initial commit of AJA capture/output plugin
* aja: Fix clang-format on aja-output-ui code
* aja: Remove script used during dev/testing
* aja: Address pull request feedback from @RytoEX
* aja: Remove the SDK sources and update CMakeLists to point to new headers-only/static libs dependency distribution.
* aja: Only build AJA plugin on x64 on macOS for now
* aja: Remove the non-English placeholder locale files. The english strings/files will be produced via crowdin, according to @ddrboxman.
* aja: Add FindLibAJANTV2.cmake script to locate the ajantv2 headers and static libs in the OBS external deps package(s). Tested on Windows x64. macOS and Linux x64 TBD.
* aja: Add ajantv2/includes to FindLibAJANTV2 include search paths
* aja: Remove commented code from aja CMakeLists
* aja: Remove debug code and comments that are no longer needed.
* aja: Fix indentation
* aja: Remove disablement of clang-format in routing table and SDIWireFormat map
* aja: Use spaces for all indentation in widget crosspoint arrays where we disable clang-format
* aja: Address code style comments made by @RytoEX
* aja: Fix uneven indentation
* aja: More fixes to if/else placement and remove superfluous comments.
* aja: Rename 'dwns' to 'deactivateWhileNotShowing' for clarity. The DeckLink plugin still uses the variable name 'dwns' and should be changed, if desired, in a separate PR.
* aja: Remove X11Extras dependency from AJA Output frontend plugin
* aja: Add patch from Jim to find AJA release/debug libs
* aja: Improve AV sync of queued video/audio sent to the AJA card in the AJA Output plugin.
The flatpak-builder tool now supports passing secrets options to the
build system. These options are not printed during the build, nor
added to the resolved manifest after build, so they don't leak env
vars from CI.
Make secret variables part of the Flatpak workflow environment, like
the main workflow. Pass the various services hashes and clientids to
the build system using the new "secret-opts" key.