From 4a069601889df2b69de7a8c873e7a19469def9c3 Mon Sep 17 00:00:00 2001 From: jp9000 <obs.jim@gmail.com> Date: Wed, 24 Sep 2014 20:23:42 -0700 Subject: [PATCH] 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. --- obs/data/locale/en-US.ini | 1 + obs/forms/OBSBasicSettings.ui | 50 ++++++++++++++++++++++++++--------- obs/window-basic-main.cpp | 7 ++++- obs/window-basic-settings.cpp | 5 ++++ 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index 63a23e2c1..b0ec8f67e 100644 --- a/obs/data/locale/en-US.ini +++ b/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" diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui index 424fb16f3..cd674b20d 100644 --- a/obs/forms/OBSBasicSettings.ui +++ b/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> diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 705e3badf..ed9a81a0b 100644 --- a/obs/window-basic-main.cpp +++ b/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); diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index 14b8132a5..615c77316 100644 --- a/obs/window-basic-settings.cpp +++ b/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"); } -- GitLab