diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index 5a2e07c30..d6b620e64 100644 --- a/obs/data/locale/en-US.ini +++ b/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.RetryDelay="Retry Delay (seconds)" 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.Settings.Video="Video" diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui index 9b79a2af6..424fb16f3 100644 --- a/obs/forms/OBSBasicSettings.ui +++ b/obs/forms/OBSBasicSettings.ui @@ -514,6 +514,80 @@ + + + + Basic.Settings.Output.Advanced + + + true + + + + + + + + + + Basic.Settings.Output.CustomX264Settings + + + + + + + true + + + Basic.Settings.Output.X264Preset + + + + + + + + ultrafast + + + + + superfast + + + + + veryfast + + + + + faster + + + + + fast + + + + + medium + + + + + slow + + + + + slower + + + + @@ -1103,5 +1177,69 @@ + + simpleOutAdvanced + toggled(bool) + simpleOutPreset + setVisible(bool) + + + 439 + 240 + + + 432 + 256 + + + + + simpleOutAdvanced + toggled(bool) + label_24 + setVisible(bool) + + + 482 + 241 + + + 308 + 266 + + + + + simpleOutAdvanced + toggled(bool) + simpleOutCustomX264 + setVisible(bool) + + + 459 + 234 + + + 452 + 292 + + + + + simpleOutAdvanced + toggled(bool) + label_23 + setVisible(bool) + + + 554 + 236 + + + 350 + 286 + + + diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index e40f184be..022fb863a 100644 --- a/obs/window-basic-main.cpp +++ b/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", "MaxRetries", 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", "BaseCY", cy); @@ -1976,11 +1980,22 @@ void OBSBasic::SetupEncoders() "VBitrate"); int audioBitrate = config_get_uint(basicConfig, "SimpleOutput", "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, "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_int(aacSettings, "bitrate", audioBitrate); obs_encoder_update(x264, x264Settings); diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index 07090538b..14b8132a5 100644 --- a/obs/window-basic-settings.cpp +++ b/obs/window-basic-settings.cpp @@ -145,6 +145,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->simpleOutReconnect, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->simpleOutRetryDelay, 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->sampleRate, COMBO_CHANGED, AUDIO_RESTART); HookWidget(ui->desktopAudioDevice1, COMBO_CHANGED, AUDIO_CHANGED); @@ -432,6 +435,12 @@ void OBSBasicSettings::LoadSimpleOutputSettings() "RetryDelay"); int maxRetries = config_get_uint(main->Config(), "SimpleOutput", "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->simpleOutputVBitrate->setValue(videoBitrate); @@ -442,6 +451,9 @@ void OBSBasicSettings::LoadSimpleOutputSettings() ui->simpleOutReconnect->setChecked(reconnect); ui->simpleOutRetryDelay->setValue(retryDelay); ui->simpleOutMaxRetries->setValue(maxRetries); + ui->simpleOutAdvanced->setChecked(advanced); + ui->simpleOutPreset->setCurrentText(preset); + ui->simpleOutCustomX264->setText(custom); } void OBSBasicSettings::LoadOutputSettings() @@ -614,6 +626,9 @@ void OBSBasicSettings::SaveOutputSettings() SaveCheckBox(ui->simpleOutReconnect, "SimpleOutput", "Reconnect"); SaveSpinBox(ui->simpleOutRetryDelay, "SimpleOutput", "RetryDelay"); SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries"); + SaveCheckBox(ui->simpleOutAdvanced, "SimpleOutput", "UseAdvanced"); + SaveCombo(ui->simpleOutPreset, "SimpleOutput", "Preset"); + SaveEdit(ui->simpleOutCustomX264, "SimpleOutput", "x264Settings"); } void OBSBasicSettings::SaveAudioSettings()