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");