Skip to content

OBS merge 32.1.1#2

Open
aleksandr-voitenko wants to merge 54 commits into
masterfrom
obs_merge_32.1.1
Open

OBS merge 32.1.1#2
aleksandr-voitenko wants to merge 54 commits into
masterfrom
obs_merge_32.1.1

Conversation

@aleksandr-voitenko

@aleksandr-voitenko aleksandr-voitenko commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

OBS websocket 5.7.3

tt2468 and others added 30 commits February 14, 2025 18:32
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.
tt2468 and others added 24 commits February 27, 2026 12:54
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]
@aleksandr-voitenko aleksandr-voitenko changed the title OBS websocket 5.7.3 for OBS merge 32.1.1 OBS merge 32.1.1 Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants