15037 Commits
Author SHA1 Message Date
Ryan Foster 7778070cbd libobs: Update version to 31.1.2 31.1.2 2025-07-25 16:55:48 -04:00
Ryan Foster e757039106 CI: Update obs-crowdin-sync action 2025-07-25 16:14:00 -04:00
MarcoandRyan Foster 46ce91e582 libobs: Start video output even if there is no mix
This fixes a change in PR 11605 that breaks Decklink video outputs.
get_mix_for_video() returns NULL for those outputs, causing
start_raw_video() to return before connecting the output.
2025-07-25 15:49:19 -04:00
tytan652andRyan Foster 24597a7b8e Revert "linux-pipewire: Fix 10- and 16-bit captures"
This reverts commit 4dfd0b31e4.

Also adds a FIXME comment.
2025-07-25 15:30:52 -04:00
PatTheMavandRyan Foster c54d4c51bd CI: Fix failures of analyze workflow runs due to GitHub policy change
GitHub introduced a policy change on 2024-05-06 which deprecated
support for SARIF files that contain multiple runs for the same tool.
2025-07-25 14:26:46 -04:00
Ivan MolodetskikhandRyan Foster fb09098fd7 linux-pipewire: Ensure the release point is always signaled
Since video rendering happens on a separate thread from PipeWire buffer
ingestion, it may happen that two buffers are ingested in quick
succession without the rendering thread ever getting to them. Since,
prior to this commit, the release sync point is only "primed" (set to
signal in the future) only on the video rendering thread, this results
in the buffer being returned to PipeWire's pool without anything ever
signaling the release point, effectively blocking it from ever getting
reused in the future. This quickly clogs up the buffer pool and leaves
only one buffer to circulate between the screencast source and OBS.

This commit adds a flag tracking whether the release point had been
primed. If, when ingesting a new PW buffer, the old buffer's release
point hadn't been primed, that means the video rendering thread never
got to that buffer, so the release point is immediately signaled,
marking the buffer reusable by the screencast source.
2025-07-25 13:55:31 -04:00
Ivan MolodetskikhandRyan Foster a7de3f4bde linux-pipewire: Dup syncobj fds
PipeWire format renegotiation runs in parallel with video rendering.

When the stream format is renegotiated, PipeWire removes the existing
buffers and closes the syncobj file descriptors. At the same time, the
video rendering thread may try to import the (already closed) syncobj
acquire fd, and hang on waiting for the fence to become available.

This is not a problem for the dmabuf fd because it's imported into a
texture right away, which doesn't disappear when PipeWire closes the fd.

This commit adds duping to the syncobj fds so that they too remain open
as long as the rendering thread may access them.
2025-07-25 13:55:31 -04:00
Ivan MolodetskikhandRyan Foster 7092bc17db linux-pipewire: Require Gio 2.76
Subsequent commits use g_clear_fd() added in GLib 2.76.
2025-07-25 13:55:31 -04:00
Yuri VictorovichandRyan Foster 18ee961210 libobs-opengl: Make some includes unconditional
Move 3 headers out from the Linux-specific section.
Without these headers functions like open, close, drmXx aren't found.

* open requires <fcntl.h>
* close requres <unistd.h>
* drmXx requires <xf86drm.h>
2025-07-21 17:06:14 -04:00
Warchamp7andRyan Foster 6a7de7ed4f frontend: Fix settings scrollbar size 2025-07-21 14:57:23 -04:00
Warchamp7andRyan Foster 3cdc013a56 frontend: Fix progress bar appearance 2025-07-18 16:56:40 -04:00
JiangXsongandRyan Foster bd6c4713bb linux-v4l2: Avoid stopping capture on AVERROR(EAGAIN)
v4l2-decoder: continue sending frame to codec
if avcodec_receive_frame() returns AVERROR(EAGAIN)
2025-07-18 16:08:24 -04:00
Dennis SädtlerandRyan Foster a45bbe134f frontend: Do not set maximum_video_tracks if user has set it to "Auto" 2025-07-18 13:07:37 -04:00
Ryan Foster 63206664e0 CI: Update sphinx-publish-action commit
The generate-docs action started failing, presumably because it is using
Debian Buster. Update the pinned commit for the third-party
totaldebug/sphinx-publish-action to hopefully fix this.
2025-07-16 13:41:52 -04:00
Damian Marcin SzymańskiandRyan Foster 9331fb7dac frontend: Fix build failure with Clang 20+ in OBSCanvas
Canvas is a move-only type without a copy constructor. Since C++17
requires types stored in std::optional to be copy-constructible unless
explicitly allowed, Clang 20+ emits an error when attempting to
instantiate std::optional<Canvas>.

While GCC allows this as an extension, Clang enforces the standard
more strictly.

This PR replaces std::optional<Canvas> with std::unique_ptr<Canvas> to
resolve the build error with Clang 20+ while keeping functional
behavior identical.

Tested with GCC 15.1.0 and Clang 20.1.7.

Co-Authored-By: Ryan Foster <ryan@obsproject.com>
2025-07-15 14:29:05 -04:00
tytan652andRyan Foster 523ddeec9c build-aux: Use rebuilt CEF on Linux with backported API on Flatpak 2025-07-12 14:16:49 -04:00
Ryan Foster 7e894a56f4 CI: Add checkout to fix gh CLI usage
The gh CLI utility will fail without a git checkout.
2025-07-12 13:46:14 -04:00
Ryan Foster a32b3f9f6d libobs: Update version to 31.1.1 31.1.1 2025-07-11 21:35:41 -04:00
Ryan Foster e8a77fd0f2 build-aux: Revert libsrt to v1.5.3
With libsrt v1.5.4, we saw issues when using multiple Media Sources
ingesting SRT. If one would shut down or fail, then all SRT Media
Sources would stop working. While there has been no confirmation that
this also occurs on Linux, out of an abundance of caution, revert libsrt
to v1.5.3, which was used for OBS Studio 30.1, 30.2, and 31.0.
2025-07-11 20:35:49 -04:00
Ryan Foster ac019ba810 build-aux: Update Flatpak module for mbedTLS to v3.6.4
MbedTLS v3.6.2 has an issue with fragmented TLS 1.3 handshakes, causing
some RTMPS streams to fail to connect. Update to mbedTLS v3.6.4 where
this is fixed.
2025-07-11 20:35:49 -04:00
Ryan Foster d35b586d52 CI: Update deps to 2025-07-11 release
Fixes RTMPS streaming not working in some cases.

Fixes SRT ingest failing in some cases.

Notable changes:
 * deps.ffmpeg: Update mbedTLS to 3.6.4
 * deps.ffmpeg: Revert libsrt to v1.5.2 with patches
2025-07-11 19:10:34 -04:00
Ryan Foster ec5c2f3f34 obs-browser: Update version to 2.25.3
82092ce - Require extra info for Linux hardware accel
bdabf83 - Update version to 2.25.3
2025-07-11 18:35:49 -04:00
Ryan Foster 1cf48d2e5c CI: Use rebuilt CEF on Linux with backported API
CEF 127 lacks CEF_OSR_EXTRA_INFO, which can cause resizing a
hardware-acclerated browser source to crash its GPU renderer process.
Use a rebuilt CEF 127 with CEF_OSR_EXTRA_INFO backported from CEF 133+.
2025-07-11 18:35:49 -04:00
Warchamp7andRyan Foster d268a19b4a frontend: Avoid recreating YouTube dock 2025-07-11 17:28:59 -04:00
Ryan Foster 883e9283bf CI: Add GH_TOKEN to fix usage of GitHub CLI 2025-07-07 19:40:19 -04:00
Warchamp7andRyan Foster 9858e7e722 frontend: Enforce minimum height for QList items 31.1.0 2025-07-07 14:35:42 -04:00
Ryan Foster c88a364d90 CI: Prevent hotfixes from overwriting Flathub beta
When 31.0.4 was published, it published to the Flathub beta channel,
which overwrote the running 31.1.0 beta/rc. This was due to an
assumption that we would not publish an out-of-band hotfix release once
we had moved to a new beta release cycle. To prevent this in the future,
we can check the last two releases to see if they are different tag
series and if one is a prerelease.
2025-07-07 14:16:19 -04:00
Ryan Foster dc49a03697 Revert "CI: Prevent hotfixes from overwriting Flathub beta"
This reverts commit 8501c45390.
2025-07-07 14:16:19 -04:00
Ryan Foster e14ffeaacd Revert "fixup! CI: Prevent hotfixes from overwriting Flathub beta"
This reverts commit 9d3f14683a.
2025-07-07 14:16:19 -04:00
Ryan Foster 9d3f14683a fixup! CI: Prevent hotfixes from overwriting Flathub beta 2025-07-07 13:50:48 -04:00
Ryan Foster 8501c45390 CI: Prevent hotfixes from overwriting Flathub beta
When 31.0.4 was published, it published to the Flathub beta channel,
which overwrote the running 31.1.0 beta/rc. This was due to an
assumption that we would not publish an out-of-band hotfix release once
we had moved to a new beta release cycle. To prevent this in the future,
we can check the last two releases to see if they are different tag
series and if one is a prerelease.
2025-07-07 13:50:48 -04:00
Ryan Foster d91ccdefd2 obs-websocket: Update version to 5.6.2
Changes:
- Update translations
2025-07-04 13:52:56 -04:00
Ryan Foster 5f64568312 obs-browser: Update version to 2.25.2
033a23b - Update version to 2.25.2
2025-07-04 13:52:56 -04:00
Gol-D-AceandRyan Foster 9a4632ecb4 win-capture: Add Wuthering Waves to compatibility list 2025-07-02 13:30:49 -04:00
Gol-D-AceandRyan Foster d92cb156fc win-capture: Add Roblox to compatibility list 2025-07-01 15:04:20 -04:00
Matt GajownikandRyan Foster 70c85f9875 Update translations from Crowdin 2025-07-01 13:34:08 -04:00
Ryan Foster c605aa6d84 CI: Update minimum macOS version to 12 for building 2025-06-30 14:50:14 -04:00
Ryan Foster 86036c6dd9 CI: Update macOS deployment target to macOS 12
Qt 6.8.3 only supports macOS 12+. It does not support macOS 11, and OBS
Studio will fail to launch on macOS 11 as a result. We should reflect
that with our deployment target.

