Browse Source

UI: Hide network features if a non-RTMP service is set

Reimplementation of bc80d0c and f2e6122, because they have to be
reverted by 0b9a8aa.
tytan652 3 years ago
parent
commit
fc7af80f84

+ 1 - 0
UI/data/locale/en-US.ini

@@ -1090,6 +1090,7 @@ Basic.Settings.Advanced.StreamDelay.Duration="Duration"
 Basic.Settings.Advanced.StreamDelay.Preserve="Preserve cutoff point (increase delay) when reconnecting"
 Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB"
 Basic.Settings.Advanced.Network="Network"
+Basic.Settings.Advanced.Network.Disabled="The currently selected streaming protocol does not support changing network settings."
 Basic.Settings.Advanced.Network.BindToIP="Bind to IP"
 Basic.Settings.Advanced.Network.EnableNewSocketLoop="Enable network optimizations"
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="Enable TCP pacing"

+ 14 - 7
UI/forms/OBSBasicSettings.ui

@@ -5572,8 +5572,15 @@
                    <property name="topMargin">
                     <number>2</number>
                    </property>
-                   <item row="0" column="0">
-                    <widget class="QLabel" name="label_27">
+                   <item row="0" column="1">
+                    <widget class="QLabel" name="advNetworkDisabled">
+                     <property name="text">
+                      <string>Basic.Settings.Advanced.Network.Disabled</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="bindToIPLabel">
                      <property name="text">
                       <string>Basic.Settings.Advanced.Network.BindToIP</string>
                      </property>
@@ -5582,17 +5589,17 @@
                      </property>
                     </widget>
                    </item>
-                   <item row="0" column="1">
+                   <item row="1" column="1">
                     <widget class="QComboBox" name="bindToIP"/>
                    </item>
-                   <item row="2" column="1">
+                   <item row="3" column="1">
                     <widget class="QCheckBox" name="enableNewSocketLoop">
                      <property name="text">
                       <string>Basic.Settings.Advanced.Network.EnableNewSocketLoop</string>
                      </property>
                     </widget>
                    </item>
-                   <item row="3" column="1">
+                   <item row="4" column="1">
                     <widget class="QCheckBox" name="enableLowLatencyMode">
                      <property name="enabled">
                       <bool>false</bool>
@@ -5602,7 +5609,7 @@
                      </property>
                     </widget>
                    </item>
-                   <item row="2" column="0">
+                   <item row="3" column="0">
                     <spacer name="horizontalSpacer_7">
                      <property name="orientation">
                       <enum>Qt::Horizontal</enum>
@@ -5615,7 +5622,7 @@
                      </property>
                     </spacer>
                    </item>
-                   <item row="1" column="1">
+                   <item row="2" column="1">
                     <widget class="QCheckBox" name="dynBitrate">
                      <property name="toolTip">
                       <string>Basic.Settings.Output.DynamicBitrate.TT</string>

+ 22 - 0
UI/window-basic-settings-stream.cpp

@@ -96,6 +96,11 @@ void OBSBasicSettings::InitStreamPage()
 		SLOT(UpdateResFPSLimits()));
 	connect(ui->service, SIGNAL(currentIndexChanged(int)), this,
 		SLOT(UpdateMoreInfoLink()));
+
+	connect(ui->service, SIGNAL(currentIndexChanged(int)), this,
+		SLOT(UpdateAdvNetworkGroup()));
+	connect(ui->customServer, SIGNAL(textChanged(const QString &)), this,
+		SLOT(UpdateAdvNetworkGroup()));
 }
 
 void OBSBasicSettings::LoadStream1Settings()
@@ -1155,3 +1160,20 @@ void OBSBasicSettings::UpdateResFPSLimits()
 	lastIgnoreRecommended = (int)ignoreRecommended;
 	lastServiceIdx = idx;
 }
+
+bool OBSBasicSettings::IsServiceOutputHasNetworkFeatures()
+{
+	if (IsCustomService())
+		return ui->customServer->text().startsWith("rtmp");
+
+	OBSServiceAutoRelease service = SpawnTempService();
+	const char *output = obs_service_get_output_type(service);
+
+	if (!output)
+		return true;
+
+	if (strcmp(output, "rtmp_output") == 0)
+		return true;
+
+	return false;
+}

+ 16 - 0
UI/window-basic-settings.cpp

@@ -939,6 +939,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 		SLOT(UseStreamKeyAdvClicked()));
 
 	UpdateAudioWarnings();
+	UpdateAdvNetworkGroup();
 }
 
 OBSBasicSettings::~OBSBasicSettings()
@@ -5472,3 +5473,18 @@ void OBSBasicSettings::RecreateOutputResolutionWidget()
 	ui->outputResolution->lineEdit()->setValidator(
 		ui->baseResolution->lineEdit()->validator());
 }
+
+void OBSBasicSettings::UpdateAdvNetworkGroup()
+{
+	bool enabled = IsServiceOutputHasNetworkFeatures();
+
+	ui->advNetworkDisabled->setVisible(!enabled);
+
+	ui->bindToIPLabel->setVisible(enabled);
+	ui->bindToIP->setVisible(enabled);
+	ui->dynBitrate->setVisible(enabled);
+#ifdef _WIN32
+	ui->enableNewSocketLoop->setVisible(enabled);
+	ui->enableLowLatencyMode->setVisible(enabled);
+#endif
+}

+ 4 - 0
UI/window-basic-settings.hpp

@@ -346,6 +346,8 @@ private:
 
 	OBSService GetStream1Service();
 
+	bool IsServiceOutputHasNetworkFeatures();
+
 private slots:
 	void on_theme_activated(int idx);
 
@@ -395,6 +397,8 @@ private slots:
 
 	void UpdateStreamDelayEstimate();
 
+	void UpdateAdvNetworkGroup();
+
 	void UpdateAutomaticReplayBufferCheckboxes();
 
 	void AdvOutSplitFileChanged();