Skip to content

Commit

Permalink
enable dual stream
Browse files Browse the repository at this point in the history
  • Loading branch information
sbd021 committed Aug 19, 2021
1 parent fb83f6e commit db4039a
Show file tree
Hide file tree
Showing 9 changed files with 102 additions and 72 deletions.
3 changes: 2 additions & 1 deletion data/locale/en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,5 @@ Agora.Network.Testing="Network testing ......"
Agora.Network.Testing.Info="You are testing network. Stop testing network first."
Basic.Settings.Agora.Save.PCM="Save OBS PCM Data(in the path of obs logs)"
Agora.System.CPU.Infomation="High CPU load detected, this may cause audio malfunction and influence stream experience. Please try ending irrelevant applications to reduce CPU usage."
Agora.CPU.Threshold="CPU Threshold"
Agora.CPU.Threshold="CPU Threshold"
Agora.Settings.DualStream="Dual Stream"
3 changes: 2 additions & 1 deletion data/locale/zh-CN.ini
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,5 @@ Agora.Network.Testing="测试中......"
Agora.Network.Testing.Info="网络测试中,请先停止网络测试。"
Basic.Settings.Agora.Save.PCM="保存音频原始数据(在obs的日志路径下)"
Agora.System.CPU.Infomation="当前 CPU 负载过高,可能导致直播中音频异常,影响直播体验。请退出所有暂时无关的软件,以确保CPU负载维持正常水平。"
Agora.CPU.Threshold="CPU阈值"
Agora.CPU.Threshold="CPU阈值"
Agora.Settings.DualStream="发送大小流"
3 changes: 2 additions & 1 deletion data/locale/zh-TW.ini
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,5 @@ Agora.Network.Testing="測試中......"
Agora.Network.Testing.Info="正在測試網絡,請先停止測試。"
Basic.Settings.Agora.Save.PCM="保存音頻原始數據(在obs的日志路徑下)"
Agora.System.CPU.Infomation="當前CPU 負載過高,可能導致直播中音頻異常,影響直播體驗。請退出所有暫時無關的軟體,以確保 CPU 負載維持正常水平。"
Agora.CPU.Threshold="CPU閾值"
Agora.CPU.Threshold="CPU閾值"
Agora.Settings.DualStream="發送大小流"
5 changes: 4 additions & 1 deletion src/Agora/agorartcengine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@ void AgoraRtcEngine::SetRecordBoost()
}

