Browse Source

Basic UI: Add advanced encoder settings

jp9000 11 years ago
parent
commit
ded272e777
4 changed files with 171 additions and 0 deletions
  1. 3 0
      obs/data/locale/en-US.ini
  2. 138 0
      obs/forms/OBSBasicSettings.ui
  3. 15 0
      obs/window-basic-main.cpp
  4. 15 0
      obs/window-basic-settings.cpp

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

@@ -203,6 +203,9 @@ Basic.Settings.Output.AudioBitrate="Audio Bitrate"
 Basic.Settings.Output.Reconnect="Automatically Reconnect"
 Basic.Settings.Output.Reconnect="Automatically Reconnect"
 Basic.Settings.Output.RetryDelay="Retry Delay (seconds)"
 Basic.Settings.Output.RetryDelay="Retry Delay (seconds)"
 Basic.Settings.Output.MaxRetries="Maximum Retries"
 Basic.Settings.Output.MaxRetries="Maximum Retries"
+Basic.Settings.Output.Advanced="Advanced Encoder Settings"
+Basic.Settings.Output.X264Preset="x264 CPU Preset"
+Basic.Settings.Output.CustomX264Settings="Custom x264 Settings"
 
 
 # basic mode 'video' settings
 # basic mode 'video' settings
 Basic.Settings.Video="Video"
 Basic.Settings.Video="Video"

+ 138 - 0
obs/forms/OBSBasicSettings.ui

@@ -514,6 +514,80 @@
                      </property>
                      </property>
                     </widget>
                     </widget>
                    </item>
                    </item>
+                   <item row="6" column="1">
+                    <widget class="QCheckBox" name="simpleOutAdvanced">
+                     <property name="text">
+                      <string>Basic.Settings.Output.Advanced</string>
+                     </property>
+                     <property name="checked">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="1">
+                    <widget class="QLineEdit" name="simpleOutCustomX264"/>
+                   </item>
+                   <item row="8" 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">
+                    <widget class="QLabel" name="label_24">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="text">
+                      <string>Basic.Settings.Output.X264Preset</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QComboBox" name="simpleOutPreset">
+                     <item>
+                      <property name="text">
+                       <string notr="true">ultrafast</string>
+                      </property>
+                     </item>
+                     <item>
+                      <property name="text">
+                       <string notr="true">superfast</string>
+                      </property>
+                     </item>
+                     <item>
+                      <property name="text">
+                       <string notr="true">veryfast</string>
+                      </property>
+                     </item>
+                     <item>
+                      <property name="text">
+                       <string notr="true">faster</string>
+                      </property>
+                     </item>
+                     <item>
+                      <property name="text">
+                       <string notr="true">fast</string>
+                      </property>
+                     </item>
+                     <item>
+                      <property name="text">
+                       <string notr="true">medium</string>
+                      </property>
+                     </item>
+                     <item>
+                      <property name="text">
+                       <string notr="true">slow</string>
+                      </property>
+                     </item>
+                     <item>
+                      <property name="text">
+                       <string notr="true">slower</string>
+                      </property>
+                     </item>
+                    </widget>
+                   </item>
                   </layout>
                   </layout>
                  </widget>
                  </widget>
                 </item>
                 </item>
@@ -1103,5 +1177,69 @@
     </hint>
     </hint>
    </hints>
    </hints>
   </connection>
   </connection>
