Skip to content

New Auto Optimizer - #1767

Open
aleksandr-voitenko wants to merge 54 commits into
stagingfrom
auto_config_apiv2
Open

New Auto Optimizer#1767
aleksandr-voitenko wants to merge 54 commits into
stagingfrom
auto_config_apiv2

Conversation

@aleksandr-voitenko

@aleksandr-voitenko aleksandr-voitenko commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Description

Replaces the legacy Auto Config flow with a run-based Auto Optimizer API. OSN measures supported Twitch and YouTube upload paths, benchmarks local encoding workloads, and returns structured recommendations with progress and warnings.

Supports standard streaming, Dual Output, Twitch Enhanced Broadcasting, and supported mixed workloads without changing persistent user settings.

Motivation and Context

Stream settings must account for both upload capacity and the complete encoding workload. Evaluating outputs independently can overload the system when multiple canvases, Enhanced Broadcasting ladders, or companion outputs run concurrently.

OSN owns measurement and workload validation, while Desktop prepares provider resources and applies or ignores the result. This is coordinated with the auxiliary video-mix support from obs-studio #765.

How Has This Been Tested?

  • OSN client/server unit and integration tests
  • Manual Windows testing across standard, Dual Output, Enhanced Broadcasting, and mixed-platform configurations

Types of changes

  • New feature
  • Code cleanup

summeroff and others added 30 commits August 5, 2026 13:10
- osn-streaming: drop extra obs_data_addref on originalServiceSettings;
  obs_service_get_settings already returns an owned ref (was a leak).
- osn-video: restore the connecting-outputs guard with an APIv2 helper
  (iterate IStreaming manager, force-stop connecting outputs) in place of
  the commented-out OBS_service::stopConnectingOutputs() in Set/RemoveVideoContext.
- nodeobs_autoconfig: drive bandwidth connect-wait off obs_output_active()
  instead of drained signals so a target that hasn't signalled yet isn't
  treated as connected (avoids totalBytes == 0).
- nodeobs_autoconfig: wait for outputs to deactivate in applyResults before
  obs_set_video_info (obs_output_stop is async; avoids OBS_VIDEO_CURRENTLY_ACTIVE).
- test_nodeobs_autoconfig: fix stale comment (startAutoconfig takes IStreaming[];
  error string is no_streaming_targets_provided).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Join wrapped ThrowAsJavaScriptException calls (client) and wrap the
InitializeAutoConfig register_function call (server) to satisfy the
clang-format-13 CI check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Preserve unassigned scene-item routing when no canvas is provided, reject invalid canvas references, and expose unassigned canvases as null.
# Conflicts:
#	js/module.d.ts
#	js/module.ts
#	obs-studio-client/source/video.cpp
#	obs-studio-server/source/osn-advanced-replay-buffer.cpp
#	obs-studio-server/source/osn-simple-recording.cpp
#	obs-studio-server/source/osn-simple-replay-buffer.cpp
@aleksandr-voitenko aleksandr-voitenko changed the title [WIP] New Auto Optimizer New Auto Optimizer Sep 2, 2026
Comment thread obs-studio-server/source/nodeobs_api.h Outdated
Comment thread tests/osn-tests/src/test_osn_auto_optimizer.ts
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.

3 participants