https://doc.qt.io/qt-6.8/supported-platforms.html
2025-06-30 14:50:14 -04:00
jcmandRyan Foster 6134923fe7 mac-virtualcam: Resolve deprecation warnings to reflect 12.0 target 2025-06-30 14:50:14 -04:00
jcmandRyan Foster 9dc9d67fd0 mac-avcapture: Resolve deprecation warnings to reflect 12.0 target 2025-06-30 14:50:14 -04:00
Sebastian BeckmannandRyan Foster d3c5d2ce0b frontend: Set Frontend-API QActions role to NoRole
When no role is set, the default is QAction::TextHeuristicRole. This
means that the text of the item gets fuzzy-matched in Qt against a set
of possible strings that could indicate that the menu should be in the
application menu on macOS.
For us this meant however that on some languages, the translation of
"WebSocket Server Settings" would begin with "Config", and as such the
related QAction replaces our "Settings" action for the PreferencesRole,
and clicking "Preferences..." in the application menu would open the
websocket settings. It should probably be considered a bug in Qt that
implicit matches via TextHeuristicRole can overwrite ones that are
explicitly set (like our PreferencesRole). However we explicitly set our
roles ourselves anyways and there is no scenario where a  plugin should
overwrite them, we can just default actions added via the Frontend API
to be NoRole; and worry about the Qt bug later.
31.1.0-rc1
2025-06-16 15:20:41 -04:00
PatTheMavandRyan Foster 059fd6210c frontend: Fix visibility issues of meta type stream operators
For custom types to become usable as QVariants they not only need to
be declared as meta types, but also need to have appropriate stream
operators declared.

These declarations (both of the meta type itself, which provides a
static meta type ID getter via the macro, as well as the operators)
need to be visible to the compiler in any compilation unit where they
might be used in their QVariant form, otherwise the templates will
be incomplete.

A blanket include of "qt-wrappers.hpp" in "OBSBasic.hpp" is not the
most subtle fix, but it's necessary to ensure that the meta types
are always "complete". Putting both declarations in the qt-wrappers
header (instead of splitting them up) ensures that (as the classes
themselves are declared in "obs.hpp", which is included by
"qt-wrappers.hpp", and thus qt-wrappers can provide a complete class.
2025-06-16 14:44:27 -04:00
shiina424andRyan Foster bd68d33b0d frontend: Fix preview zoom buttons translation string 2025-06-16 13:31:20 -04:00
Ryan Foster 5e7804c137 obs-websocket: Update version to 5.6.1
Changes:
- Update translations

Other Notes:
This diff effectively reverts an accidental submodule commit rollback
that occurred in ffef7504ac.
As a result, the submodule diff is larger than intended. However, the
only net changes between 31.1.0-beta2 and this commit are the updated
translations.
2025-06-13 18:23:21 -04:00
Ryan Foster b9bbde2e42 obs-browser: Update to 2.25.1
788cc61 - Update translations from Crowdin
6987eab - Allow vertical scrolling of error pages
9ffe382 - Update version to 2.25.1
2025-06-13 18:23:21 -04:00
shiina424andRyan Foster 2b38b92652 frontend: Fix group icon position in System theme 2025-06-13 17:54:04 -04:00
Ryan Foster f42412938d CI: Use rebuilt CEF to avoid memory allocation crashes on macOS
Use a rebuilt CEF of the same version (6533) that additionally disables
use_allocator_shim to avoid memory-related crashes on macOS 13 and
older.
2025-06-13 14:44:57 -04:00
Ryan Foster e7480af67d CI: Update sign-windows commit 2025-06-11 15:01:45 -04:00
Matt GajownikandRyan Foster ffef7504ac Update translations from Crowdin 2025-06-09 14:55:50 -04:00
Ryan Foster 68c01125d2 CI: Update steam-upload runner to macos-15 31.1.0-beta2 2025-06-06 17:45:48 -04:00