summaryrefslogtreecommitdiff
path: root/indra/newview/llvoicewebrtc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llvoicewebrtc.cpp')
-rw-r--r--indra/newview/llvoicewebrtc.cpp52
1 files changed, 31 insertions, 21 deletions
diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp
index dbeccb51d8..15f3e02634 100644
--- a/indra/newview/llvoicewebrtc.cpp
+++ b/indra/newview/llvoicewebrtc.cpp
@@ -203,6 +203,7 @@ LLWebRTCVoiceClient::LLWebRTCVoiceClient() :
mTuningMode(false),
mTuningMicGain(0.0),
mTuningSpeakerVolume(50), // Set to 50 so the user can hear themselves when he sets his mic volume
+ mDeviceSettingsAvailable(false),
mDevicesListUpdated(false),
mSpatialCoordsDirty(false),
@@ -640,12 +641,14 @@ void LLWebRTCVoiceClient::leaveAudioSession()
void LLWebRTCVoiceClient::clearCaptureDevices()
{
LL_DEBUGS("Voice") << "called" << LL_ENDL;
+ mDeviceSettingsAvailable = false;
mCaptureDevices.clear();
}
void LLWebRTCVoiceClient::addCaptureDevice(const LLVoiceDevice& device)
{
LL_INFOS("Voice") << "Voice Capture Device: '" << device.display_name << "' (" << device.full_name << ")" << LL_ENDL;
+ mDeviceSettingsAvailable = false;
mCaptureDevices.push_back(device);
}
@@ -658,6 +661,7 @@ void LLWebRTCVoiceClient::setCaptureDevice(const std::string& name)
{
mWebRTCDeviceInterface->setCaptureDevice(name);
}
+
void LLWebRTCVoiceClient::setDevicesListUpdated(bool state)
{
mDevicesListUpdated = state;
@@ -703,20 +707,22 @@ void LLWebRTCVoiceClient::OnDevicesChangedImpl(const llwebrtc::LLWebRTCVoiceDevi
}
setCaptureDevice(inputDevice);
+ mDeviceSettingsAvailable = true;
setDevicesListUpdated(true);
}
void LLWebRTCVoiceClient::clearRenderDevices()
{
LL_DEBUGS("Voice") << "called" << LL_ENDL;
+ mDeviceSettingsAvailable = false;
mRenderDevices.clear();
}
void LLWebRTCVoiceClient::addRenderDevice(const LLVoiceDevice& device)
{
LL_INFOS("Voice") << "Voice Render Device: '" << device.display_name << "' (" << device.full_name << ")" << LL_ENDL;
+ mDeviceSettingsAvailable = false;
mRenderDevices.push_back(device);
-
}
LLVoiceDeviceList& LLWebRTCVoiceClient::getRenderDevices()
@@ -729,6 +735,16 @@ void LLWebRTCVoiceClient::setRenderDevice(const std::string& name)
mWebRTCDeviceInterface->setRenderDevice(name);
}
+bool LLWebRTCVoiceClient::isCaptureNoDevice()
+{
+ return mCaptureDevices.empty() || mWebRTCDeviceInterface->isCaptureNoDevice();
+}
+
+bool LLWebRTCVoiceClient::isRenderNoDevice()
+{
+ return mRenderDevices.empty() || mWebRTCDeviceInterface->isRenderNoDevice();
+}
+
void LLWebRTCVoiceClient::tuningStart()
{
if (!mIsInTuningMode)
@@ -754,11 +770,15 @@ bool LLWebRTCVoiceClient::inTuningMode()
void LLWebRTCVoiceClient::tuningSetMicVolume(float volume)
{
- mTuningMicGain = volume;
+ mTuningMicGain = volume;
}
void LLWebRTCVoiceClient::tuningSetSpeakerVolume(float volume)
{
+ if (isRenderNoDevice())
+ {
+ volume = 0;
+ }
if (volume != mTuningSpeakerVolume)
{
@@ -768,14 +788,17 @@ void LLWebRTCVoiceClient::tuningSetSpeakerVolume(float volume)
float LLWebRTCVoiceClient::getAudioLevel()
{
- if (mIsInTuningMode)
+ if (isCaptureNoDevice())
{
- return (1.0f - mWebRTCDeviceInterface->getTuningAudioLevel() * LEVEL_SCALE_WEBRTC) * mTuningMicGain / 2.1f;
+ return 0;
}
- else
+
+ if (mIsInTuningMode)
{
- return (1.0f - mWebRTCDeviceInterface->getPeerConnectionAudioLevel() * LEVEL_SCALE_WEBRTC) * mMicGain / 2.1f;
+ return (1.0f - mWebRTCDeviceInterface->getTuningAudioLevel() * LEVEL_SCALE_WEBRTC) * mTuningMicGain / 2.1f;
}
+
+ return (1.0f - mWebRTCDeviceInterface->getPeerConnectionAudioLevel() * LEVEL_SCALE_WEBRTC) * mMicGain / 2.1f;
}
float LLWebRTCVoiceClient::tuningGetEnergy(void)
@@ -783,15 +806,6 @@ float LLWebRTCVoiceClient::tuningGetEnergy(void)
return getAudioLevel();
}
-bool LLWebRTCVoiceClient::deviceSettingsAvailable()
-{
- bool result = true;
-
- if(mRenderDevices.empty() || mCaptureDevices.empty())
- result = false;
-
- return result;
-}
bool LLWebRTCVoiceClient::deviceSettingsUpdated()
{
bool updated = mDevicesListUpdated;
@@ -801,7 +815,7 @@ bool LLWebRTCVoiceClient::deviceSettingsUpdated()
void LLWebRTCVoiceClient::refreshDeviceLists(bool clearCurrentList)
{
- if(clearCurrentList)
+ if (clearCurrentList)
{
clearCaptureDevices();
clearRenderDevices();
@@ -809,7 +823,6 @@ void LLWebRTCVoiceClient::refreshDeviceLists(bool clearCurrentList)
mWebRTCDeviceInterface->refreshDevices();
}
-
void LLWebRTCVoiceClient::setHidden(bool hidden)
{
mHidden = hidden;
@@ -1523,9 +1536,7 @@ void LLWebRTCVoiceClient::setVoiceVolume(F32 volume)
{
if (volume != mSpeakerVolume)
{
- {
- mSpeakerVolume = volume;
- }
+ mSpeakerVolume = volume;
sessionState::for_each(boost::bind(predSetSpeakerVolume, _1, volume));
}
}
@@ -1544,7 +1555,6 @@ void LLWebRTCVoiceClient::setMicGain(F32 gain)
}
}
-
void LLWebRTCVoiceClient::setVoiceEnabled(bool enabled)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;