OBS merge 32.1.1#2
Open
aleksandr-voitenko wants to merge 54 commits into
Open
Conversation
Was looking through the protocol, and I figured this would be helpful.
A copy of the payload was happening, but it's unnecessary here.
I debated adding this to the input kinds array, where this field's value truly comes from, but the value of that return is `Array<String>`, so we don't really have any options without bumping the current RPC version. I am thinking of revisiting some aspects of the obs-websocket request objectives, and bumping the RPC version. I would like to take a more REST-style approach to reading/modification of OBS state.
Closes obsproject#1263 Co-authored-by: heiybb <git@chr.moe>
Context: 1b9b59c981593bb6df018dd16966d5a613d3cc6a
Adds the following requests: - `GetInputDeinterlaceMode` - `SetInputDeinterlaceMode` - `GetInputDeinterlaceFieldOrder` - `SetInputDeinterlaceFieldOrder` Inputs only support deinterlacing if they are async. Closes obsproject#1192
All other path operations in the code base already use u8path to ensure that the strings provided by libobs (which will either be ASCII or UTF-8 byte sequences) are correctly converted into UTF-16 strings.
When OBS Studio is started in Studio Mode, if a scene collection was not successfully found and loaded, the OBS Frontend API would, prior to obsproject/obs-studio@577e350, emit OBS_FRONTEND_EVENT_SCENE_CHANGED and OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED anyway. This would result in currentScene here being a nullptr, causing a crash. For completeness, check for nullptr here so that we cannot crash if obs_frontend_get_current_scene() returns a nullptr.
New Features: - Added `obsStudioVersion` field to Identify message [tt2468] - Added `inputKindCaps` field to input list array [tt2468] - Added `inputKindCaps` to `CreateInput` event [tt2468] - Added input deinterlace mode/field order requests [tt2468] Enhancements: - Added nlohmann type converters for source deinterlacing [tt2468] Bug Fixes: - Avoided unnecessary volumemeters object copy [tt2468] Other Notes: - Updated documentation
Changes: - Updated translations
Changes: - Updated translations
The data that should be migrated used to be in global.ini. Since the frontend migration, it would be copied to both app and user config, we can just use the app config here.
This changes the formatting for the repository to clang-format 19.1.1, same as upstream obs-studio. New changes to .clang-format from obs-studio are brought over (see [1]), but the submodule-specific modifications are left in place (see [2]). [1]: obsproject/obs-studio@b3ab792 [2]: 5fc39ef
Changes: - Updated translations Bug Fixes: - Fixed obs_frontend_get_global_config() deprecation warning
New Features: - Added Canvas support [exeldro] - `GetCanvasList` request - `CanvasCreated` event - `CanvasRemoved` event - `CanvasNameChanged` event Bug Fixes: - Fixed a possible crash on OBS shutdown [exeldro] Changes: - Updated translations [WizardCM]
Commit obsproject/obs-studio@a4f3c16 implemented this upstream, so since obs-websocket follows that util file, we should do the same.
This is a slight behavior change, in that in the event of undefined video info for the main canvas, it will no longer throw an error, and will instead return values as `null`. This, however, brings the behavior in-line with the GetCanvasList, so I see that as preferred.
Uses an object of individual boolean values rather than the raw bitflag that libobs uses internally. This is much easier for users to grasp without needing to look up source code.
Co-authored-by: Warchamp7 <warchamp2003@hotmail.com>
Attempt to resolve sourceUuid first, now that it is the recommended approach to resolving a source. Then, try via canvas. This makes the uuid code path much faster. The stacked logic of being able to pass a name or uuid for both canvases AND sources was just too much, and so if people want to pass a canvas, they'll need to just suck it up and use UUIDs
Just a visual change. These function more as getters than validators.
A previous commit of mine within this PR made GetCanvas() return a reference to the main canvas if `canvasUuid` was not specified. As such, that removed the need to check the requestStatus value, and we can just rely on the canvas ptr being != nullptr. This also fixes a theoretical uninitialized memory access from `statusCode` being unset.
Canvases don't have ordered scenes, so it's better to return null values than to lie to the user.
Existing clients often track scene state based on name, and emitting events for non-main canvases under the existing event names is an API break. The correct solution is to increment the obs-websocket RPC version, in order to require clients to explicitly acknowledge that they have been designed to take into account the context of canvases. In order to preserve consistent behavior, we will instead ignore events from canvases other than the main canvas.
Just a visual change. "Acquire" is used to indicate that these methods return resources with an incremented ref.
Changes: - Various fixes and improvements to Canvas support [tt2468/Warchamp7]
Bug Fixes: - Fixed an issue where inputs could not be updated [exeldro]
Clang 21 enabled built-in support for "__yield" but requires including "arm_acle.h" to work. Qt's "qyieldcpu" header will emit code using the function without including the declaration and thus fail compilation A fix for Qt is pending, but AppleClang 21 is shipped since 2026-03-24 with Xcode 26.4 and thus the project cannot be compiled after a toolchain update otherwise.
Bug Fixes: - Fixed a build issue with Clang 21 [PatTheMav]
summeroff
approved these changes
Jun 11, 2026
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.
OBS websocket 5.7.3