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 @@ - + - + Basic.Settings.Output.CustomX264Settings - + true @@ -544,7 +544,7 @@ - + @@ -588,6 +588,16 @@ + + + + Basic.Settings.Output.UseCBR + + + true + + + @@ -1188,8 +1198,8 @@ 240 - 432 - 256 + 750 + 295 @@ -1204,8 +1214,8 @@ 241 - 308 - 266 + 367 + 295 @@ -1220,8 +1230,8 @@ 234 - 452 - 292 + 750 + 321 @@ -1236,8 +1246,24 @@ 236 - 350 - 286 + 367 + 321 + + + + + simpleOutAdvanced + toggled(bool) + simpleOutUseCBR + setVisible(bool) + + + 398 + 241 + + + 410 + 261 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"); }