瀏覽代碼

UI: Add buffer size to 'simple' settings

jp9000 10 年之前
父節點
當前提交
a2373b1258
共有 4 個文件被更改,包括 137 次插入25 次删除
  1. 105 25
      obs/forms/OBSBasicSettings.ui
  2. 3 0
      obs/window-basic-main.cpp
  3. 26 0
      obs/window-basic-settings.cpp
  4. 3 0
      obs/window-basic-settings.hpp

+ 105 - 25
obs/forms/OBSBasicSettings.ui

@@ -483,6 +483,13 @@
                      </property>
                     </widget>
                    </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_17">
+                     <property name="text">
+                      <string>Basic.Settings.Output.RetryDelay</string>
+                     </property>
+                    </widget>
+                   </item>
                    <item row="4" column="1">
                     <widget class="QSpinBox" name="simpleOutRetryDelay">
                      <property name="maximum">
@@ -490,6 +497,13 @@
                      </property>
                     </widget>
                    </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_22">
+                     <property name="text">
+                      <string>Basic.Settings.Output.MaxRetries</string>
+                     </property>
+                    </widget>
+                   </item>
                    <item row="5" column="1">
                     <widget class="QSpinBox" name="simpleOutMaxRetries">
                      <property name="minimum">
@@ -500,20 +514,6 @@
                      </property>
                     </widget>
                    </item>
-                   <item row="4" column="0">
-                    <widget class="QLabel" name="label_17">
-                     <property name="text">
-                      <string>Basic.Settings.Output.RetryDelay</string>
-                     </property>
-                    </widget>
-                   </item>
-                   <item row="5" column="0">
-                    <widget class="QLabel" name="label_22">
-                     <property name="text">
-                      <string>Basic.Settings.Output.MaxRetries</string>
-                     </property>
-                    </widget>
-                   </item>
                    <item row="6" column="1">
                     <widget class="QCheckBox" name="simpleOutAdvanced">
                      <property name="text">
@@ -524,13 +524,13 @@
                      </property>
                     </widget>
                    </item>
-                   <item row="9" column="1">
-                    <widget class="QLineEdit" name="simpleOutCustom"/>
-                   </item>
-                   <item row="9" column="0">
-                    <widget class="QLabel" name="label_23">
+                   <item row="7" column="1">
+                    <widget class="QCheckBox" name="simpleOutUseCBR">
                      <property name="text">
-                      <string>Basic.Settings.Output.CustomEncoderSettings</string>
+                      <string>Basic.Settings.Output.UseCBR</string>
+                     </property>
+                     <property name="checked">
+                      <bool>true</bool>
                      </property>
                     </widget>
                    </item>
@@ -588,16 +588,48 @@
                      </item>
                     </widget>
                    </item>
-                   <item row="7" column="1">
-                    <widget class="QCheckBox" name="simpleOutUseCBR">
+                   <item row="9" column="0">
+                    <widget class="QCheckBox" name="simpleOutUseBufsize">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="layoutDirection">
+                      <enum>Qt::RightToLeft</enum>
+                     </property>
                      <property name="text">
-                      <string>Basic.Settings.Output.UseCBR</string>
+                      <string>Basic.Settings.Output.UseBufferSize</string>
                      </property>
-                     <property name="checked">
-                      <bool>true</bool>
+                    </widget>
+                   </item>
+                   <item row="9" column="1">
+                    <widget class="QSpinBox" name="simpleOutVBufsize">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="minimum">
+                      <number>200</number>
+                     </property>
+                     <property name="maximum">
+                      <number>1000000</number>
+                     </property>
+                     <property name="value">
+                      <number>2000</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QLabel" name="label_23">
+                     <property name="text">
+                      <string>Basic.Settings.Output.CustomEncoderSettings</string>
                      </property>
                     </widget>
                    </item>
+                   <item row="10" column="1">
+                    <widget class="QLineEdit" name="simpleOutCustom"/>
+                   </item>
                   </layout>
                  </widget>
                 </item>
