From e35b16cba90008cc8488decdf78d329fe4003689 Mon Sep 17 00:00:00 2001 From: PatTheMav Date: Thu, 25 Sep 2025 20:20:20 +0200 Subject: [PATCH] frontend: Enable multitrack RTMP option for custom RTMP services This removes the need to provide an undocumented launch argument to enable custom RTMP service configurations to use multitrack encoding and also provide a custom configuration. --- frontend/settings/OBSBasicSettings.cpp | 19 ++++--------------- frontend/utility/BasicOutputHandler.cpp | 3 ++- frontend/utility/MultitrackVideoOutput.cpp | 3 +-- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/frontend/settings/OBSBasicSettings.cpp b/frontend/settings/OBSBasicSettings.cpp index d0ffc3c2b..6e47f93ac 100644 --- a/frontend/settings/OBSBasicSettings.cpp +++ b/frontend/settings/OBSBasicSettings.cpp @@ -5591,8 +5591,6 @@ void OBSBasicSettings::UpdateAdvNetworkGroup() #endif } -extern bool MultitrackVideoDeveloperModeEnabled(); - void OBSBasicSettings::UpdateMultitrackVideo() { // Technically, it should currently be safe to toggle multitrackVideo @@ -5615,15 +5613,6 @@ void OBSBasicSettings::UpdateMultitrackVideo() ui->enableMultitrackVideo->setChecked(false); } - // Enhanced Broadcasting works on Windows, Apple Silicon Macs, and Linux. - // For other OS variants, only enable the GUI controls if developer mode was invoked. -#if !defined(_WIN32) && !(defined(__APPLE__) && defined(__aarch64__)) && !defined(__linux__) - available = available && MultitrackVideoDeveloperModeEnabled(); -#endif - - if (IsCustomService()) - available = available && MultitrackVideoDeveloperModeEnabled(); - ui->multitrackVideoGroupBox->setVisible(available); ui->enableMultitrackVideo->setEnabled(toggle_available); @@ -5644,10 +5633,10 @@ void OBSBasicSettings::UpdateMultitrackVideo() !ui->multitrackVideoMaximumVideoTracksAuto->isChecked()); ui->multitrackVideoAdditionalCanvas->setEnabled(toggle_available && ui->enableMultitrackVideo->isChecked()); - ui->multitrackVideoStreamDumpEnable->setVisible(available && MultitrackVideoDeveloperModeEnabled()); - ui->multitrackVideoConfigOverrideEnable->setVisible(available && MultitrackVideoDeveloperModeEnabled()); - ui->multitrackVideoConfigOverrideLabel->setVisible(available && MultitrackVideoDeveloperModeEnabled()); - ui->multitrackVideoConfigOverride->setVisible(available && MultitrackVideoDeveloperModeEnabled()); + ui->multitrackVideoStreamDumpEnable->setVisible(available && IsCustomService()); + ui->multitrackVideoConfigOverrideEnable->setVisible(available && IsCustomService()); + ui->multitrackVideoConfigOverrideLabel->setVisible(available && IsCustomService()); + ui->multitrackVideoConfigOverride->setVisible(available && IsCustomService()); ui->multitrackVideoStreamDumpEnable->setEnabled(toggle_available && ui->enableMultitrackVideo->isChecked()); ui->multitrackVideoConfigOverrideEnable->setEnabled(toggle_available && ui->enableMultitrackVideo->isChecked()); diff --git a/frontend/utility/BasicOutputHandler.cpp b/frontend/utility/BasicOutputHandler.cpp index 1a0e69241..f670fa545 100644 --- a/frontend/utility/BasicOutputHandler.cpp +++ b/frontend/utility/BasicOutputHandler.cpp @@ -231,7 +231,8 @@ BasicOutputHandler::BasicOutputHandler(OBSBasic *main_) : main(main_) auto service = main_->GetService(); OBSDataAutoRelease settings = obs_service_get_settings(service); auto multitrack_enabled = config_get_bool(main->Config(), "Stream1", "EnableMultitrackVideo") && - obs_data_has_user_value(settings, "multitrack_video_configuration_url"); + (obs_data_has_user_value(settings, "multitrack_video_configuration_url") || + strcmp(obs_service_get_id(service), "rtmp_custom") == 0); if (multitrack_enabled) multitrackVideo = make_unique(); diff --git a/frontend/utility/MultitrackVideoOutput.cpp b/frontend/utility/MultitrackVideoOutput.cpp index 0c5995780..bc8823ed3 100644 --- a/frontend/utility/MultitrackVideoOutput.cpp +++ b/frontend/utility/MultitrackVideoOutput.cpp @@ -410,8 +410,7 @@ void MultitrackVideoOutput::PrepareStreaming( rtmp_url.has_value() ? rtmp_url->c_str() : "", vod_track_info_storage->array ? vod_track_info_storage->array : "No", canvasNames.c_str()); - const bool custom_config_only = auto_config_url.isEmpty() && MultitrackVideoDeveloperModeEnabled() && - custom_config.has_value() && + const bool custom_config_only = auto_config_url.isEmpty() && custom_config.has_value() && strcmp(obs_service_get_id(service), "rtmp_custom") == 0; if (!custom_config_only) {