summaryrefslogtreecommitdiff
path: root/indra/llwebrtc/llwebrtc.cpp
diff options
context:
space:
mode:
authorRoxie Linden <roxie@lindenlab.com>2023-12-04 14:22:40 -0800
committerRoxie Linden <roxie@lindenlab.com>2024-02-08 18:34:01 -0800
commite92e4d762ec5b2c122f17edb1a18b21ef6166e8b (patch)
treeb5b6c918865415c0d0729c9af9a304e201a87d2d /indra/llwebrtc/llwebrtc.cpp
parentb10731f6f9f357907b7ba53d7531cfa3552c46cf (diff)
Mute using enable.
Muting using the device module microphone mute was muting other applications, speakers, and so on. Instead, we mute by enabling/disabling the input and output streams.
Diffstat (limited to 'indra/llwebrtc/llwebrtc.cpp')
-rw-r--r--indra/llwebrtc/llwebrtc.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/indra/llwebrtc/llwebrtc.cpp b/indra/llwebrtc/llwebrtc.cpp
index 2bcbb135c0..9fd8fd8ee6 100644
--- a/indra/llwebrtc/llwebrtc.cpp
+++ b/indra/llwebrtc/llwebrtc.cpp
@@ -287,16 +287,11 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
break;
}
}
- mTuningDeviceModule->SetSpeakerMute(true);
bool was_tuning_playing = mTuningDeviceModule->Playing();
if (was_tuning_playing)
{
mTuningDeviceModule->StopPlayout();
}
- if (mPeerDeviceModule)
- {
- mPeerDeviceModule->SetSpeakerMute(true);
- }
mTuningDeviceModule->SetPlayoutDevice(tuningPlayoutDevice);
mTuningDeviceModule->InitSpeaker();
@@ -326,10 +321,8 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
mPeerDeviceModule->InitSpeaker();
mPeerDeviceModule->InitPlayout();
mPeerDeviceModule->StartPlayout();
- mPeerDeviceModule->SetSpeakerMute(false);
}
- mTuningDeviceModule->SetSpeakerMute(false);
});
}
@@ -369,29 +362,25 @@ void LLWebRTCImpl::setTuningMode(bool enable)
{
mTuningDeviceModule->StartRecording();
- mTuningDeviceModule->SetMicrophoneMute(false);
-
-
- mTuningDeviceModule->SetSpeakerMute(false);
if (mPeerDeviceModule)
{
mPeerDeviceModule->StopRecording();
- mPeerDeviceModule->SetSpeakerMute(true);
}
}
else
{
+ mTuningDeviceModule->StartRecording();
if (mPeerDeviceModule)
{
mPeerDeviceModule->StartRecording();
- mPeerDeviceModule->SetSpeakerMute(false);
}
}
});
for (auto& connection : mPeerConnections)
{
- connection->enableTracks(enable ? false : !mMute);
+ connection->enableSenderTracks(enable ? false : !mMute);
+ connection->enableReceiverTracks(!enable);
}
}
@@ -409,7 +398,7 @@ LLWebRTCPeerConnection * LLWebRTCImpl::newPeerConnection()
peerConnection->init(this);
mPeerConnections.emplace_back(peerConnection);
- peerConnection->enableTracks(!mMute);
+ peerConnection->enableSenderTracks(!mMute);
return peerConnection.get();
}
@@ -570,7 +559,7 @@ void LLWebRTCPeerConnectionImpl::shutdownConnection()
});
}
-void LLWebRTCPeerConnectionImpl::enableTracks(bool enable)
+void LLWebRTCPeerConnectionImpl::enableSenderTracks(bool enable)
{
// set_enabled shouldn't be done on the worker thread
if (mPeerConnection)
@@ -583,6 +572,19 @@ void LLWebRTCPeerConnectionImpl::enableTracks(bool enable)
}
}
+void LLWebRTCPeerConnectionImpl::enableReceiverTracks(bool enable)
+{
+ // set_enabled shouldn't be done on the worker thread
+ if (mPeerConnection)
+ {
+ auto receivers = mPeerConnection->GetReceivers();
+ for (auto &receiver : receivers)
+ {
+ receiver->track()->set_enabled(enable);
+ }
+ }
+}
+
void LLWebRTCPeerConnectionImpl::AnswerAvailable(const std::string &sdp)
{
RTC_LOG(LS_INFO) << __FUNCTION__ << " Remote SDP: " << sdp;