int AgoraRtcEngine::joinChannel(const std::string &key,
const std::string &channel, unsigned int uid, bool muteAudio , bool muteVideo)
const std::string &channel, unsigned int uid, bool enableDual, bool muteAudio , bool muteVideo)
{
if (m_bJoinChannel)
return 0;
Expand All @@ -412,6 +412,9 @@ int AgoraRtcEngine::joinChannel(const std::string &key,
options.autoSubscribeAudio = muteAudio;
options.autoSubscribeVideo = muteVideo;

if (enableDual)
m_rtcEngine->enableDualStreamMode(true);

int r = m_rtcEngine->joinChannel(key.data(), channel.data(), "", uid, options);//
return r;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Agora/agorartcengine.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class AgoraRtcEngine : public QObject
void stopPreview();
void SetRecordBoost();
int joinChannel(const std::string &key, const std::string &channel,
unsigned uid, bool muteAudio = true, bool muteVideo = true);
unsigned uid, bool enableDual, bool muteAudio = true, bool muteVideo = true);
int leaveChannel();

bool keepPreRotation(bool bRotate);
Expand Down
141 changes: 74 additions & 67 deletions src/forms/AgoraSettings.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>859</width>
<width>857</width>
<height>512</height>
</rect>
</property>
Expand Down Expand Up @@ -81,7 +81,7 @@
<item>
<widget class="QStackedWidget" name="settingsPages">
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="agoraPage">
<layout class="QVBoxLayout" name="verticalLayout_16">
Expand Down Expand Up @@ -113,7 +113,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>564</width>
<width>679</width>
<height>435</height>
</rect>
</property>
Expand Down Expand Up @@ -267,13 +267,6 @@
</item>
</layout>
</item>
<item row="17" column="1">
<widget class="QCheckBox" name="chkAutoLoadConfig">
<property name="text">
<string>Basic.Agora.AutoLoadConfig</string>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QCheckBox" name="chkPersistSaving">
<property name="text">
Expand Down Expand Up @@ -340,6 +333,20 @@
</property>
</widget>
</item>
<item row="17" column="0">
<widget class="QCheckBox" name="chkDualStream">
<property name="text">
<string>Agora.Settings.DualStream</string>
</property>
</widget>
</item>
<item row="17" column="1">
<widget class="QCheckBox" name="chkAutoLoadConfig">
<property name="text">
<string>Basic.Agora.AutoLoadConfig</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
Expand Down Expand Up @@ -1074,8 +1081,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>698</width>
<height>423</height>
<width>650</width>
<height>241</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_50">
Expand Down Expand Up @@ -1321,6 +1328,34 @@
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="1" column="0">
<widget class="QLabel" name="labelVideoEncoder">
<property name="text">
<string>Agora.Settings.Video.Encoder</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cmbVideoEncoder">
<item>
<property name="text">
<string>Agora.Settings.Video.Agora.Bitrate</string>
</property>
</item>
<item>
<property name="text">
<string>Agora.Settings.Video.OBS.Bitrate</string>
</property>
</item>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="labelFPSResolution">
<property name="text">
<string>Agora.Settings.Video.FPS.Resolution</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="minimumSize">
Expand Down Expand Up @@ -1383,39 +1418,6 @@
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Agora.Settings.Video.Birate</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Agora.Settings.Video.Devices</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="videoMsg">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="themeID" stdset="0">
<string>error</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="cmbAgoraFPS">
<property name="sizePolicy">
Expand Down Expand Up @@ -1464,6 +1466,13 @@
</item>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Agora.Settings.Video.Birate</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="cmbAgoraBitrate">
<item>
Expand All @@ -1483,34 +1492,32 @@
</item>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="cmbAgoraVideoDevice"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelVideoEncoder">
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Agora.Settings.Video.Encoder</string>
<string>Agora.Settings.Video.Devices</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cmbVideoEncoder">
<item>
<property name="text">
<string>Agora.Settings.Video.Agora.Bitrate</string>
</property>
</item>
<item>
<property name="text">
<string>Agora.Settings.Video.OBS.Bitrate</string>
</property>
</item>
</widget>
<item row="6" column="1">
<widget class="QComboBox" name="cmbAgoraVideoDevice"/>
</item>
<item row="2" column="1">
<widget class="QLabel" name="labelFPSResolution">
<item row="7" column="1">
<widget class="QLabel" name="videoMsg">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Agora.Settings.Video.FPS.Resolution</string>
<string notr="true"/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="themeID" stdset="0">
<string>error</string>
</property>
</widget>
</item>
Expand Down
4 changes: 4 additions & 0 deletions src/forms/window-agora-main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ void AgoraBasic::InitBasicConfig()
m_agoraToolSettings.obs_bitrate = config_get_int(globalAgoraConfig, "AgoraTool", "obs_bitrate");
m_agoraToolSettings.videoEncoder = config_get_int(globalAgoraConfig, "AgoraTool", "videoEncoder");
m_agoraToolSettings.muteAllRemoteAudioVideo = config_get_bool(globalAgoraConfig, "AgoraTool", "muteAllRemoteAudioVideo");
m_agoraToolSettings.bDualStream = config_get_bool(globalAgoraConfig, "AgoraTool", "DualStream");
m_agoraToolSettings.bHighQuality = config_get_bool(globalAgoraConfig, "AgoraTool", "bHighQuality");
if (config_has_user_value(globalAgoraConfig, "AgoraTool", "InformationMode"))
m_agoraToolSettings.info_mode = config_get_int(globalAgoraConfig, "AgoraTool", "InformationMode");
Expand Down Expand Up @@ -326,6 +327,8 @@ AgoraBasic::~AgoraBasic()
config_set_int(globalAgoraConfig, "AgoraTool", "CPUThreshold", m_agoraToolSettings.cpuThreshold);

config_set_bool(globalAgoraConfig, "AgoraTool", "muteAllRemoteAudioVideo", m_agoraToolSettings.muteAllRemoteAudioVideo);
config_set_bool(globalAgoraConfig, "AgoraTool", "DualStream", m_agoraToolSettings.bDualStream);

config_set_bool(globalAgoraConfig, "AgoraTool", "bHighQuality", m_agoraToolSettings.bHighQuality);
config_set_bool(globalAgoraConfig, "AgoraTool", "savePersist", m_agoraToolSettings.savePersist);
config_set_string(globalAgoraConfig, "AgoraTool", "InformationUrl", m_agoraToolSettings.information_url.c_str());
Expand Down Expand Up @@ -356,6 +359,7 @@ AgoraBasic::~AgoraBasic()
config_set_int(globalAgoraConfig, "AgoraTool", "CPUThreshold", 0);

config_set_bool(globalAgoraConfig, "AgoraTool", "muteAllRemoteAudioVideo", false);
config_set_bool(globalAgoraConfig, "AgoraTool", "DualStream", false);
config_set_bool(globalAgoraConfig, "AgoraTool", "bHighQuality", false);
config_set_bool(globalAgoraConfig, "AgoraTool", "savePersist", false);
}
Expand Down
2 changes: 2 additions & 0 deletions src/forms/window-agora-main.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ typedef struct tagAgoraToolSettings {
bool SavePCM = false;

int cpuThreshold = 95;

bool bDualStream = false;
} AgoraToolSettings, *PAgoraToolSettings;

