Browse Source

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

Only rtmp_output has those features implemented.
tytan652 3 years ago
parent
commit
bc80d0ca95

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

@@ -1069,6 +1069,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

@@ -5590,8 +5590,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>
@@ -5600,17 +5607,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>
@@ -5620,7 +5627,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>
@@ -5633,7 +5640,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>

+ 18 - 0
UI/streaming-helpers.cpp

@@ -68,6 +68,24 @@ Json get_service_from_json(const Json &root, const char *name)
 	return Json();
 }
 
+bool StreamSettingsUI::IsServiceOutputHasNetworkFeatures()
+{
+	if (IsCustomService())
+		return ui_customServer->text().startsWith("rtmp");
+
+	Json service = get_service_from_json(
+		GetServicesJson(), QT_TO_UTF8(ui_service->currentText()));
+
+	if (!service["recommended"]["output"].is_string())
+		return true;
+
+	if (service["recommended"]["output"].string_value().compare(
+		    "rtmp_output") == 0)
+		return true;
+
+	return false;
+}
+
 void StreamSettingsUI::UpdateMoreInfoLink()
 {
 	if (IsCustomService()) {

+ 2 - 0
UI/streaming-helpers.hpp

@@ -63,6 +63,8 @@ public:
 
 	inline const QString &LastService() const { return lastService; }
 
+	bool IsServiceOutputHasNetworkFeatures();
+
 public slots:
 	void UpdateMoreInfoLink();
 	void UpdateKeyLink();

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

@@ -92,6 +92,11 @@ void OBSBasicSettings::InitStreamPage()
 		SLOT(UpdateResFPSLimits()));
 	connect(ui->service, SIGNAL(currentIndexChanged(int)), &streamUi,
 		SLOT(UpdateMoreInfoLink()));
+
+	connect(ui->service, SIGNAL(currentIndexChanged(int)), this,
+		SLOT(UpdateAdvNetworkGroup()));
+	connect(ui->customServer, SIGNAL(textChanged(const QString &)), this,
+		SLOT(UpdateAdvNetworkGroup()));
 }
 
 void OBSBasicSettings::LoadStream1Settings()

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

@@ -5386,3 +5386,18 @@ void OBSBasicSettings::RecreateOutputResolutionWidget()
 	ui->outputResolution->lineEdit()->setValidator(
 		ui->baseResolution->lineEdit()->validator());
 }
+
+void OBSBasicSettings::UpdateAdvNetworkGroup()
+{
+	bool enabled = streamUi.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
+}

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

@@ -390,6 +390,8 @@ private slots:
 
 	void UpdateStreamDelayEstimate();
 
+	void UpdateAdvNetworkGroup();
+
 	void UpdateAutomaticReplayBufferCheckboxes();
 
 	void AdvOutSplitFileChanged();