From 50e1ec585dc332175cf14c071d860bdffff49221 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Mon, 9 May 2016 05:36:28 -0700 Subject: [PATCH] UI: Use defaults when changing to different encoders In the advanced output section of settings, when a different encoder is set, it would try to pass over settings from the other encoder, which may or may not be fully compatible with different encoders. Instead, just set it to defaults if it's on an encoder that's different from the currently loaded encoder. --- obs/window-basic-settings.cpp | 15 +++++++++++++-- obs/window-basic-settings.hpp | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index a9c8a4821..3fa2ddafa 100644 --- a/obs/window-basic-settings.cpp +++ b/obs/window-basic-settings.cpp @@ -1257,6 +1257,8 @@ void OBSBasicSettings::LoadAdvOutputStreamingEncoderProperties() connect(streamEncoderProps, SIGNAL(Changed()), this, SLOT(UpdateStreamDelayEstimate())); + curAdvStreamEncoder = type; + if (!SetComboByValue(ui->advOutEncoder, type)) { uint32_t caps = obs_get_encoder_caps(type); if ((caps & OBS_ENCODER_CAP_DEPRECATED) != 0) { @@ -1320,6 +1322,8 @@ void OBSBasicSettings::LoadAdvOutputRecordingEncoderProperties() ui->advOutRecStandard->layout()->addWidget(recordEncoderProps); } + curAdvRecordEncoder = type; + if (!SetComboByValue(ui->advOutRecEncoder, type)) { uint32_t caps = obs_get_encoder_caps(type); if ((caps & OBS_ENCODER_CAP_DEPRECATED) != 0) { @@ -2366,6 +2370,8 @@ void OBSBasicSettings::SaveOutputSettings() SaveComboData(ui->simpleOutRecEncoder, "SimpleOutput", "RecEncoder"); SaveEdit(ui->simpleOutMuxCustom, "SimpleOutput", "MuxerCustom"); + curAdvStreamEncoder = GetComboData(ui->advOutEncoder); + SaveCheckBox(ui->advOutApplyService, "AdvOut", "ApplyServiceSettings"); SaveComboData(ui->advOutEncoder, "AdvOut", "Encoder"); SaveCheckBox(ui->advOutUseRescale, "AdvOut", "Rescale"); @@ -2377,6 +2383,8 @@ void OBSBasicSettings::SaveOutputSettings() config_set_string(main->Config(), "AdvOut", "RecType", RecTypeFromIdx(ui->advOutRecType->currentIndex())); + curAdvRecordEncoder = GetComboData(ui->advOutRecEncoder); + SaveEdit(ui->advOutRecPath, "AdvOut", "RecFilePath"); SaveCheckBox(ui->advOutNoSpace, "AdvOut", "RecFileNameWithoutSpace"); SaveCombo(ui->advOutRecFormat, "AdvOut", "RecFormat"); @@ -2707,10 +2715,11 @@ void OBSBasicSettings::on_advOutEncoder_currentIndexChanged(int idx) return; QString encoder = GetComboData(ui->advOutEncoder); + bool loadSettings = encoder == curAdvStreamEncoder; delete streamEncoderProps; streamEncoderProps = CreateEncoderPropertyView(QT_TO_UTF8(encoder), - "streamEncoder.json", true); + loadSettings ? "streamEncoder.json" : nullptr, true); ui->advOutputStreamTab->layout()->addWidget(streamEncoderProps); UNUSED_PARAMETER(idx); @@ -2729,10 +2738,12 @@ void OBSBasicSettings::on_advOutRecEncoder_currentIndexChanged(int idx) if (idx > 0) { QString encoder = GetComboData(ui->advOutRecEncoder); + bool loadSettings = encoder == curAdvRecordEncoder; recordEncoderProps = CreateEncoderPropertyView( QT_TO_UTF8(encoder), - "recordEncoder.json", true); + loadSettings ? "recordEncoder.json" : nullptr, + true); ui->advOutRecStandard->layout()->addWidget(recordEncoderProps); } } diff --git a/obs/window-basic-settings.hpp b/obs/window-basic-settings.hpp index da11d481f..e3bdcfaa3 100644 --- a/obs/window-basic-settings.hpp +++ b/obs/window-basic-settings.hpp @@ -112,6 +112,9 @@ private: QString curQSVPreset; QString curNVENCPreset; + QString curAdvStreamEncoder; + QString curAdvRecordEncoder; + using AudioSource_t = std::tuple, QPointer, -- GitLab