mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-19 20:32:15 +02:00
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.
This commit is contained in:
parent
df04dd077b
commit
50e1ec585d
@ -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>,
|
||||
|
Loading…
Reference in New Issue
Block a user