提交 50e1ec58 编写于 作者: J jp9000

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.
上级 df04dd07
......@@ -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);
}
}
......
......@@ -112,6 +112,9 @@ private:
QString curQSVPreset;
QString curNVENCPreset;
QString curAdvStreamEncoder;
QString curAdvRecordEncoder;
using AudioSource_t =
std::tuple<OBSWeakSource,
QPointer<QCheckBox>, QPointer<QSpinBox>,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册