diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui
index 5c84562eb..12cc748cb 100644
--- a/obs/forms/OBSBasicSettings.ui
+++ b/obs/forms/OBSBasicSettings.ui
@@ -483,6 +483,13 @@
+ -
+
+
+ Basic.Settings.Output.RetryDelay
+
+
+
-
@@ -490,6 +497,13 @@
+ -
+
+
+ Basic.Settings.Output.MaxRetries
+
+
+
-
@@ -500,20 +514,6 @@
- -
-
-
- Basic.Settings.Output.RetryDelay
-
-
-
- -
-
-
- Basic.Settings.Output.MaxRetries
-
-
-
-
@@ -524,13 +524,13 @@
- -
-
-
- -
-
+
-
+
- Basic.Settings.Output.CustomEncoderSettings
+ Basic.Settings.Output.UseCBR
+
+
+ true
@@ -588,16 +588,48 @@
- -
-
-
- Basic.Settings.Output.UseCBR
+
-
+
+
+
+ 0
+ 0
+
-
- true
+
+ Qt::RightToLeft
+
+
+ Basic.Settings.Output.UseBufferSize
+ -
+
+
+ false
+
+
+ 200
+
+
+ 1000000
+
+
+ 2000
+
+
+
+ -
+
+
+ Basic.Settings.Output.CustomEncoderSettings
+
+
+
+ -
+
+
@@ -1267,5 +1299,53 @@
+
+ simpleOutUseBufsize
+ toggled(bool)
+ simpleOutVBufsize
+ setEnabled(bool)
+
+
+ 318
+ 312
+
+
+ 473
+ 311
+
+
+
+
+ simpleOutAdvanced
+ toggled(bool)
+ simpleOutUseBufsize
+ setVisible(bool)
+
+
+ 456
+ 241
+
+
+ 260
+ 315
+
+
+
+
+ simpleOutAdvanced
+ toggled(bool)
+ simpleOutVBufsize
+ setVisible(bool)
+
+
+ 525
+ 238
+
+
+ 519
+ 317
+
+
+
diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp
index 657dd43f4..f91715cc2 100644
--- a/obs/window-basic-main.cpp
+++ b/obs/window-basic-main.cpp
@@ -401,6 +401,9 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_bool (basicConfig, "SimpleOutput", "UseAdvanced",
false);
config_set_default_bool (basicConfig, "SimpleOutput", "UseCBR", true);
+ config_set_default_bool (basicConfig, "SimpleOutput", "UseBufsize",
+ false);
+ config_set_default_int (basicConfig, "SimpleOutput", "Bufsize", 2500);
config_set_default_string(basicConfig, "SimpleOutput", "Preset",
"veryfast");
diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp
index 07bf52010..2397ee818 100644
--- a/obs/window-basic-settings.cpp
+++ b/obs/window-basic-settings.cpp
@@ -142,6 +142,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->simpleOutUseCBR, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutPreset, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutCustom, EDIT_CHANGED, OUTPUTS_CHANGED);
+ HookWidget(ui->simpleOutUseBufsize, CHECK_CHANGED, OUTPUTS_CHANGED);
+ HookWidget(ui->simpleOutVBufsize, SCROLL_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->channelSetup, COMBO_CHANGED, AUDIO_RESTART);
HookWidget(ui->sampleRate, COMBO_CHANGED, AUDIO_RESTART);
HookWidget(ui->desktopAudioDevice1, COMBO_CHANGED, AUDIO_CHANGED);
@@ -442,6 +444,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
"FilePath");
int videoBitrate = config_get_uint(main->Config(), "SimpleOutput",
"VBitrate");
+ int videoBufsize = config_get_uint(main->Config(), "SimpleOutput",
+ "Bufsize");
int audioBitrate = config_get_uint(main->Config(), "SimpleOutput",
"ABitrate");
bool reconnect = config_get_bool(main->Config(), "SimpleOutput",
@@ -454,6 +458,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
"UseAdvanced");
bool useCBR = config_get_bool(main->Config(), "SimpleOutput",
"UseCBR");
+ bool useBufsize = config_get_bool(main->Config(), "SimpleOutput",
+ "UseBufsize");
const char *preset = config_get_string(main->Config(), "SimpleOutput",
"Preset");
const char *custom = config_get_string(main->Config(), "SimpleOutput",
@@ -461,6 +467,9 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
ui->simpleOutputPath->setText(path);
ui->simpleOutputVBitrate->setValue(videoBitrate);
+ ui->simpleOutUseBufsize->setChecked(useBufsize);
+ ui->simpleOutVBufsize->setValue(
+ useBufsize ? videoBufsize : videoBitrate);
SetComboByName(ui->simpleOutputABitrate,
std::to_string(audioBitrate).c_str());
@@ -647,8 +656,12 @@ void OBSBasicSettings::SaveOutputSettings()
SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries");
SaveCheckBox(ui->simpleOutAdvanced, "SimpleOutput", "UseAdvanced");
SaveCheckBox(ui->simpleOutUseCBR, "SimpleOutput", "UseCBR");
+ SaveCheckBox(ui->simpleOutUseBufsize, "SimpleOutput", "UseBufsize");
SaveCombo(ui->simpleOutPreset, "SimpleOutput", "Preset");
SaveEdit(ui->simpleOutCustom, "SimpleOutput", "x264Settings");
+
+ if (ui->simpleOutUseBufsize->isChecked())
+ SaveSpinBox(ui->simpleOutVBufsize, "SimpleOutput", "VBufsize");
}
void OBSBasicSettings::SaveAudioSettings()
@@ -723,6 +736,19 @@ void OBSBasicSettings::closeEvent(QCloseEvent *event)
event->ignore();
}
+void OBSBasicSettings::on_simpleOutUseBufsize_toggled(bool checked)
+{
+ if (!checked)
+ ui->simpleOutVBufsize->setValue(
+ ui->simpleOutputVBitrate->value());
+}
+
+void OBSBasicSettings::on_simpleOutputVBitrate_valueChanged(int val)
+{
+ if (!ui->simpleOutUseBufsize->isChecked())
+ ui->simpleOutVBufsize->setValue(val);
+}
+
void OBSBasicSettings::on_listWidget_itemSelectionChanged()
{
int row = ui->listWidget->currentRow();
diff --git a/obs/window-basic-settings.hpp b/obs/window-basic-settings.hpp
index 9e97206c6..1a778a7fe 100644
--- a/obs/window-basic-settings.hpp
+++ b/obs/window-basic-settings.hpp
@@ -115,6 +115,9 @@ private:
void SaveSettings();
private slots:
+ void on_simpleOutUseBufsize_toggled(bool checked);
+ void on_simpleOutputVBitrate_valueChanged(int val);
+
void on_listWidget_itemSelectionChanged();
void on_buttonBox_clicked(QAbstractButton *button);