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.
This commit is contained in:
PatTheMav
2025-09-25 20:20:20 +02:00
committed by Ryan Foster
parent a75fdd297b
commit e35b16cba9
3 changed files with 7 additions and 18 deletions
+4 -15
View File
@@ -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());
+2 -1
View File
@@ -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<MultitrackVideoOutput>();
+1 -2
View File
@@ -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) {