class DisplayResizeEvent : public QObject
Expand Down
11 changes: 11 additions & 0 deletions src/forms/window-agora-settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ AgoraSettings::AgoraSettings(QWidget *parent)
ui->loadConfigButton->setText(tr("Basic.Settigs.Agora.LoadConfigButton"));
ui->buttonAppid->setText(tr("Agora.General.Appid.Set"));
ui->labUrl->setText(tr("Agora.Settings.Agora.APPTOKEN.URL"));
ui->chkDualStream->setText(tr("Agora.Settings.DualStream"));

startTestNet = tr("Agora.Setting.TestNet.Start");
stopTestNet = tr("Agora.Setting.TestNet.Stop");
Expand Down Expand Up @@ -238,6 +239,8 @@ AgoraSettings::AgoraSettings(QWidget *parent)
HookWidget(ui->chkPersistSaving, CHECK_CHANGED, GENERAL_CHANGED);
HookWidget(ui->chkMuteAllRemoteAV, CHECK_CHANGED, GENERAL_CHANGED);

HookWidget(ui->chkDualStream, CHECK_CHANGED, GENERAL_CHANGED);

HookWidget(ui->playoutDevices, COMBO_CHANGED, AUDIO_CHANGED);
HookWidget(ui->recordSampleRate, COMBO_CHANGED, AUDIO_CHANGED);
HookWidget(ui->cmbRecordChannelSetup, COMBO_CHANGED, AUDIO_CHANGED);
Expand Down Expand Up @@ -400,6 +403,8 @@ void AgoraSettings::SaveGeneralSettings()
settings.muteAllRemoteAudioVideo = ui->chkMuteAllRemoteAV->isChecked();
settings.savePersistAppid = ui->chkPersistSaveAppid->isChecked();

settings.bDualStream = ui->chkDualStream->isChecked();

main->SetAgoraSetting(settings);

SaveCheckBox(ui->chkPersistSaving, "AgoraSettings", "PersistSave");
Expand Down Expand Up @@ -439,6 +444,10 @@ void AgoraSettings::SaveGeneralSettings()
SaveCheckBox(ui->chkMuteAllRemoteAV, "AgoraSettings",
"MuteAllRemoteAudioVideo",
settings.muteAllRemoteAudioVideo);

SaveCheckBox(ui->chkDualStream, "AgoraSettings",
"DualStream",
settings.bDualStream);
}
}

Expand Down Expand Up @@ -506,6 +515,7 @@ void AgoraSettings::LoadGeneralSettings()
ui->chkPersistSaving->setChecked(settings.savePersist);
ui->chkPersistSaveAppid->setChecked(settings.savePersistAppid);
ui->chkMuteAllRemoteAV->setChecked(settings.muteAllRemoteAudioVideo);
ui->chkDualStream->setChecked(settings.bDualStream);
QString strExpired = QString("%1").arg(settings.expiredTime);
ui->lineEditExpiredTs->setText(strExpired);
loading = false;
Expand Down Expand Up @@ -632,6 +642,7 @@ void AgoraSettings::LoadAgoraSettings()
ui->chkPersistSaving->setChecked(settings.savePersist);
ui->chkPersistSaveAppid->setChecked(settings.savePersistAppid);
ui->chkMuteAllRemoteAV->setChecked(settings.muteAllRemoteAudioVideo);
ui->chkDualStream->setChecked(settings.bDualStream);
QString strExpired = QString("%1").arg(settings.expiredTime);
ui->lineEditExpiredTs->setText(strExpired);
loading = false;
Expand Down

0 comments on commit db4039a

Please sign in to comment.