+  <connection>
+   <sender>simpleOutAdvanced</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>simpleOutPreset</receiver>
+   <slot>setVisible(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>439</x>
+     <y>240</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>432</x>
+     <y>256</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>simpleOutAdvanced</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_24</receiver>
+   <slot>setVisible(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>482</x>
+     <y>241</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>308</x>
+     <y>266</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>simpleOutAdvanced</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>simpleOutCustomX264</receiver>
+   <slot>setVisible(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>459</x>
+     <y>234</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>452</x>
+     <y>292</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>simpleOutAdvanced</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_23</receiver>
+   <slot>setVisible(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>554</x>
+     <y>236</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>350</x>
+     <y>286</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  </connections>
 </ui>
 </ui>

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

@@ -438,6 +438,10 @@ bool OBSBasic::InitBasicConfigDefaults()
 	config_set_default_uint  (basicConfig, "SimpleOutput", "RetryDelay", 2);
 	config_set_default_uint  (basicConfig, "SimpleOutput", "RetryDelay", 2);
 	config_set_default_uint  (basicConfig, "SimpleOutput", "MaxRetries",
 	config_set_default_uint  (basicConfig, "SimpleOutput", "MaxRetries",
 			20);
 			20);
+	config_set_default_bool  (basicConfig, "SimpleOutput", "UseAdvanced",
+			false);
+	config_set_default_string(basicConfig, "SimpleOutput", "Preset",
+			"veryfast");
 
 
 	config_set_default_uint  (basicConfig, "Video", "BaseCX",   cx);
 	config_set_default_uint  (basicConfig, "Video", "BaseCX",   cx);
 	config_set_default_uint  (basicConfig, "Video", "BaseCY",   cy);
 	config_set_default_uint  (basicConfig, "Video", "BaseCY",   cy);
@@ -1976,11 +1980,22 @@ void OBSBasic::SetupEncoders()
 				"VBitrate");
 				"VBitrate");
 		int audioBitrate = config_get_uint(basicConfig, "SimpleOutput",
 		int audioBitrate = config_get_uint(basicConfig, "SimpleOutput",
 				"ABitrate");
 				"ABitrate");
+		bool advanced = config_get_bool(basicConfig, "SimpleOutput",
+				"UseAdvanced");
+		const char *preset = config_get_string(basicConfig,
+				"SimpleOutput", "Preset");
+		const char *custom = config_get_string(basicConfig,
+				"SimpleOutput", "x264Settings");
 
 
 		obs_data_set_int(x264Settings, "bitrate", videoBitrate);
 		obs_data_set_int(x264Settings, "bitrate", videoBitrate);
 		obs_data_set_int(x264Settings, "buffer_size", videoBitrate);
 		obs_data_set_int(x264Settings, "buffer_size", videoBitrate);
 		obs_data_set_bool(x264Settings, "cbr", true);
 		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_int(aacSettings, "bitrate", audioBitrate);
 		obs_data_set_int(aacSettings, "bitrate", audioBitrate);
 
 
 		obs_encoder_update(x264, x264Settings);
 		obs_encoder_update(x264, x264Settings);

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

@@ -145,6 +145,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 	HookWidget(ui->simpleOutReconnect,   CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutReconnect,   CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutRetryDelay,  SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutRetryDelay,  SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutMaxRetries,  SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutMaxRetries,  SCROLL_CHANGED, OUTPUTS_CHANGED);
+	HookWidget(ui->simpleOutAdvanced,    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);
 	HookWidget(ui->channelSetup,         COMBO_CHANGED,  AUDIO_RESTART);
 	HookWidget(ui->sampleRate,           COMBO_CHANGED,  AUDIO_RESTART);
 	HookWidget(ui->sampleRate,           COMBO_CHANGED,  AUDIO_RESTART);
 	HookWidget(ui->desktopAudioDevice1,  COMBO_CHANGED,  AUDIO_CHANGED);
 	HookWidget(ui->desktopAudioDevice1,  COMBO_CHANGED,  AUDIO_CHANGED);
@@ -432,6 +435,12 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 			"RetryDelay");
 			"RetryDelay");
 	int maxRetries = config_get_uint(main->Config(), "SimpleOutput",
 	int maxRetries = config_get_uint(main->Config(), "SimpleOutput",
 			"MaxRetries");
 			"MaxRetries");
+	bool advanced = config_get_bool(main->Config(), "SimpleOutput",
+			"UseAdvanced");
+	const char *preset = config_get_string(main->Config(), "SimpleOutput",
+			"Preset");
+	const char *custom = config_get_string(main->Config(), "SimpleOutput",
+			"x264Settings");
 
 
 	ui->simpleOutputPath->setText(path);
 	ui->simpleOutputPath->setText(path);
 	ui->simpleOutputVBitrate->setValue(videoBitrate);
 	ui->simpleOutputVBitrate->setValue(videoBitrate);
@@ -442,6 +451,9 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 	ui->simpleOutReconnect->setChecked(reconnect);
 	ui->simpleOutReconnect->setChecked(reconnect);
 	ui->simpleOutRetryDelay->setValue(retryDelay);
 	ui->simpleOutRetryDelay->setValue(retryDelay);
 	ui->simpleOutMaxRetries->setValue(maxRetries);
 	ui->simpleOutMaxRetries->setValue(maxRetries);
+	ui->simpleOutAdvanced->setChecked(advanced);
+	ui->simpleOutPreset->setCurrentText(preset);
+	ui->simpleOutCustomX264->setText(custom);
 }
 }
 
 
 void OBSBasicSettings::LoadOutputSettings()
 void OBSBasicSettings::LoadOutputSettings()
@@ -614,6 +626,9 @@ void OBSBasicSettings::SaveOutputSettings()
 	SaveCheckBox(ui->simpleOutReconnect, "SimpleOutput", "Reconnect");
 	SaveCheckBox(ui->simpleOutReconnect, "SimpleOutput", "Reconnect");
 	SaveSpinBox(ui->simpleOutRetryDelay, "SimpleOutput", "RetryDelay");
 	SaveSpinBox(ui->simpleOutRetryDelay, "SimpleOutput", "RetryDelay");
 	SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries");
 	SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries");
+	SaveCheckBox(ui->simpleOutAdvanced, "SimpleOutput", "UseAdvanced");
+	SaveCombo(ui->simpleOutPreset, "SimpleOutput", "Preset");
+	SaveEdit(ui->simpleOutCustomX264, "SimpleOutput", "x264Settings");
 }
 }
 
 
 void OBSBasicSettings::SaveAudioSettings()
 void OBSBasicSettings::SaveAudioSettings()