UI: Add Multitrack Video support for auto config

This commit is contained in:
Ruwen Hahn
2024-06-04 20:50:46 -04:00
committed by Ryan Foster
parent 3f1362f7e7
commit 2007b4b844
5 changed files with 368 additions and 91 deletions
+68 -6
View File
@@ -280,6 +280,34 @@ void AutoConfigTestPage::TestBandwidthThread()
servers.resize(2);
}
if (!wiz->serviceConfigServers.empty()) {
if (wiz->service == AutoConfig::Service::Twitch &&
wiz->twitchAuto) {
// servers from Twitch service config replace the "auto" entry
servers.erase(servers.begin());
}
for (auto it = std::rbegin(wiz->serviceConfigServers);
it != std::rend(wiz->serviceConfigServers); it++) {
auto same_server = std::find_if(
std::begin(servers), std::end(servers),
[&](const ServerInfo &si) {
return si.address == it->address;
});
if (same_server != std::end(servers))
servers.erase(same_server);
servers.emplace(std::begin(servers), it->name.c_str(),
it->address.c_str());
}
if (wiz->service == AutoConfig::Service::Twitch &&
wiz->twitchAuto) {
// see above, only test 3 servers
// rtmps urls are currently counted as separate servers
servers.resize(3);
}
}
/* -----------------------------------*/
/* apply service settings */
@@ -287,6 +315,11 @@ void AutoConfigTestPage::TestBandwidthThread()
obs_service_apply_encoder_settings(service, vencoder_settings,
aencoder_settings);
if (wiz->multitrackVideo.testSuccessful) {
obs_data_set_int(vencoder_settings, "bitrate",
wiz->startingBitrate);
}
/* -----------------------------------*/
/* create output */
@@ -823,6 +856,10 @@ bool AutoConfigTestPage::TestSoftwareEncoding()
upperBitrate /= 100;
}
if (wiz->testMultitrackVideo && wiz->multitrackVideo.testSuccessful &&
!wiz->multitrackVideo.bitrate.has_value())
wiz->multitrackVideo.bitrate = wiz->idealBitrate;
if (wiz->idealBitrate > upperBitrate)
wiz->idealBitrate = upperBitrate;
@@ -1080,6 +1117,11 @@ void AutoConfigTestPage::FinalizeResults()
OBSDataAutoRelease service_settings = obs_data_create();
OBSDataAutoRelease vencoder_settings = obs_data_create();
if (wiz->testMultitrackVideo &&
wiz->multitrackVideo.testSuccessful &&
!wiz->multitrackVideo.bitrate.has_value())
wiz->multitrackVideo.bitrate = wiz->idealBitrate;
obs_data_set_int(vencoder_settings, "bitrate",
wiz->idealBitrate);
@@ -1121,12 +1163,30 @@ void AutoConfigTestPage::FinalizeResults()
form->addRow(newLabel("Basic.AutoConfig.StreamPage.Server"),
new QLabel(wiz->serverName.c_str(),
ui->finishPage));
form->addRow(newLabel("Basic.Settings.Output.VideoBitrate"),
new QLabel(QString::number(wiz->idealBitrate),
ui->finishPage));
form->addRow(newLabel(TEST_RESULT_SE),
new QLabel(encName(wiz->streamingEncoder),
ui->finishPage));
form->addRow(
newLabel("Basic.Settings.Stream.MultitrackVideoLabel"),
newLabel(wiz->multitrackVideo.testSuccessful ? "Yes"
: "No"));
if (wiz->multitrackVideo.testSuccessful) {
form->addRow(
newLabel("Basic.Settings.Output.VideoBitrate"),
newLabel("Automatic"));
form->addRow(newLabel(TEST_RESULT_SE),
newLabel("Automatic"));
form->addRow(
newLabel(
"Basic.AutoConfig.TestPage.Result.StreamingResolution"),
newLabel("Automatic"));
} else {
form->addRow(
newLabel("Basic.Settings.Output.VideoBitrate"),
new QLabel(QString::number(wiz->idealBitrate),
ui->finishPage));
form->addRow(newLabel(TEST_RESULT_SE),
new QLabel(encName(wiz->streamingEncoder),
ui->finishPage));
}
}
QString baseRes =
@@ -1168,6 +1228,8 @@ void AutoConfigTestPage::FinalizeResults()
new QLabel(scaleRes, ui->finishPage));
form->addRow(newLabel("Basic.Settings.Video.FPS"),
new QLabel(fpsStr, ui->finishPage));
// FIXME: form layout is super squished, probably need to set proper sizepolicy on all widgets?
}
#define STARTING_SEPARATOR \