|
@@ -262,7 +262,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
|
|
|
PopulateAACBitrates({ui->simpleOutputABitrate,
|
|
|
ui->advOutTrack1Bitrate, ui->advOutTrack2Bitrate,
|
|
|
- ui->advOutTrack3Bitrate, ui->advOutTrack4Bitrate});
|
|
|
+ ui->advOutTrack3Bitrate, ui->advOutTrack4Bitrate,
|
|
|
+ ui->advOutTrack5Bitrate, ui->advOutTrack6Bitrate});
|
|
|
|
|
|
ui->listWidget->setAttribute(Qt::WA_MacShowFocusRect, false);
|
|
|
|
|
@@ -310,6 +311,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
HookWidget(ui->advOutTrack2, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutTrack3, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutTrack4, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutTrack5, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutTrack6, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutApplyService, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutRecType, COMBO_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutRecPath, EDIT_CHANGED, OUTPUTS_CHANGED);
|
|
@@ -323,6 +326,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
HookWidget(ui->advOutRecTrack2, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutRecTrack3, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutRecTrack4, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutRecTrack5, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutRecTrack6, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutFFType, COMBO_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutFFRecPath, EDIT_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutFFNoSpace, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
@@ -339,6 +344,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
HookWidget(ui->advOutFFTrack2, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutFFTrack3, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutFFTrack4, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutFFTrack5, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutFFTrack6, CHECK_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutFFAEncoder, COMBO_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutFFACfg, EDIT_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutTrack1Bitrate, COMBO_CHANGED, OUTPUTS_CHANGED);
|
|
@@ -349,6 +356,10 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
HookWidget(ui->advOutTrack3Name, EDIT_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutTrack4Bitrate, COMBO_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->advOutTrack4Name, EDIT_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutTrack5Bitrate, COMBO_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutTrack5Name, EDIT_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutTrack6Bitrate, COMBO_CHANGED, OUTPUTS_CHANGED);
|
|
|
+ HookWidget(ui->advOutTrack6Name, EDIT_CHANGED, OUTPUTS_CHANGED);
|
|
|
HookWidget(ui->channelSetup, COMBO_CHANGED, AUDIO_RESTART);
|
|
|
HookWidget(ui->sampleRate, COMBO_CHANGED, AUDIO_RESTART);
|
|
|
HookWidget(ui->desktopAudioDevice1, COMBO_CHANGED, AUDIO_CHANGED);
|
|
@@ -457,6 +468,10 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
this, SLOT(UpdateStreamDelayEstimate()));
|
|
|
connect(ui->advOutTrack4Bitrate, SIGNAL(currentIndexChanged(int)),
|
|
|
this, SLOT(UpdateStreamDelayEstimate()));
|
|
|
+ connect(ui->advOutTrack5Bitrate, SIGNAL(currentIndexChanged(int)),
|
|
|
+ this, SLOT(UpdateStreamDelayEstimate()));
|
|
|
+ connect(ui->advOutTrack6Bitrate, SIGNAL(currentIndexChanged(int)),
|
|
|
+ this, SLOT(UpdateStreamDelayEstimate()));
|
|
|
|
|
|
//Apply button disabled until change.
|
|
|
EnableApplyButton(false);
|
|
@@ -567,6 +582,10 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
this, SLOT(AdvOutRecCheckWarnings()));
|
|
|
connect(ui->advOutRecTrack4, SIGNAL(clicked()),
|
|
|
this, SLOT(AdvOutRecCheckWarnings()));
|
|
|
+ connect(ui->advOutRecTrack5, SIGNAL(clicked()),
|
|
|
+ this, SLOT(AdvOutRecCheckWarnings()));
|
|
|
+ connect(ui->advOutRecTrack6, SIGNAL(clicked()),
|
|
|
+ this, SLOT(AdvOutRecCheckWarnings()));
|
|
|
AdvOutRecCheckWarnings();
|
|
|
|
|
|
SimpleRecordingQualityChanged();
|
|
@@ -1308,6 +1327,8 @@ void OBSBasicSettings::LoadAdvOutputStreamingSettings()
|
|
|
case 2: ui->advOutTrack2->setChecked(true); break;
|
|
|
case 3: ui->advOutTrack3->setChecked(true); break;
|
|
|
case 4: ui->advOutTrack4->setChecked(true); break;
|
|
|
+ case 5: ui->advOutTrack5->setChecked(true); break;
|
|
|
+ case 6: ui->advOutTrack6->setChecked(true); break;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1402,6 +1423,8 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
|
|
|
ui->advOutRecTrack2->setChecked(tracks & (1<<1));
|
|
|
ui->advOutRecTrack3->setChecked(tracks & (1<<2));
|
|
|
ui->advOutRecTrack4->setChecked(tracks & (1<<3));
|
|
|
+ ui->advOutRecTrack5->setChecked(tracks & (1<<4));
|
|
|
+ ui->advOutRecTrack6->setChecked(tracks & (1<<5));
|
|
|
}
|
|
|
|
|
|
void OBSBasicSettings::LoadAdvOutputRecordingEncoderProperties()
|
|
@@ -1516,6 +1539,8 @@ void OBSBasicSettings::LoadAdvOutputFFmpegSettings()
|
|
|
case 2: ui->advOutFFTrack2->setChecked(true); break;
|
|
|
case 3: ui->advOutFFTrack3->setChecked(true); break;
|
|
|
case 4: ui->advOutFFTrack4->setChecked(true); break;
|
|
|
+ case 5: ui->advOutFFTrack5->setChecked(true); break;
|
|
|
+ case 6: ui->advOutFFTrack6->setChecked(true); break;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1529,6 +1554,10 @@ void OBSBasicSettings::LoadAdvOutputAudioSettings()
|
|
|
"Track3Bitrate");
|
|
|
int track4Bitrate = config_get_uint(main->Config(), "AdvOut",
|
|
|
"Track4Bitrate");
|
|
|
+ int track5Bitrate = config_get_uint(main->Config(), "AdvOut",
|
|
|
+ "Track5Bitrate");
|
|
|
+ int track6Bitrate = config_get_uint(main->Config(), "AdvOut",
|
|
|
+ "Track6Bitrate");
|
|
|
const char *name1 = config_get_string(main->Config(), "AdvOut",
|
|
|
"Track1Name");
|
|
|
const char *name2 = config_get_string(main->Config(), "AdvOut",
|
|
@@ -1537,11 +1566,17 @@ void OBSBasicSettings::LoadAdvOutputAudioSettings()
|
|
|
"Track3Name");
|
|
|
const char *name4 = config_get_string(main->Config(), "AdvOut",
|
|
|
"Track4Name");
|
|
|
+ const char *name5 = config_get_string(main->Config(), "AdvOut",
|
|
|
+ "Track5Name");
|
|
|
+ const char *name6 = config_get_string(main->Config(), "AdvOut",
|
|
|
+ "Track6Name");
|
|
|
|
|
|
track1Bitrate = FindClosestAvailableAACBitrate(track1Bitrate);
|
|
|
track2Bitrate = FindClosestAvailableAACBitrate(track2Bitrate);
|
|
|
track3Bitrate = FindClosestAvailableAACBitrate(track3Bitrate);
|
|
|
track4Bitrate = FindClosestAvailableAACBitrate(track4Bitrate);
|
|
|
+ track5Bitrate = FindClosestAvailableAACBitrate(track5Bitrate);
|
|
|
+ track6Bitrate = FindClosestAvailableAACBitrate(track6Bitrate);
|
|
|
|
|
|
SetComboByName(ui->advOutTrack1Bitrate,
|
|
|
std::to_string(track1Bitrate).c_str());
|
|
@@ -1551,11 +1586,17 @@ void OBSBasicSettings::LoadAdvOutputAudioSettings()
|
|
|
std::to_string(track3Bitrate).c_str());
|
|
|
SetComboByName(ui->advOutTrack4Bitrate,
|
|
|
std::to_string(track4Bitrate).c_str());
|
|
|
+ SetComboByName(ui->advOutTrack5Bitrate,
|
|
|
+ std::to_string(track5Bitrate).c_str());
|
|
|
+ SetComboByName(ui->advOutTrack6Bitrate,
|
|
|
+ std::to_string(track6Bitrate).c_str());
|
|
|
|
|
|
ui->advOutTrack1Name->setText(name1);
|
|
|
ui->advOutTrack2Name->setText(name2);
|
|
|
ui->advOutTrack3Name->setText(name3);
|
|
|
ui->advOutTrack4Name->setText(name4);
|
|
|
+ ui->advOutTrack5Name->setText(name5);
|
|
|
+ ui->advOutTrack6Name->setText(name6);
|
|
|
}
|
|
|
|
|
|
void OBSBasicSettings::LoadOutputSettings()
|
|
@@ -1612,6 +1653,8 @@ void OBSBasicSettings::SetAdvOutputFFmpegEnablement(
|
|
|
ui->advOutFFTrack2->setEnabled(enabled);
|
|
|
ui->advOutFFTrack3->setEnabled(enabled);
|
|
|
ui->advOutFFTrack4->setEnabled(enabled);
|
|
|
+ ui->advOutFFTrack5->setEnabled(enabled);
|
|
|
+ ui->advOutFFTrack6->setEnabled(enabled);
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -2440,12 +2483,16 @@ static void SaveTrackIndex(config_t *config, const char *section,
|
|
|
QAbstractButton *check1,
|
|
|
QAbstractButton *check2,
|
|
|
QAbstractButton *check3,
|
|
|
- QAbstractButton *check4)
|
|
|
+ QAbstractButton *check4,
|
|
|
+ QAbstractButton *check5,
|
|
|
+ QAbstractButton *check6)
|
|
|
{
|
|
|
if (check1->isChecked()) config_set_int(config, section, name, 1);
|
|
|
else if (check2->isChecked()) config_set_int(config, section, name, 2);
|
|
|
else if (check3->isChecked()) config_set_int(config, section, name, 3);
|
|
|
else if (check4->isChecked()) config_set_int(config, section, name, 4);
|
|
|
+ else if (check5->isChecked()) config_set_int(config, section, name, 5);
|
|
|
+ else if (check6->isChecked()) config_set_int(config, section, name, 6);
|
|
|
}
|
|
|
|
|
|
void OBSBasicSettings::SaveFormat(QComboBox *combo)
|
|
@@ -2534,7 +2581,8 @@ void OBSBasicSettings::SaveOutputSettings()
|
|
|
SaveCombo(ui->advOutRescale, "AdvOut", "RescaleRes");
|
|
|
SaveTrackIndex(main->Config(), "AdvOut", "TrackIndex",
|
|
|
ui->advOutTrack1, ui->advOutTrack2,
|
|
|
- ui->advOutTrack3, ui->advOutTrack4);
|
|
|
+ ui->advOutTrack3, ui->advOutTrack4,
|
|
|
+ ui->advOutTrack5, ui->advOutTrack6);
|
|
|
|
|
|
config_set_string(main->Config(), "AdvOut", "RecType",
|
|
|
RecTypeFromIdx(ui->advOutRecType->currentIndex()));
|
|
@@ -2553,7 +2601,9 @@ void OBSBasicSettings::SaveOutputSettings()
|
|
|
(ui->advOutRecTrack1->isChecked() ? (1<<0) : 0) |
|
|
|
(ui->advOutRecTrack2->isChecked() ? (1<<1) : 0) |
|
|
|
(ui->advOutRecTrack3->isChecked() ? (1<<2) : 0) |
|
|
|
- (ui->advOutRecTrack4->isChecked() ? (1<<3) : 0));
|
|
|
+ (ui->advOutRecTrack4->isChecked() ? (1<<3) : 0) |
|
|
|
+ (ui->advOutRecTrack5->isChecked() ? (1<<4) : 0) |
|
|
|
+ (ui->advOutRecTrack6->isChecked() ? (1<<5) : 0));
|
|
|
|
|
|
config_set_bool(main->Config(), "AdvOut", "FFOutputToFile",
|
|
|
ui->advOutFFType->currentIndex() == 0 ? true : false);
|
|
@@ -2572,16 +2622,21 @@ void OBSBasicSettings::SaveOutputSettings()
|
|
|
SaveEdit(ui->advOutFFACfg, "AdvOut", "FFACustom");
|
|
|
SaveTrackIndex(main->Config(), "AdvOut", "FFAudioTrack",
|
|
|
ui->advOutFFTrack1, ui->advOutFFTrack2,
|
|
|
- ui->advOutFFTrack3, ui->advOutFFTrack4);
|
|
|
+ ui->advOutFFTrack3, ui->advOutFFTrack4,
|
|
|
+ ui->advOutFFTrack5, ui->advOutFFTrack6);
|
|
|
|
|
|
SaveCombo(ui->advOutTrack1Bitrate, "AdvOut", "Track1Bitrate");
|
|
|
SaveCombo(ui->advOutTrack2Bitrate, "AdvOut", "Track2Bitrate");
|
|
|
SaveCombo(ui->advOutTrack3Bitrate, "AdvOut", "Track3Bitrate");
|
|
|
SaveCombo(ui->advOutTrack4Bitrate, "AdvOut", "Track4Bitrate");
|
|
|
+ SaveCombo(ui->advOutTrack5Bitrate, "AdvOut", "Track5Bitrate");
|
|
|
+ SaveCombo(ui->advOutTrack6Bitrate, "AdvOut", "Track6Bitrate");
|
|
|
SaveEdit(ui->advOutTrack1Name, "AdvOut", "Track1Name");
|
|
|
SaveEdit(ui->advOutTrack2Name, "AdvOut", "Track2Name");
|
|
|
SaveEdit(ui->advOutTrack3Name, "AdvOut", "Track3Name");
|
|
|
SaveEdit(ui->advOutTrack4Name, "AdvOut", "Track4Name");
|
|
|
+ SaveEdit(ui->advOutTrack5Name, "AdvOut", "Track5Name");
|
|
|
+ SaveEdit(ui->advOutTrack6Name, "AdvOut", "Track6Name");
|
|
|
|
|
|
WriteJsonData(streamEncoderProps, "streamEncoder.json");
|
|
|
WriteJsonData(recordEncoderProps, "recordEncoder.json");
|
|
@@ -3183,7 +3238,9 @@ void OBSBasicSettings::AdvOutRecCheckWarnings()
|
|
|
Checked(ui->advOutRecTrack1) +
|
|
|
Checked(ui->advOutRecTrack2) +
|
|
|
Checked(ui->advOutRecTrack3) +
|
|
|
- Checked(ui->advOutRecTrack4);
|
|
|
+ Checked(ui->advOutRecTrack4) +
|
|
|
+ Checked(ui->advOutRecTrack5) +
|
|
|
+ Checked(ui->advOutRecTrack6);
|
|
|
const char *objectName = nullptr;
|
|
|
|
|
|
if (tracks == 0) {
|
|
@@ -3241,6 +3298,8 @@ void OBSBasicSettings::UpdateAdvOutStreamDelayEstimate()
|
|
|
case 2: aBitrateText = ui->advOutTrack2Bitrate->currentText(); break;
|
|
|
case 3: aBitrateText = ui->advOutTrack3Bitrate->currentText(); break;
|
|
|
case 4: aBitrateText = ui->advOutTrack4Bitrate->currentText(); break;
|
|
|
+ case 5: aBitrateText = ui->advOutTrack5Bitrate->currentText(); break;
|
|
|
+ case 6: aBitrateText = ui->advOutTrack6Bitrate->currentText(); break;
|
|
|
}
|
|
|
|
|
|
int seconds = ui->streamDelaySec->value();
|