summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpkv <pkv@obsproject.com>2024-02-27 01:29:40 +0100
committerRyan Foster <ryan@obsproject.com>2024-02-27 18:26:09 -0500
commit5bd22afe41ccc4e06d12dc5f97bd52385bb299dd (patch)
treed037e097d1c1814176eaf1c29bbde1170b29ed9d
parentef19644e5efe8b07d64f77f59fa9105e0ec76c75 (diff)
UI: Correctly toggle audio multi-track buttons
This toggles audio multi track display in Output settings when: 1. When there is a signal that a stream service is changed to a non custom one. Indeed multi-track audio is only available with Custom service and only with SRT or RIST protocols. 2. When a Custom service is picked, and SRT or RIST are detected in the server URL. 3. When Stream settings are saved when one hits Apply. This is in addition to the toggling done when loading Stream Settings. Signed-off-by: pkv <pkv@obsproject.com>
-rw-r--r--UI/window-basic-settings-stream.cpp32
-rw-r--r--UI/window-basic-settings.cpp23
-rw-r--r--UI/window-basic-settings.hpp3
3 files changed, 36 insertions, 22 deletions
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index 27c44990c..e28c5b189 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -180,6 +180,28 @@ void OBSBasicSettings::LoadStream1Settings()
Qt::QueuedConnection);
}
+#define SRT_PROTOCOL "srt"
+#define RIST_PROTOCOL "rist"
+
+bool OBSBasicSettings::AllowsMultiTrack(const char *protocol)
+{
+ return astrcmpi_n(protocol, SRT_PROTOCOL, strlen(SRT_PROTOCOL)) == 0 ||
+ astrcmpi_n(protocol, RIST_PROTOCOL, strlen(RIST_PROTOCOL)) == 0;
+}
+
+void OBSBasicSettings::SwapMultiTrack(const char *protocol)
+{
+ if (protocol) {
+ if (AllowsMultiTrack(protocol)) {
+ ui->advStreamTrackWidget->setCurrentWidget(
+ ui->streamMultiTracks);
+ } else {
+ ui->advStreamTrackWidget->setCurrentWidget(
+ ui->streamSingleTracks);
+ }
+ }
+}
+
void OBSBasicSettings::SaveStream1Settings()
{
bool customServer = IsCustomService();
@@ -264,6 +286,7 @@ void OBSBasicSettings::SaveStream1Settings()
}
SaveCheckBox(ui->ignoreRecommended, "Stream1", "IgnoreRecommended");
+ SwapMultiTrack(QT_TO_UTF8(protocol));
}
void OBSBasicSettings::UpdateMoreInfoLink()
@@ -509,6 +532,13 @@ void OBSBasicSettings::on_service_currentIndexChanged(int idx)
if (idx == 0)
lastCustomServer = ui->customServer->text();
}
+
+ if (!IsCustomService()) {
+ ui->advStreamTrackWidget->setCurrentWidget(
+ ui->streamSingleTracks);
+ } else {
+ SwapMultiTrack(QT_TO_UTF8(protocol));
+ }
}
void OBSBasicSettings::on_customServer_textChanged(const QString &)
@@ -520,6 +550,8 @@ void OBSBasicSettings::on_customServer_textChanged(const QString &)
if (ServiceSupportsCodecCheck())
lastCustomServer = ui->customServer->text();
+
+ SwapMultiTrack(QT_TO_UTF8(protocol));
}
void OBSBasicSettings::ServiceChanged(bool resetFields)
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index ec0a35d13..5aa1cf658 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -2057,16 +2057,6 @@ static inline QString makeFormatToolTip()
return html;
}
-#define RTMP_PROTOCOL "rtmp"
-#define SRT_PROTOCOL "srt"
-#define RIST_PROTOCOL "rist"
-
-inline bool allowsMultiTrack(const char *protocol)
-{
- return astrcmpi_n(protocol, SRT_PROTOCOL, strlen(SRT_PROTOCOL)) == 0 ||
- astrcmpi_n(protocol, RIST_PROTOCOL, strlen(RIST_PROTOCOL)) == 0;
-}
-
void OBSBasicSettings::LoadAdvOutputStreamingSettings()
{
const char *rescaleRes =
@@ -2118,21 +2108,10 @@ void OBSBasicSettings::LoadAdvOutputStreamingSettings()
ui->advOutMultiTrack5->setChecked(audioMixes & (1 << 4));
ui->advOutMultiTrack6->setChecked(audioMixes & (1 << 5));
- bool is_multitrack_output = false;
obs_service_t *service_obj = main->GetService();
const char *protocol = nullptr;
protocol = obs_service_get_protocol(service_obj);
- if (protocol) {
- is_multitrack_output = allowsMultiTrack(protocol);
- }
-
- if (is_multitrack_output) {
- ui->advStreamTrackWidget->setCurrentWidget(
- ui->streamMultiTracks);
- } else {
- ui->advStreamTrackWidget->setCurrentWidget(
- ui->streamSingleTracks);
- }
+ SwapMultiTrack(protocol);
}
OBSPropertiesView *
diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp
index 8b7042283..01bffeb49 100644
--- a/UI/window-basic-settings.hpp
+++ b/UI/window-basic-settings.hpp
@@ -383,6 +383,9 @@ private:
bool ServiceAndACodecCompatible();
bool ServiceSupportsCodecCheck();
+ inline bool AllowsMultiTrack(const char *protocol);
+ void SwapMultiTrack(const char *protocol);
+
private slots:
void on_theme_activated(int idx);