diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index a9c8a48218cb028d21e363ee2727c491d15225ad..3fa2ddafa8b1e0b877cb05ab23b777b3e4e09fa2 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 da11d481f175d4ca82804ca9d459d1bd97c6ce79..e3bdcfaa38f8ed63e2934cd27d2eb203b2b4cf23 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,