Skip to content

Commit

Permalink
Merge pull request obsproject#155 from amazon-contributing/ruwen/rena…
Browse files Browse the repository at this point in the history
…me-multitrack-video

      UI: Rename simulcast to multitrack video
  • Loading branch information
palana authored Jan 11, 2024
2 parents 9fdec4b + 6e59a6d commit bf54127
Show file tree
Hide file tree
Showing 25 changed files with 403 additions and 377 deletions.
8 changes: 4 additions & 4 deletions UI/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,16 +102,16 @@ target_sources(
immutable-date-time.hpp
ivs-events.cpp
ivs-events.hpp
multitrack-video-error.cpp
multitrack-video-error.hpp
multitrack-video-output.cpp
multitrack-video-output.hpp
presentmon-csv-capture.cpp
presentmon-csv-capture.hpp
presentmon-csv-parser.cpp
presentmon-csv-parser.hpp
qt-helpers.cpp
qt-helpers.hpp
simulcast-error.cpp
simulcast-error.hpp
simulcast-output.cpp
simulcast-output.hpp
system-info.hpp)

if(OS_WINDOWS)
Expand Down
16 changes: 9 additions & 7 deletions UI/api-interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -469,13 +469,15 @@ struct OBSStudioAPI : obs_frontend_callbacks {

obs_output_t *obs_frontend_get_streaming_output(void) override
{
auto simulcast = main->outputHandler->simulcast.get();
auto simOutput = simulcast
? obs_output_get_ref(
simulcast->StreamingOutput())
: nullptr;
if (simOutput)
return simOutput;
auto multitrackVideo =
main->outputHandler->multitrackVideo.get();
auto mtvOutput =
multitrackVideo
? obs_output_get_ref(
multitrackVideo->StreamingOutput())
: nullptr;
if (mtvOutput)
return mtvOutput;

OBSOutput output = main->outputHandler->streamOutput.Get();
return obs_output_get_ref(output);
Expand Down
8 changes: 4 additions & 4 deletions UI/cmake/legacy.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -300,16 +300,16 @@ target_sources(
immutable-date-time.hpp
ivs-events.cpp
ivs-events.hpp
multitrack-video-error.cpp
multitrack-video-error.hpp
multitrack-video-output.cpp
multitrack-video-output.hpp
presentmon-csv-capture.cpp
presentmon-csv-capture.hpp
presentmon-csv-parser.cpp
presentmon-csv-parser.hpp
qt-helpers.cpp
qt-helpers.hpp
simulcast-error.cpp
simulcast-error.hpp
simulcast-output.cpp
simulcast-output.hpp
system-info.hpp)

target_sources(obs PRIVATE importers/importers.cpp importers/importers.hpp importers/classic.cpp importers/sl.cpp
Expand Down
28 changes: 14 additions & 14 deletions UI/data/locale/en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Prefer hardware encoding"
Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardware Encoding eliminates most CPU usage, but may require more bitrate to obtain the same level of quality."
Basic.AutoConfig.StreamPage.StreamWarning.Title="Stream warning"
Basic.AutoConfig.StreamPage.StreamWarning.Text="The bandwidth test is about to stream randomized video data without audio to your channel. If you're able, it's recommended to temporarily turn off saving videos of streams and set the stream to private until after the test has completed. Continue?"
Basic.AutoConfig.StreamPage.UseSimulcast="Test Enhanced Broadcasting"
Basic.AutoConfig.StreamPage.UseMultitrackVideo="Test Enhanced Broadcasting"
Basic.AutoConfig.TestPage="Final Results"
Basic.AutoConfig.TestPage.SubTitle.Testing="The program is now executing a set of tests to estimate the ideal settings"
Basic.AutoConfig.TestPage.SubTitle.Complete="Testing complete"
Expand Down Expand Up @@ -953,14 +953,14 @@ Basic.Settings.Stream.Recommended.MaxVideoBitrate="Maximum Video Bitrate: %1 kbp
Basic.Settings.Stream.Recommended.MaxAudioBitrate="Maximum Audio Bitrate: %1 kbps"
Basic.Settings.Stream.Recommended.MaxResolution="Maximum Resolution: %1"
Basic.Settings.Stream.Recommended.MaxFPS="Maximum FPS: %1"
Basic.Settings.Stream.EnableSimulcast="Enable Enhanced Broadcasting"
Basic.Settings.Stream.SimulcastMaximumAggregateBitrate="Maximum Bitrate"
Basic.Settings.Stream.SimulcastMaximumAggregateBitrateAuto="Auto"
Basic.Settings.Stream.SimulcastReservedEncoderSessions="Reserved Encoder Sessions"
Basic.Settings.Stream.SimulcastReservedEncoderSessionsAuto="Auto"
Basic.Settings.Stream.SimulcastConfigOverride="Config Override (JSON)"
Basic.Settings.Stream.SimulcastConfigOverrideEnable="Enable Config Override"
Basic.Settings.Stream.SimulcastLabel="Enhanced Broadcasting"
Basic.Settings.Stream.EnableMultitrackVideo="Enable Enhanced Broadcasting"
Basic.Settings.Stream.MultitrackVideoMaximumAggregateBitrate="Maximum Bitrate"
Basic.Settings.Stream.MultitrackVideoMaximumAggregateBitrateAuto="Auto"
Basic.Settings.Stream.MultitrackVideoReservedEncoderSessions="Reserved Encoder Sessions"
Basic.Settings.Stream.MultitrackVideoReservedEncoderSessionsAuto="Auto"
Basic.Settings.Stream.MultitrackVideoConfigOverride="Config Override (JSON)"
Basic.Settings.Stream.MultitrackVideoConfigOverrideEnable="Enable Config Override"
Basic.Settings.Stream.MultitrackVideoLabel="Enhanced Broadcasting"
Basic.Settings.Stream.SpecifyCustomServer="Specify Custom Server..."
Basic.Settings.Stream.ServiceCustomServer="Custom Server"
Basic.Settings.Stream.ServiceCustomStreamKey="Custom Stream Key"
Expand Down Expand Up @@ -1548,7 +1548,7 @@ YouTube.Errors.rateLimitExceeded="You are sending messages too quickly."
YouTube.DocksRemoval.Title="Clear Legacy YouTube Browser Docks"
YouTube.DocksRemoval.Text="These browser docks will be removed as deprecated:\n\n%1\nUse \"Docks/YouTube Live Control Room\" instead."

# Simulcast
# MultitrackVideo
ConfigDownloadError.Title="%s Go Live Config Download Error"
ConfigDownload.WarningMessageTitle="Warning"
FailedToStartStream.Title="Failed to start stream"
Expand All @@ -1559,8 +1559,8 @@ FailedToStartStream.NoCustomRTMPURLInSettings="Custom RTMP URL not specified"
FailedToStartStream.InvalidCustomConfig="Invalid custom config"
FailedToStartStream.CustomConfigURLInvalidConfig="Custom config URL returned invalid config, check log for details"
FailedToStartStream.GoLiveConfigInvalid="API returned invalid config; try again later"
FailedToStartStream.FailedToCreateSimulcastService="Failed to create simulcast service"
FailedToStartStream.FailedToCreateSimulcastOutput="Failed to create simulcast rtmp output"
FailedToStartStream.FailedToCreateMultitrackVideoService="Failed to create multitrack video service"
FailedToStartStream.FailedToCreateMultitrackVideoOutput="Failed to create multitrack video rtmp output"
FailedToStartStream.EncoderNotAvailable="NVENC not available.\n\nFailed to find encoder type '%1'"
FailedToStartStream.FailedToCreateVideoEncoder="Failed to create video encoder '%1' (type: '%2')"
FailedToStartStream.FailedToGetOBSVideoInfo="Failed to get obs video info while creating encoder '%1' (type: '%2')"
Expand All @@ -1569,7 +1569,7 @@ FailedToStartStream.OBSOutputStartFailed="Failed to start stream (obs_output_sta
FailedToStartStream.NoRTMPURLInConfig="Config does not contain stream target RTMP(S) URL"
FailedToStartStream.FallbackToDefault="Starting the stream using Enhanced Broadcasting failed; do you want to retry using single encode settings?"
FailedToStartStream.ConfigRequestFailed="Could not fetch config from %1<br><br>HTTP error: %2"
FailedToStartStream.WarningRetryNonSimulcast="\n<br><br>\nDo you want to continue streaming without Enhanced Broadcasting?"
FailedToStartStream.WarningRetryNonMultitrackVideo="\n<br><br>\nDo you want to continue streaming without Enhanced Broadcasting?"
FailedToStartStream.WarningRetry="\n<br><br>\nDo you want to continue streaming?"
FailedToStartStream.MissingEncoderConfigs="Go live config did not include encoder configurations"
Simulcast.InfoTest="Enhanced Broadcasting automatically optimizes your settings to encode and send multiple video qualities to %1, powering the best possible viewer experience. Selecting this option will send %1 information about your computer and software setup. <a href='https://help.twitch.tv/s/article/multiple-encodes'>Learn More</a>"
MultitrackVideo.InfoTest="Enhanced Broadcasting automatically optimizes your settings to encode and send multiple video qualities to %1, powering the best possible viewer experience. Selecting this option will send %1 information about your computer and software setup. <a href='https://help.twitch.tv/s/article/multiple-encodes'>Learn More</a>"
8 changes: 4 additions & 4 deletions UI/forms/AutoConfigStreamPage.ui
Original file line number Diff line number Diff line change
Expand Up @@ -380,9 +380,9 @@
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="simulcastInfo">
<widget class="QLabel" name="multitrackVideoInfo">
<property name="text">
<string>Simulcast.InfoTest</string>
<string>MultitrackVideo.InfoTest</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
Expand All @@ -399,9 +399,9 @@
</widget>
</item>
<item row="6" column="1">
<widget class="QCheckBox" name="useSimulcast">
<widget class="QCheckBox" name="useMultitrackVideo">
<property name="text">
<string>Basic.AutoConfig.StreamPage.UseSimulcast</string>
<string>Basic.AutoConfig.StreamPage.UseMultitrackVideo</string>
</property>
<property name="checked">
<bool>true</bool>
Expand Down
38 changes: 19 additions & 19 deletions UI/forms/OBSBasicSettings.ui
Original file line number Diff line number Diff line change
Expand Up @@ -1433,9 +1433,9 @@
</widget>
</item>
<item row="14" column="1">
<widget class="QLabel" name="simulcastInfo">
<widget class="QLabel" name="multitrackVideoInfo">
<property name="text">
<string>Simulcast.Info</string>
<string>MultitrackVideo.Info</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
Expand All @@ -1449,33 +1449,33 @@
</widget>
</item>
<item row="15" column="1">
<widget class="QCheckBox" name="enableSimulcast">
<widget class="QCheckBox" name="enableMultitrackVideo">
<property name="text">
<string>Basic.Settings.Stream.EnableSimulcast</string>
<string>Basic.Settings.Stream.EnableMultitrackVideo</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="simulcastMaximumAggregateBitrateLabel">
<widget class="QLabel" name="multitrackVideoMaximumAggregateBitrateLabel">
<property name="text">
<string>Basic.Settings.Stream.SimulcastMaximumAggregateBitrate</string>
<string>Basic.Settings.Stream.MultitrackVideoMaximumAggregateBitrate</string>
</property>
</widget>
</item>
<item row="16" column="1">
<layout class="QHBoxLayout">
<item>
<widget class="QCheckBox" name="simulcastMaximumAggregateBitrateAuto">
<widget class="QCheckBox" name="multitrackVideoMaximumAggregateBitrateAuto">
<property name="text">
<string>Basic.Settings.Stream.SimulcastMaximumAggregateBitrateAuto</string>
<string>Basic.Settings.Stream.MultitrackVideoMaximumAggregateBitrateAuto</string>
</property>
<property name="sizePolicy">
<enum>QSizePolicy::Minimum, QSizePolicy::Minimum</enum>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="simulcastMaximumAggregateBitrate">
<widget class="QSpinBox" name="multitrackVideoMaximumAggregateBitrate">
<property name="sizePolicy">
<enum>QSizePolicy::MinimumExpanding, QSizePolicy::Minimum</enum>
</property>
Expand All @@ -1493,26 +1493,26 @@
</layout>
</item>
<item row="17" column="0">
<widget class="QLabel" name="simulcastReservedEncoderSessionsLabel">
<widget class="QLabel" name="multitrackVideoReservedEncoderSessionsLabel">
<property name="text">
<string>Basic.Settings.Stream.SimulcastReservedEncoderSessions</string>
<string>Basic.Settings.Stream.MultitrackVideoReservedEncoderSessions</string>
</property>
</widget>
</item>
<item row="17" column="1">
<layout class="QHBoxLayout">
<item>
<widget class="QCheckBox" name="simulcastReservedEncoderSessionsAuto">
<widget class="QCheckBox" name="multitrackVideoReservedEncoderSessionsAuto">
<property name="text">
<string>Basic.Settings.Stream.SimulcastReservedEncoderSessionsAuto</string>
<string>Basic.Settings.Stream.MultitrackVideoReservedEncoderSessionsAuto</string>
</property>
<property name="sizePolicy">
<enum>QSizePolicy::Minimum, QSizePolicy::Minimum</enum>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="simulcastReservedEncoderSessions">
<widget class="QSpinBox" name="multitrackVideoReservedEncoderSessions">
<property name="sizePolicy">
<enum>QSizePolicy::MinimumExpanding, QSizePolicy::Minimum</enum>
</property>
Expand All @@ -1530,21 +1530,21 @@
</layout>
</item>
<item row="18" column="1">
<widget class="QCheckBox" name="simulcastConfigOverrideEnable">
<widget class="QCheckBox" name="multitrackVideoConfigOverrideEnable">
<property name="text">
<string>Basic.Settings.Stream.SimulcastConfigOverrideEnable</string>
<string>Basic.Settings.Stream.MultitrackVideoConfigOverrideEnable</string>
</property>
</widget>
</item>
<item row="19" column="0">
<widget class="QLabel" name="simulcastConfigOverrideLabel">
<widget class="QLabel" name="multitrackVideoConfigOverrideLabel">
<property name="text">
<string>Basic.Settings.Stream.SimulcastConfigOverride</string>
<string>Basic.Settings.Stream.MultitrackVideoConfigOverride</string>
</property>
</widget>
</item>
<item row="19" column="1">
<widget class="QPlainTextEdit" name="simulcastConfigOverride">
<widget class="QPlainTextEdit" name="multitrackVideoConfigOverride">
<property name="sizePolicy">
<enum>QSizePolicy::Preferred, QSizePolicy::MinimumExpanding</enum>
</property>
Expand Down
14 changes: 7 additions & 7 deletions UI/goliveapi-network.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <obs.hpp>
#include <obs-app.hpp>
#include <remote-text.hpp>
#include "simulcast-error.hpp"
#include "multitrack-video-error.hpp"

#include <qstring.h>
#include <string>
Expand Down Expand Up @@ -35,7 +35,7 @@ void HandleGoLiveApiErrors(QWidget *parent, obs_data_t *config_data)
obs_data_get_array(config_data,
"encoder_configurations");
if (obs_data_array_count(encoder_configurations) == 0)
throw SimulcastError::warning(html_en_us);
throw MultitrackVideoError::warning(html_en_us);
else {
bool ret = false;
QMetaObject::invokeMethod(
Expand All @@ -57,10 +57,10 @@ void HandleGoLiveApiErrors(QWidget *parent, obs_data_t *config_data)
},
BlockingConnectionTypeFor(parent), &ret);
if (ret)
throw SimulcastError::cancel();
throw MultitrackVideoError::cancel();
}
} else if (strncmp(result, "error", 6) == 0) {
throw SimulcastError::critical(html_en_us);
throw MultitrackVideoError::critical(html_en_us);
}
}

