diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui
index 779e78d05..4463506e4 100644
--- a/obs/forms/OBSBasicSettings.ui
+++ b/obs/forms/OBSBasicSettings.ui
@@ -430,6 +430,42 @@
+ -
+
+
+ Basic.Settings.Output.Format
+
+
+
+ -
+
+
-
+
+ flv
+
+
+ -
+
+ mp4
+
+
+ -
+
+ mov
+
+
+ -
+
+ mkv
+
+
+ -
+
+ ts
+
+
+
+
-
@@ -520,47 +556,6 @@
-
-
-
- Basic.Settings.Output.Reconnect
-
-
- true
-
-
-
- -
-
-
- Basic.Settings.Output.RetryDelay
-
-
-
- -
-
-
- 30
-
-
-
- -
-
-
- Basic.Settings.Output.MaxRetries
-
-
-
- -
-
-
- 1
-
-
- 10000
-
-
-
- -
Basic.Settings.Output.Advanced
@@ -570,7 +565,7 @@
- -
+
-
Basic.Settings.Output.UseCBR
@@ -580,7 +575,7 @@
- -
+
-
true
@@ -590,7 +585,7 @@
- -
+
-
-
@@ -634,7 +629,7 @@
- -
+
-
@@ -650,7 +645,7 @@
- -
+
-
false
@@ -666,52 +661,16 @@
- -
+
-
Basic.Settings.Output.CustomEncoderSettings
- -
+
-
- -
-
-
- Basic.Settings.Output.Format
-
-
-
- -
-
-
-
-
- flv
-
-
- -
-
- mp4
-
-
- -
-
- mov
-
-
- -
-
- mkv
-
-
- -
-
- ts
-
-
-
-
@@ -792,18 +751,8 @@
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
- -
-
-
- Basic.Settings.Output.Reconnect
-
-
- true
-
-
-
-
-
+
170
@@ -811,7 +760,7 @@
- Basic.Settings.Output.RetryDelay
+ Basic.Settings.Output.Adv.AudioTrack
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -819,73 +768,6 @@
-
-
-
- 30
-
-
-
- -
-
-
- Basic.Settings.Output.MaxRetries
-
-
-
- -
-
-
- 1
-
-
- 10000
-
-
-
- -
-
-
- Basic.Settings.Output.Encoder
-
-
-
- -
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Qt::RightToLeft
-
-
- Basic.Settings.Output.Adv.Rescale
-
-
-
- -
-
-
- false
-
-
- true
-
-
-
- -
-
-
- Basic.Settings.Output.Adv.AudioTrack
-
-
-
- -
@@ -940,7 +822,17 @@
- -
+
-
+
+
+ Basic.Settings.Output.Encoder
+
+
+
+ -
+
+
+ -
Basic.Settings.Output.Adv.ApplyServiceSettings
@@ -950,6 +842,32 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::RightToLeft
+
+
+ Basic.Settings.Output.Adv.Rescale
+
+
+
+ -
+
+
+ false
+
+
+ true
+
+
+
@@ -2882,6 +2800,59 @@
+ -
+
+
+ Basic.Settings.Output.Reconnect
+
+
+
+ QFormLayout::AllNonFixedFieldsGrow
+
+
-
+
+
+ Basic.Settings.Output.RetryDelay
+
+
+
+ -
+
+
+ Enable
+
+
+ true
+
+
+
+ -
+
+
+ 30
+
+
+
+ -
+
+
+ Basic.Settings.Output.MaxRetries
+
+
+
+ -
+
+
+ 1
+
+
+ 10000
+
+
+
+
+
+
-
@@ -2982,40 +2953,8 @@
38
- 401
- 79
-
-
-
-
- simpleOutReconnect
- toggled(bool)
- simpleOutRetryDelay
- setEnabled(bool)
-
-
- 875
- 254
-
-
- 875
- 291
-
-
-
-
- simpleOutReconnect
- toggled(bool)
- simpleOutMaxRetries
- setEnabled(bool)
-
-
- 875
- 254
-
-
- 875
- 328
+ 250
+ 39
@@ -3179,75 +3118,75 @@
-
- advOutReconnect
- toggled(bool)
- label_27
- setEnabled(bool)
-
-
- 864
- 141
-
-
- 427
- 178
-
-
-
-
- advOutReconnect
- toggled(bool)
- advOutRetryDelay
- setEnabled(bool)
-
-
- 864
- 141
-
-
- 864
- 178
-
-
-
-
- advOutReconnect
- toggled(bool)
- label_26
- setEnabled(bool)
-
-
- 864
- 141
-
-
- 427
- 215
-
-
-
-
- advOutReconnect
- toggled(bool)
- advOutMaxRetries
- setEnabled(bool)
-
-
- 864
- 141
-
-
- 864
- 215
-
-
-
advOutUseRescale
toggled(bool)
advOutRescale
setEnabled(bool)
+
+
+ 864
+ 141
+
+
+ 427
+ 178
+
+
+
+
+ advOutRecUseRescale
+ toggled(bool)
+ advOutRecRescale
+ setEnabled(bool)
+
+
+ 864
+ 141
+
+
+ 864
+ 178
+
+
+
+
+ advOutFFType
+ currentIndexChanged(int)
+ stackedWidget_2
+ setCurrentIndex(int)
+
+
+ 864
+ 141
+
+
+ 427
+ 215
+
+
+
+
+ streamDelayEnable
+ toggled(bool)
+ label_56
+ setEnabled(bool)
+
+
+ 864
+ 141
+
+
+ 864
+ 215
+
+
+
+
+ streamDelayEnable
+ toggled(bool)
+ streamDelayPreserve
+ setEnabled(bool)
427
@@ -3260,9 +3199,9 @@
- advOutRecUseRescale
+ streamDelayEnable
toggled(bool)
- advOutRecRescale
+ widget_12
setEnabled(bool)
@@ -3276,7 +3215,7 @@
- simpleOutReconnect
+ reconnectEnable
toggled(bool)
label_17
setEnabled(bool)
@@ -3292,30 +3231,14 @@
- simpleOutReconnect
+ reconnectEnable
toggled(bool)
- label_22
+ reconnectRetryDelay
setEnabled(bool)
- 875
- 254
-
-
- 466
- 328
-
-
-
-
- advOutFFType
- currentIndexChanged(int)
- stackedWidget_2
- setCurrentIndex(int)
-
-
- 250
- 89
+ 516
+ 411
250
@@ -3324,9 +3247,9 @@
- streamDelayEnable
+ reconnectEnable
toggled(bool)
- label_56
+ label_22
setEnabled(bool)
@@ -3340,25 +3263,9 @@
- streamDelayEnable
+ reconnectEnable
toggled(bool)
- streamDelayPreserve
- setEnabled(bool)
-
-
- 578
- 275
-
-
- 593
- 339
-
-
-
-
- streamDelayEnable
- toggled(bool)
- widget_12
+ reconnectMaxRetries
setEnabled(bool)
diff --git a/obs/obs-app.cpp b/obs/obs-app.cpp
index f2f112aca..75b08b02a 100644
--- a/obs/obs-app.cpp
+++ b/obs/obs-app.cpp
@@ -1317,6 +1317,54 @@ static bool update_ffmpeg_output(ConfigFile &config)
return true;
}
+static bool move_reconnect_settings(ConfigFile &config, const char *sec)
+{
+ bool changed = false;
+
+ if (config_has_user_value(config, sec, "Reconnect")) {
+ bool reconnect = config_get_bool(config, sec, "Reconnect");
+ config_set_bool(config, "Output", "Reconnect", reconnect);
+ changed = true;
+ }
+ if (config_has_user_value(config, sec, "RetryDelay")) {
+ int delay = (int)config_get_uint(config, sec, "RetryDelay");
+ config_set_uint(config, "Output", "RetryDelay", delay);
+ changed = true;
+ }
+ if (config_has_user_value(config, sec, "MaxRetries")) {
+ int retries = (int)config_get_uint(config, sec, "MaxRetries");
+ config_set_uint(config, "Output", "MaxRetries", retries);
+ changed = true;
+ }
+
+ return changed;
+}
+
+static bool update_reconnect(ConfigFile &config)
+{
+ if (!config_has_user_value(config, "Output", "Mode"))
+ return false;
+
+ const char *mode = config_get_string(config, "Output", "Mode");
+ if (!mode)
+ return false;
+
+ const char *section = (strcmp(mode, "Advanced") == 0) ?
+ "AdvOut" : "SimpleOutput";
+
+ if (move_reconnect_settings(config, section)) {
+ config_remove_value(config, "SimpleOutput", "Reconnect");
+ config_remove_value(config, "SimpleOutput", "RetryDelay");
+ config_remove_value(config, "SimpleOutput", "MaxRetries");
+ config_remove_value(config, "AdvOut", "Reconnect");
+ config_remove_value(config, "AdvOut", "RetryDelay");
+ config_remove_value(config, "AdvOut", "MaxRetries");
+ return true;
+ }
+
+ return false;
+}
+
static void upgrade_settings(void)
{
char path[512];
@@ -1344,7 +1392,8 @@ static void upgrade_settings(void)
ret = config.Open(path, CONFIG_OPEN_EXISTING);
if (ret == CONFIG_SUCCESS) {
- if (update_ffmpeg_output(config)) {
+ if (update_ffmpeg_output(config) ||
+ update_reconnect(config)) {
config_save_safe(config, "tmp",
nullptr);
}
diff --git a/obs/window-basic-main-outputs.cpp b/obs/window-basic-main-outputs.cpp
index 0f71fac1b..025029915 100644
--- a/obs/window-basic-main-outputs.cpp
+++ b/obs/window-basic-main-outputs.cpp
@@ -237,11 +237,11 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
obs_output_set_audio_encoder(streamOutput, aac, 0);
obs_output_set_service(streamOutput, service);
- bool reconnect = config_get_bool(main->Config(), "SimpleOutput",
+ bool reconnect = config_get_bool(main->Config(), "Output",
"Reconnect");
- int retryDelay = config_get_uint(main->Config(), "SimpleOutput",
+ int retryDelay = config_get_uint(main->Config(), "Output",
"RetryDelay");
- int maxRetries = config_get_uint(main->Config(), "SimpleOutput",
+ int maxRetries = config_get_uint(main->Config(), "Output",
"MaxRetries");
bool useDelay = config_get_bool(main->Config(), "Output",
"DelayEnable");
@@ -735,9 +735,9 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
obs_output_set_service(streamOutput, service);
- bool reconnect = config_get_bool(main->Config(), "AdvOut", "Reconnect");
- int retryDelay = config_get_int(main->Config(), "AdvOut", "RetryDelay");
- int maxRetries = config_get_int(main->Config(), "AdvOut", "MaxRetries");
+ bool reconnect = config_get_bool(main->Config(), "Output", "Reconnect");
+ int retryDelay = config_get_int(main->Config(), "Output", "RetryDelay");
+ int maxRetries = config_get_int(main->Config(), "Output", "MaxRetries");
bool useDelay = config_get_bool(main->Config(), "Output",
"DelayEnable");
int delaySec = config_get_int(main->Config(), "Output",
diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp
index d7bc3daea..f7cba708e 100644
--- a/obs/window-basic-main.cpp
+++ b/obs/window-basic-main.cpp
@@ -635,12 +635,6 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_uint (basicConfig, "SimpleOutput", "VBitrate",
2500);
config_set_default_uint (basicConfig, "SimpleOutput", "ABitrate", 160);
- config_set_default_bool (basicConfig, "SimpleOutput", "Reconnect",
- true);
- config_set_default_uint (basicConfig, "SimpleOutput", "RetryDelay",
- 10);
- config_set_default_uint (basicConfig, "SimpleOutput", "MaxRetries",
- 20);
config_set_default_bool (basicConfig, "SimpleOutput", "UseAdvanced",
false);
config_set_default_bool (basicConfig, "SimpleOutput", "UseCBR", true);
@@ -650,9 +644,6 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_string(basicConfig, "SimpleOutput", "Preset",
"veryfast");
- config_set_default_bool (basicConfig, "AdvOut", "Reconnect", true);
- config_set_default_uint (basicConfig, "AdvOut", "RetryDelay", 10);
- config_set_default_uint (basicConfig, "AdvOut", "MaxRetries", 20);
config_set_default_bool (basicConfig, "AdvOut", "ApplyServiceSettings",
true);
config_set_default_bool (basicConfig, "AdvOut", "UseRescale", false);
@@ -693,6 +684,10 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_uint (basicConfig, "Output", "DelaySec", 20);
config_set_default_bool (basicConfig, "Output", "DelayPreserve", true);
+ config_set_default_bool (basicConfig, "Output", "Reconnect", true);
+ config_set_default_uint (basicConfig, "Output", "RetryDelay", 10);
+ config_set_default_uint (basicConfig, "Output", "MaxRetries", 20);
+
int i = 0;
uint32_t scale_cx = cx;
uint32_t scale_cy = cy;
diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp
index 7191dd2aa..1f8524ab6 100644
--- a/obs/window-basic-settings.cpp
+++ b/obs/window-basic-settings.cpp
@@ -269,9 +269,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->simpleOutRecFormat, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutputVBitrate, SCROLL_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutputABitrate, COMBO_CHANGED, OUTPUTS_CHANGED);
- 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->simpleOutUseCBR, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutPreset, COMBO_CHANGED, OUTPUTS_CHANGED);
@@ -279,9 +276,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->simpleOutPreset, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutVBufsize, SCROLL_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutCustom, EDIT_CHANGED, OUTPUTS_CHANGED);
- HookWidget(ui->advOutReconnect, CHECK_CHANGED, OUTPUTS_CHANGED);
- HookWidget(ui->advOutRetryDelay, SCROLL_CHANGED, OUTPUTS_CHANGED);
- HookWidget(ui->advOutMaxRetries, SCROLL_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->advOutEncoder, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->advOutUseRescale, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->advOutRescale, CBEDIT_CHANGED, OUTPUTS_CHANGED);
@@ -349,6 +343,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->streamDelayEnable, CHECK_CHANGED, ADV_CHANGED);
HookWidget(ui->streamDelaySec, SCROLL_CHANGED, ADV_CHANGED);
HookWidget(ui->streamDelayPreserve, CHECK_CHANGED, ADV_CHANGED);
+ HookWidget(ui->reconnectEnable, CHECK_CHANGED, ADV_CHANGED);
+ HookWidget(ui->reconnectRetryDelay, SCROLL_CHANGED, ADV_CHANGED);
+ HookWidget(ui->reconnectMaxRetries, SCROLL_CHANGED, ADV_CHANGED);
#ifdef _WIN32
uint32_t winVer = GetWindowsVersion();
@@ -1008,12 +1005,6 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
"VBufsize");
int audioBitrate = config_get_uint(main->Config(), "SimpleOutput",
"ABitrate");
- bool reconnect = config_get_bool(main->Config(), "SimpleOutput",
- "Reconnect");
- int retryDelay = config_get_uint(main->Config(), "SimpleOutput",
- "RetryDelay");
- int maxRetries = config_get_uint(main->Config(), "SimpleOutput",
- "MaxRetries");
bool advanced = config_get_bool(main->Config(), "SimpleOutput",
"UseAdvanced");
bool useCBR = config_get_bool(main->Config(), "SimpleOutput",
@@ -1037,9 +1028,6 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
SetComboByName(ui->simpleOutputABitrate,
std::to_string(audioBitrate).c_str());
- ui->simpleOutReconnect->setChecked(reconnect);
- ui->simpleOutRetryDelay->setValue(retryDelay);
- ui->simpleOutMaxRetries->setValue(maxRetries);
ui->simpleOutAdvanced->setChecked(advanced);
ui->simpleOutUseCBR->setChecked(useCBR);
ui->simpleOutPreset->setCurrentText(preset);
@@ -1048,12 +1036,6 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
void OBSBasicSettings::LoadAdvOutputStreamingSettings()
{
- bool reconnect = config_get_bool(main->Config(), "AdvOut",
- "Reconnect");
- int retryDelay = config_get_int(main->Config(), "AdvOut",
- "RetryDelay");
- int maxRetries = config_get_int(main->Config(), "AdvOut",
- "MaxRetries");
bool rescale = config_get_bool(main->Config(), "AdvOut",
"Rescale");
const char *rescaleRes = config_get_string(main->Config(), "AdvOut",
@@ -1063,9 +1045,6 @@ void OBSBasicSettings::LoadAdvOutputStreamingSettings()
bool applyServiceSettings = config_get_bool(main->Config(), "AdvOut",
"ApplyServiceSettings");
- ui->advOutReconnect->setChecked(reconnect);
- ui->advOutRetryDelay->setValue(retryDelay);
- ui->advOutMaxRetries->setValue(maxRetries);
ui->advOutApplyService->setChecked(applyServiceSettings);
ui->advOutUseRescale->setChecked(rescale);
ui->advOutRescale->setEnabled(rescale);
@@ -1579,9 +1558,19 @@ void OBSBasicSettings::LoadAdvancedSettings()
"DelaySec");
bool preserveDelay = config_get_bool(main->Config(), "Output",
"DelayPreserve");
+ bool reconnect = config_get_bool(main->Config(), "Output",
+ "Reconnect");
+ int retryDelay = config_get_int(main->Config(), "Output",
+ "RetryDelay");
+ int maxRetries = config_get_int(main->Config(), "Output",
+ "MaxRetries");
loading = true;
+ ui->reconnectEnable->setChecked(reconnect);
+ ui->reconnectRetryDelay->setValue(retryDelay);
+ ui->reconnectMaxRetries->setValue(maxRetries);
+
ui->streamDelaySec->setValue(delaySec);
ui->streamDelayPreserve->setChecked(preserveDelay);
ui->streamDelayEnable->setChecked(enableDelay);
@@ -1992,6 +1981,9 @@ void OBSBasicSettings::SaveAdvancedSettings()
SaveCheckBox(ui->streamDelayEnable, "Output", "DelayEnable");
SaveSpinBox(ui->streamDelaySec, "Output", "DelaySec");
SaveCheckBox(ui->streamDelayPreserve, "Output", "DelayPreserve");
+ SaveCheckBox(ui->reconnectEnable, "Output", "Reconnect");
+ SaveSpinBox(ui->reconnectRetryDelay, "Output", "RetryDelay");
+ SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries");
}
static inline const char *OutputModeFromIdx(int idx)
@@ -2093,9 +2085,6 @@ void OBSBasicSettings::SaveOutputSettings()
SaveCombo(ui->simpleOutputABitrate, "SimpleOutput", "ABitrate");
SaveEdit(ui->simpleOutputPath, "SimpleOutput", "FilePath");
SaveCombo(ui->simpleOutRecFormat, "SimpleOutput", "RecFormat");
- SaveCheckBox(ui->simpleOutReconnect, "SimpleOutput", "Reconnect");
- SaveSpinBox(ui->simpleOutRetryDelay, "SimpleOutput", "RetryDelay");
- SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries");
SaveCheckBox(ui->simpleOutAdvanced, "SimpleOutput", "UseAdvanced");
SaveCheckBox(ui->simpleOutUseCBR, "SimpleOutput", "UseCBR");
SaveCheckBox(ui->simpleOutUseBufsize, "SimpleOutput", "UseBufsize");
@@ -2105,9 +2094,6 @@ void OBSBasicSettings::SaveOutputSettings()
if (ui->simpleOutUseBufsize->isChecked())
SaveSpinBox(ui->simpleOutVBufsize, "SimpleOutput", "VBufsize");
- SaveCheckBox(ui->advOutReconnect, "AdvOut", "Reconnect");
- SaveSpinBox(ui->advOutRetryDelay, "AdvOut", "RetryDelay");
- SaveSpinBox(ui->advOutMaxRetries, "AdvOut", "MaxRetries");
SaveCheckBox(ui->advOutApplyService, "AdvOut", "ApplyServiceSettings");
SaveComboData(ui->advOutEncoder, "AdvOut", "Encoder");
SaveCheckBox(ui->advOutUseRescale, "AdvOut", "Rescale");