Forráskód Böngészése

Basic UI: Add "Use Constant Bitrate" advanced option.

It's better to use VBR for local recordings, so this option should be
nice for people who want to do that.
jp9000 11 éve
szülő
commit
4a06960188

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

@@ -209,6 +209,7 @@ Basic.Settings.Output.MaxRetries="Maximum Retries"
 Basic.Settings.Output.Advanced="Enable Advanced Encoder Settings"
 Basic.Settings.Output.X264Preset="x264 Preset"
 Basic.Settings.Output.CustomX264Settings="Custom x264 Settings"
+Basic.Settings.Output.UseCBR="Use Constant Bitrate"
 
 # basic mode 'video' settings
 Basic.Settings.Video="Video"

+ 38 - 12
obs/forms/OBSBasicSettings.ui

@@ -524,17 +524,17 @@
                      </property>
                     </widget>
                    </item>
-                   <item row="8" column="1">
+                   <item row="9" column="1">
                     <widget class="QLineEdit" name="simpleOutCustomX264"/>
                    </item>
-                   <item row="8" column="0">
+                   <item row="9" column="0">
                     <widget class="QLabel" name="label_23">
                      <property name="text">
                       <string>Basic.Settings.Output.CustomX264Settings</string>
                      </property>
                     </widget>
                    </item>
-                   <item row="7" column="0">
+                   <item row="8" column="0">
                     <widget class="QLabel" name="label_24">
                      <property name="enabled">
                       <bool>true</bool>
@@ -544,7 +544,7 @@
                      </property>
                     </widget>
                    </item>
-                   <item row="7" column="1">
+                   <item row="8" column="1">
                     <widget class="QComboBox" name="simpleOutPreset">
                      <item>
                       <property name="text">
@@ -588,6 +588,16 @@
                      </item>
                     </widget>
                    </item>
+                   <item row="7" column="1">
+                    <widget class="QCheckBox" name="simpleOutUseCBR">
+                     <property name="text">
+                      <string>Basic.Settings.Output.UseCBR</string>
+                     </property>
+                     <property name="checked">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
                   </layout>
                  </widget>
                 </item>
@@ -1188,8 +1198,8 @@
      <y>240</y>
     </hint>
     <hint type="destinationlabel">
-     <x>432</x>
-     <y>256</y>
+     <x>750</x>
+     <y>295</y>
     </hint>
    </hints>
   </connection>
@@ -1204,8 +1214,8 @@
      <y>241</y>
     </hint>
     <hint type="destinationlabel">
-     <x>308</x>
-     <y>266</y>
+     <x>367</x>
+     <y>295</y>
     </hint>
    </hints>
   </connection>
@@ -1220,8 +1230,8 @@
      <y>234</y>
     </hint>
     <hint type="destinationlabel">
-     <x>452</x>
-     <y>292</y>
+     <x>750</x>
+     <y>321</y>
     </hint>
    </hints>
   </connection>
@@ -1236,8 +1246,24 @@
      <y>236</y>
     </hint>
     <hint type="destinationlabel">
-     <x>350</x>
-     <y>286</y>
+     <x>367</x>
+     <y>321</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>simpleOutAdvanced</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>simpleOutUseCBR</receiver>
+   <slot>setVisible(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>398</x>
+     <y>241</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>410</x>
+     <y>261</y>
     </hint>
    </hints>
   </connection>

+ 6 - 1
obs/window-basic-main.cpp

@@ -442,6 +442,7 @@ bool OBSBasic::InitBasicConfigDefaults()
 			20);
 	config_set_default_bool  (basicConfig, "SimpleOutput", "UseAdvanced",
 			false);
+	config_set_default_bool  (basicConfig, "SimpleOutput", "UseCBR", true);
 	config_set_default_string(basicConfig, "SimpleOutput", "Preset",
 			"veryfast");
 
@@ -2025,6 +2026,8 @@ void OBSBasic::SetupEncoders()
 				"ABitrate");
 		bool advanced = config_get_bool(basicConfig, "SimpleOutput",
 				"UseAdvanced");
+		bool useCBR = config_get_bool(basicConfig, "SimpleOutput",
+				"UseCBR");
 		const char *preset = config_get_string(basicConfig,
 				"SimpleOutput", "Preset");
 		const char *custom = config_get_string(basicConfig,
@@ -2032,11 +2035,13 @@ void OBSBasic::SetupEncoders()
 
 		obs_data_set_int(x264Settings, "bitrate", videoBitrate);
 		obs_data_set_int(x264Settings, "buffer_size", videoBitrate);
-		obs_data_set_bool(x264Settings, "cbr", true);
 
 		if (advanced) {
 			obs_data_set_string(x264Settings, "preset", preset);
 			obs_data_set_string(x264Settings, "x264opts", custom);
+			obs_data_set_bool(x264Settings, "cbr", useCBR);
+		} else {
+			obs_data_set_bool(x264Settings, "cbr", true);
 		}
 
 		obs_data_set_int(aacSettings, "bitrate", audioBitrate);

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

@@ -146,6 +146,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 	HookWidget(ui->simpleOutRetryDelay,  SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutMaxRetries,  SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutAdvanced,    CHECK_CHANGED,  OUTPUTS_CHANGED);
+	HookWidget(ui->simpleOutUseCBR,      CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutPreset,      COMBO_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutCustomX264,  EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->channelSetup,         COMBO_CHANGED,  AUDIO_RESTART);
@@ -437,6 +438,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 			"MaxRetries");
 	bool advanced = config_get_bool(main->Config(), "SimpleOutput",
 			"UseAdvanced");
+	bool useCBR = config_get_bool(main->Config(), "SimpleOutput",
+			"UseCBR");
 	const char *preset = config_get_string(main->Config(), "SimpleOutput",
 			"Preset");
 	const char *custom = config_get_string(main->Config(), "SimpleOutput",
@@ -452,6 +455,7 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 	ui->simpleOutRetryDelay->setValue(retryDelay);
 	ui->simpleOutMaxRetries->setValue(maxRetries);
 	ui->simpleOutAdvanced->setChecked(advanced);
+	ui->simpleOutUseCBR->setChecked(useCBR);
 	ui->simpleOutPreset->setCurrentText(preset);
 	ui->simpleOutCustomX264->setText(custom);
 }
@@ -627,6 +631,7 @@ void OBSBasicSettings::SaveOutputSettings()
 	SaveSpinBox(ui->simpleOutRetryDelay, "SimpleOutput", "RetryDelay");
 	SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries");
 	SaveCheckBox(ui->simpleOutAdvanced, "SimpleOutput", "UseAdvanced");
+	SaveCheckBox(ui->simpleOutUseCBR, "SimpleOutput", "UseCBR");
 	SaveCombo(ui->simpleOutPreset, "SimpleOutput", "Preset");
 	SaveEdit(ui->simpleOutCustomX264, "SimpleOutput", "x264Settings");
 }