Expand All @@ -71,7 +71,7 @@ OBSDataAutoRelease DownloadGoLiveConfig(QWidget *parent, QString url,
censoredJson(postData_).toUtf8().constData());

if (url.isEmpty())
throw SimulcastError::critical(
throw MultitrackVideoError::critical(
QTStr("FailedToStartStream.MissingConfigURL"));

// andrew download code start
Expand All @@ -92,7 +92,7 @@ OBSDataAutoRelease DownloadGoLiveConfig(QWidget *parent, QString url,
5); // timeout in seconds

if (!encodeConfigDownloadedOk)
throw SimulcastError::warning(
throw MultitrackVideoError::warning(
QTStr("FailedToStartStream.ConfigRequestFailed")
.arg(url, libraryError.c_str()));

Expand All @@ -118,7 +118,7 @@ OBSDataAutoRelease DownloadGoLiveConfig(QWidget *parent, QString url,
return OBSData{encodeConfigObsData};
}

QString SimulcastAutoConfigURL(obs_service_t *service)
QString MultitrackVideoAutoConfigURL(obs_service_t *service)
{
static const QString url = [service]() -> QString {
auto args = qApp->arguments();
Expand Down
2 changes: 1 addition & 1 deletion UI/goliveapi-network.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include <QString>

/** Returns either GO_LIVE_API_PRODUCTION_URL or a command line override. */
QString SimulcastAutoConfigURL(obs_service_t *service);
QString MultitrackVideoAutoConfigURL(obs_service_t *service);

class QWidget;

Expand Down
12 changes: 6 additions & 6 deletions UI/simulcast-error.cpp → UI/multitrack-video-error.cpp
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
#include "simulcast-error.hpp"
#include "multitrack-video-error.hpp"

#include <QMessageBox>
#include "obs-app.hpp"

SimulcastError SimulcastError::critical(QString error)
MultitrackVideoError MultitrackVideoError::critical(QString error)
{
return {Type::Critical, error};
}

SimulcastError SimulcastError::warning(QString error)
MultitrackVideoError MultitrackVideoError::warning(QString error)
{
return {Type::Warning, error};
}

SimulcastError SimulcastError::cancel()
MultitrackVideoError MultitrackVideoError::cancel()
{
return {Type::Cancel, {}};
}

bool SimulcastError::ShowDialog(QWidget *parent) const
bool MultitrackVideoError::ShowDialog(QWidget *parent) const
{
QMessageBox mb(parent);
mb.setTextFormat(Qt::RichText);
Expand All @@ -27,7 +27,7 @@ bool SimulcastError::ShowDialog(QWidget *parent) const
if (type == Type::Warning) {
mb.setText(
error +
QTStr("FailedToStartStream.WarningRetryNonSimulcast"));
QTStr("FailedToStartStream.WarningRetryNonMultitrackVideo"));
mb.setIcon(QMessageBox::Warning);
mb.setStandardButtons(QMessageBox::StandardButton::Yes |
QMessageBox::StandardButton::No);
Expand Down
8 changes: 4 additions & 4 deletions UI/simulcast-error.hpp → UI/multitrack-video-error.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@

class QWidget;

struct SimulcastError {
static SimulcastError critical(QString error);
static SimulcastError warning(QString error);
static SimulcastError cancel();
struct MultitrackVideoError {
static MultitrackVideoError critical(QString error);
static MultitrackVideoError warning(QString error);
static MultitrackVideoError cancel();

bool ShowDialog(QWidget *parent) const;

Expand Down
Loading

0 comments on commit bf54127

Please sign in to comment.