Repository navigation
Conversation
Move plugins/obs-browser to the test from obs-rust/obs-browser: a browser source plays a local WebAudio tone with "Control audio via OBS", the run's Chromium audio service process is SIGKILLed, and audio packets must flow again in the fifth second after the kill. Scenarios: one kill, three kills on a page that replaces and freezes globals, a context the page suspended itself, and two sources. On master all four fail with 0 packets after the kill. Refs obs-rust#2328
Move plugins/obs-browser to the obs-rust/obs-browser fix: every frame gets a script, before the page's own, that resumes an AudioContext suspended by an audio service error unless the page suspended it itself. Pages still see the native AudioContext; OfflineAudioContext is untouched; pages that replace or freeze globals do not break it. tests/audio_recovery.py in obs-browser: 4 of 4 scenarios pass (one kill, three kills on a hostile page, a page-suspended context that stays suspended, two sources); audio is back 3.1 to 3.2 s after each kill, against 0 packets on master. Fixes obs-rust#2328
This was referenced Oct 25, 2026
chriscoveries
pushed a commit
to chriscoveries/obsrust-fork
that referenced
this pull request
Oct 25, 2026
…s) (obs-rust#2378) Moves plugins/obs-browser from 7bab463c9 to 4583599fe, with: - obs-rust/obs-browser#3: the CEF sandbox where it can work on Linux (obs-rust#1092) - obs-rust/obs-browser#5: os_event_init results checked in module load and ExecuteOnBrowser - obs-rust/obs-browser#6: WebAudio resumes after the audio service dies (obs-rust#2328) - obs-rust/obs-browser#7: browser audio that arrives too late to mix is dropped (obs-rust#2335) - obs-rust/obs-browser#8: the fallback warning when the sandbox can't work (obs-rust#2218) One bump instead of three (obs-rust#2333, obs-rust#2351 and ours), as agreed on obs-rust#2351. docs/features.md gets the two audio lines from obs-rust#2333 and obs-rust#2351 as they are, a line for the sandbox, and the browser on the fallback warning line, which obs-rust#2238 merged on 2026-10-25. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #2328
Draft until obs-rust/obs-browser#6 merges. This PR moves
plugins/obs-browserto that PR's head (654d2b9); once it merges, the pointer is updated to the merged commit if it differs, then this leaves draft.What and why
Upstream obsproject/obs-studio#10586: with "Control audio via OBS", a browser source that plays through WebAudio (alert boxes) goes silent for good after Chromium's audio service process dies (a crash, a device change, or on Windows the audio hang monitor ending it). The page's
AudioContextfireserrorand is suspended, and nothing resumes it until the page reloads or the setting is toggled.The fix is in obs-rust/obs-browser: every frame gets a script, before the page's own, that resumes such a context unless the page suspended it itself. Pages still see the native
AudioContext;OfflineAudioContextis untouched; pages that replace or freeze globals do not break it. The first resume waits 3 s, because CEF keeps the dead capture stream until the page has been silent for 2 s.This PR moves the submodule pointer forward (descends from master's pointer;
ci/submodule_direction.py origin/masterpasses) and adds thedocs/features.mdline. The pointer also picks up obs-rust/obs-browser#5 (os_event_init checks), already on the fork's master.RED → GREEN
test: WebAudio after the audio service dies(0bcdb29): pointer to the obs-browser test commit.tests/audio_recovery.py(real libobs, real obs-browser module and CEF 8078, local WebAudio tone page,reroute_audio) SIGKILLs only the run's audio service process and requires packets in the 5th second after the kill. On master all 4 scenarios fail with 0 packets:plain,repeated(3 kills, page that replaces and freezes globals),page-suspend,two-sources.obs-browser: Resume WebAudio after audio crash(a098e66): 4 of 4 pass, audio back 3.1 to 3.2 s after each kill, the page-suspended context stays suspended. Runs on Linux, isolated (loopback-only netns, private Xvfb and dbus, fresh HOME, no audio server).-DENABLE_BROWSER=OFF). Command inplugins/obs-browser/tests/README.md.Checklist
masterdocs/features.mdis added (Fixed upstream bugs, Audio). Add the obs-browser PR link asdependency [obs-rust/obs-browser#6]once it exists.--lane lint,--lane crossand--test-diff origin/masterpass on GREEN (test scope: none, pointer and docs only); hybrid tree builds