#4871 Fix webrtc crash on tuningGetEnergy

master
Andrey Kleshchev 2025-10-21 09:30:14 +03:00
parent 528c4b5f31
commit 9a2ff1657d
1 changed files with 18 additions and 5 deletions

View File

@ -396,7 +396,7 @@ void LLWebRTCVoiceClient::updateSettings()
config.mNoiseSuppressionLevel = noiseSuppressionLevel;
audioConfigChanged = true;
}
if (audioConfigChanged)
if (audioConfigChanged && mWebRTCDeviceInterface)
{
mWebRTCDeviceInterface->setAudioConfig(config);
}
@ -797,7 +797,10 @@ void LLWebRTCVoiceClient::tuningStart()
{
if (!mIsInTuningMode)
{
mWebRTCDeviceInterface->setTuningMode(true);
if (mWebRTCDeviceInterface)
{
mWebRTCDeviceInterface->setTuningMode(true);
}
mIsInTuningMode = true;
}
}
@ -806,7 +809,10 @@ void LLWebRTCVoiceClient::tuningStop()
{
if (mIsInTuningMode)
{
mWebRTCDeviceInterface->setTuningMode(false);
if (mWebRTCDeviceInterface)
{
mWebRTCDeviceInterface->setTuningMode(false);
}
mIsInTuningMode = false;
}
}
@ -839,6 +845,10 @@ void LLWebRTCVoiceClient::tuningSetSpeakerVolume(float volume)
float LLWebRTCVoiceClient::tuningGetEnergy(void)
{
if (!mWebRTCDeviceInterface)
{
return 0.f;
}
float rms = mWebRTCDeviceInterface->getTuningAudioLevel();
return TUNING_LEVEL_START_POINT - TUNING_LEVEL_SCALE * rms;
}
@ -866,7 +876,10 @@ void LLWebRTCVoiceClient::refreshDeviceLists(bool clearCurrentList)
clearCaptureDevices();
clearRenderDevices();
}
mWebRTCDeviceInterface->refreshDevices();
if (mWebRTCDeviceInterface)
{
mWebRTCDeviceInterface->refreshDevices();
}
}
@ -1174,7 +1187,7 @@ void LLWebRTCVoiceClient::sendPositionUpdate(bool force)
void LLWebRTCVoiceClient::updateOwnVolume()
{
F32 audio_level = 0.0f;
if (!mMuteMic)
if (!mMuteMic && mWebRTCDeviceInterface)
{
float rms = mWebRTCDeviceInterface->getPeerConnectionAudioLevel();
audio_level = LEVEL_START_POINT - LEVEL_SCALE * rms;