@@ -1267,5 +1299,53 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>simpleOutUseBufsize</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>simpleOutVBufsize</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>318</x>
+     <y>312</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>473</x>
+     <y>311</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>simpleOutAdvanced</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>simpleOutUseBufsize</receiver>
+   <slot>setVisible(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>456</x>
+     <y>241</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>260</x>
+     <y>315</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>simpleOutAdvanced</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>simpleOutVBufsize</receiver>
+   <slot>setVisible(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>525</x>
+     <y>238</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>519</x>
+     <y>317</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
 </ui>

+ 3 - 0
obs/window-basic-main.cpp

@@ -401,6 +401,9 @@ bool OBSBasic::InitBasicConfigDefaults()
 	config_set_default_bool  (basicConfig, "SimpleOutput", "UseAdvanced",
 			false);
 	config_set_default_bool  (basicConfig, "SimpleOutput", "UseCBR", true);
+	config_set_default_bool  (basicConfig, "SimpleOutput", "UseBufsize",
+			false);
+	config_set_default_int   (basicConfig, "SimpleOutput", "Bufsize", 2500);
 	config_set_default_string(basicConfig, "SimpleOutput", "Preset",
 			"veryfast");
 

+ 26 - 0
obs/window-basic-settings.cpp

@@ -142,6 +142,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 	HookWidget(ui->simpleOutUseCBR,      CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutPreset,      COMBO_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutCustom,      EDIT_CHANGED,   OUTPUTS_CHANGED);
+	HookWidget(ui->simpleOutUseBufsize,  CHECK_CHANGED,  OUTPUTS_CHANGED);
+	HookWidget(ui->simpleOutVBufsize,    SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->channelSetup,         COMBO_CHANGED,  AUDIO_RESTART);
 	HookWidget(ui->sampleRate,           COMBO_CHANGED,  AUDIO_RESTART);
 	HookWidget(ui->desktopAudioDevice1,  COMBO_CHANGED,  AUDIO_CHANGED);
@@ -442,6 +444,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 			"FilePath");
 	int videoBitrate = config_get_uint(main->Config(), "SimpleOutput",
 			"VBitrate");
+	int videoBufsize = config_get_uint(main->Config(), "SimpleOutput",
+			"Bufsize");
 	int audioBitrate = config_get_uint(main->Config(), "SimpleOutput",
 			"ABitrate");
 	bool reconnect = config_get_bool(main->Config(), "SimpleOutput",
@@ -454,6 +458,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 			"UseAdvanced");
 	bool useCBR = config_get_bool(main->Config(), "SimpleOutput",
 			"UseCBR");
+	bool useBufsize = config_get_bool(main->Config(), "SimpleOutput",
+			"UseBufsize");
 	const char *preset = config_get_string(main->Config(), "SimpleOutput",
 			"Preset");
 	const char *custom = config_get_string(main->Config(), "SimpleOutput",
@@ -461,6 +467,9 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 
 	ui->simpleOutputPath->setText(path);
 	ui->simpleOutputVBitrate->setValue(videoBitrate);
+	ui->simpleOutUseBufsize->setChecked(useBufsize);
+	ui->simpleOutVBufsize->setValue(
+			useBufsize ? videoBufsize : videoBitrate);
 
 	SetComboByName(ui->simpleOutputABitrate,
 			std::to_string(audioBitrate).c_str());
@@ -647,8 +656,12 @@ void OBSBasicSettings::SaveOutputSettings()
 	SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries");
 	SaveCheckBox(ui->simpleOutAdvanced, "SimpleOutput", "UseAdvanced");
 	SaveCheckBox(ui->simpleOutUseCBR, "SimpleOutput", "UseCBR");
+	SaveCheckBox(ui->simpleOutUseBufsize, "SimpleOutput", "UseBufsize");
 	SaveCombo(ui->simpleOutPreset, "SimpleOutput", "Preset");
 	SaveEdit(ui->simpleOutCustom, "SimpleOutput", "x264Settings");
+
+	if (ui->simpleOutUseBufsize->isChecked())
+		SaveSpinBox(ui->simpleOutVBufsize, "SimpleOutput", "VBufsize");
 }
 
 void OBSBasicSettings::SaveAudioSettings()
@@ -723,6 +736,19 @@ void OBSBasicSettings::closeEvent(QCloseEvent *event)
 		event->ignore();
 }
 
+void OBSBasicSettings::on_simpleOutUseBufsize_toggled(bool checked)
+{
+	if (!checked)
+		ui->simpleOutVBufsize->setValue(
+				ui->simpleOutputVBitrate->value());
+}
+
+void OBSBasicSettings::on_simpleOutputVBitrate_valueChanged(int val)
+{
+	if (!ui->simpleOutUseBufsize->isChecked())
+		ui->simpleOutVBufsize->setValue(val);
+}
+
 void OBSBasicSettings::on_listWidget_itemSelectionChanged()
 {
 	int row = ui->listWidget->currentRow();

+ 3 - 0
obs/window-basic-settings.hpp

@@ -115,6 +115,9 @@ private:
 	void SaveSettings();
 
 private slots:
+	void on_simpleOutUseBufsize_toggled(bool checked);
+	void on_simpleOutputVBitrate_valueChanged(int val);
+
 	void on_listWidget_itemSelectionChanged();
 	void on_buttonBox_clicked(QAbstractButton *button);