Don't need to send level data up to the server anymore

meow-7.2.2
Roxie Linden 2023-12-24 00:05:46 -08:00
parent 09ca8a07ea
commit af5cc7bd70
2 changed files with 40 additions and 73 deletions

View File

@ -508,45 +508,43 @@ void LLWebRTCVoiceClient::voiceConnectionCoro()
}
mNeighboringRegions.insert(regionp->getRegionID());
bool voiceEnabled = mVoiceEnabled && regionp->isVoiceEnabled();
if ((!mAudioSession || mAudioSession->isSpatial()) && !mNextAudioSession)
{
// check to see if parcel changed.
std::string channelID = "Estate";
S32 parcel_local_id = INVALID_PARCEL_ID;
// check to see if parcel changed.
std::string channelID = "Estate";
S32 parcel_local_id = INVALID_PARCEL_ID;
if (voiceEnabled)
if (voiceEnabled)
{
LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
if (parcel && parcel->getLocalID() != INVALID_PARCEL_ID)
{
LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
if (parcel && parcel->getLocalID() != INVALID_PARCEL_ID)
if (!parcel->getParcelFlagAllowVoice())
{
if (!parcel->getParcelFlagAllowVoice())
{
channelID.clear();
}
else if (!parcel->getParcelFlagUseEstateVoiceChannel())
{
parcel_local_id = parcel->getLocalID();
channelID = regionp->getRegionID().asString() + "-" + std::to_string(parcel->getLocalID());
}
channelID.clear();
}
else if (!parcel->getParcelFlagUseEstateVoiceChannel())
{
parcel_local_id = parcel->getLocalID();
channelID = regionp->getRegionID().asString() + "-" + std::to_string(parcel->getLocalID());
}
}
else
{
channelID.clear();
}
if ((mNextAudioSession && channelID != mNextAudioSession->mChannelID) ||
(!mAudioSession && !channelID.empty()) ||
(mAudioSession && channelID != mAudioSession->mChannelID))
{
setSpatialChannel(channelID, "", parcel_local_id);
}
}
else
{
channelID.clear();
}
if ((mNextAudioSession && channelID != mNextAudioSession->mChannelID) ||
(!mAudioSession && !mNextAudioSession && !channelID.empty()) ||
(mAudioSession && channelID != mAudioSession->mChannelID))
{
setSpatialChannel(channelID, "", parcel_local_id);
}
sessionState::processSessionStates();
if (voiceEnabled)
{
updatePosition();
sendPositionAndVolumeUpdate(true);
sendPositionUpdate(true);
updateOwnVolume();
}
}
@ -752,25 +750,14 @@ void LLWebRTCVoiceClient::setHidden(bool hidden)
}
else
{
sendPositionAndVolumeUpdate(true);
sendPositionUpdate(true);
}
}
void LLWebRTCVoiceClient::sendPositionAndVolumeUpdate(bool force)
void LLWebRTCVoiceClient::sendPositionUpdate(bool force)
{
Json::FastWriter writer;
std::string spatial_data;
std::string volume_data;
F32 audio_level = 0.0;
uint32_t uint_audio_level = 0.0;
if (!mMuteMic && !mTuningMode)
{
audio_level = getAudioLevel();
uint_audio_level = (uint32_t) (audio_level*128);
}
if (mSpatialCoordsDirty || force)
{
@ -797,21 +784,10 @@ void LLWebRTCVoiceClient::sendPositionAndVolumeUpdate(bool force)
spatial["lh"]["w"] = (int) (mListenerRot[3] * 100);
mSpatialCoordsDirty = false;
if (force || (uint_audio_level != mAudioLevel))
{
spatial["p"] = uint_audio_level;
}
spatial_data = writer.write(spatial);
}
if (force || (uint_audio_level != mAudioLevel))
{
Json::Value volume = Json::objectValue;
volume["p"] = uint_audio_level;
volume_data = writer.write(volume);
}
mAudioLevel = uint_audio_level;
sessionState::for_each(boost::bind(predSendData, _1, spatial_data, volume_data));
sessionState::for_each(boost::bind(predSendData, _1, spatial_data));
}
}
void LLWebRTCVoiceClient::updateOwnVolume() {
@ -834,16 +810,12 @@ void LLWebRTCVoiceClient::predUpdateOwnVolume(const LLWebRTCVoiceClient::session
}
}
void LLWebRTCVoiceClient::predSendData(const LLWebRTCVoiceClient::sessionStatePtr_t& session, const std::string& spatial_data, const std::string& volume_data)
void LLWebRTCVoiceClient::predSendData(const LLWebRTCVoiceClient::sessionStatePtr_t& session, const std::string& spatial_data)
{
if (session->isSpatial() && !spatial_data.empty())
{
session->sendData(spatial_data);
}
else if (!volume_data.empty())
{
session->sendData(volume_data);
}
}
void LLWebRTCVoiceClient::sessionState::sendData(const std::string &data)
@ -966,6 +938,7 @@ LLWebRTCVoiceClient::participantStatePtr_t LLWebRTCVoiceClient::sessionState::ad
// participant isn't already in one list or the other.
result.reset(new participantState(agent_id));
mParticipantsByURI.insert(participantMap::value_type(agent_id.asString(), result));
mParticipantsByUUID.insert(participantUUIDMap::value_type(agent_id, result));
mParticipantsChanged = true;
result->mAvatarIDValid = true;
@ -975,8 +948,6 @@ LLWebRTCVoiceClient::participantStatePtr_t LLWebRTCVoiceClient::sessionState::ad
{
mMuteDirty = true;
}
mParticipantsByUUID.insert(participantUUIDMap::value_type(result->mAvatarID, result));
if (LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID, result->mVolume))
{
@ -1682,7 +1653,8 @@ void LLWebRTCVoiceClient::setVoiceEnabled(bool enabled)
LL_DEBUGS("Voice") << "enabling" << LL_ENDL;
LLVoiceChannel::getCurrentVoiceChannel()->activate();
status = LLVoiceClientStatusObserver::STATUS_VOICE_ENABLED;
mSpatialCoordsDirty = true;
updatePosition();
if (!mIsCoroutineActive)
{
LLCoros::instance().launch("LLWebRTCVoiceClient::voiceConnectionCoro",
@ -1967,8 +1939,6 @@ LLWebRTCVoiceClient::sessionState::ptr_t LLWebRTCVoiceClient::sessionState::crea
sessionState::ptr_t session(new sessionState());
session->mChannelID = channelID;
session->mWebRTCConnections.emplace_back(new LLVoiceWebRTCConnection(region_id, parcelLocalID, channelID));
session->mPrimaryConnectionID = channelID;
// add agent as participant
session->addParticipant(gAgentID);
@ -2548,7 +2518,8 @@ void LLVoiceWebRTCConnection::OnDataChannelReady(llwebrtc::LLWebRTCDataInterface
Json::FastWriter writer;
Json::Value root = Json::objectValue;
Json::Value join_obj = Json::objectValue;
if (gAgent.getRegion()->getRegionID() == mRegionID)
LLUUID regionID = gAgent.getRegion()->getRegionID();
if (regionID == mRegionID)
{
join_obj["p"] = true;
}
@ -2868,6 +2839,7 @@ bool LLVoiceWebRTCConnection::breakVoiceConnection(bool corowait)
if (!regionp || !regionp->capabilitiesReceived())
{
LL_DEBUGS("Voice") << "no capabilities for voice provisioning; waiting " << LL_ENDL;
setVoiceConnectionState(VOICE_STATE_WAIT_FOR_EXIT);
return false;
}

View File

@ -244,7 +244,7 @@ public:
void OnConnectionEstablished(const std::string& channelID, const LLUUID& regionID);
void OnConnectionFailure(const std::string &channelID, const LLUUID& regionID);
void sendPositionAndVolumeUpdate(bool force);
void sendPositionUpdate(bool force);
void updateOwnVolume();
//////////////////////////////
@ -396,7 +396,6 @@ public:
private:
std::list<connectionPtr_t> mWebRTCConnections;
std::string mPrimaryConnectionID;
static std::map<std::string, ptr_t> mSessions; // canonical list of outstanding sessions.
sessionState();
@ -416,7 +415,7 @@ public:
// Private Member Functions
//////////////////////////////////////////////////////
static void predSendData(const LLWebRTCVoiceClient::sessionStatePtr_t &session, const std::string& spatial_data, const std::string& volume_data);
static void predSendData(const LLWebRTCVoiceClient::sessionStatePtr_t &session, const std::string& spatial_data);
static void predUpdateOwnVolume(const LLWebRTCVoiceClient::sessionStatePtr_t &session, F32 audio_level);
static void predSetMuteMic(const LLWebRTCVoiceClient::sessionStatePtr_t &session, bool mute);
static void predSetMicGain(const LLWebRTCVoiceClient::sessionStatePtr_t &session, F32 volume);
@ -597,8 +596,6 @@ private:
LLVoiceDeviceList mCaptureDevices;
LLVoiceDeviceList mRenderDevices;
uint32_t mAudioLevel;
bool mIsInitialized;
bool mShutdownComplete;
@ -843,8 +840,6 @@ protected:
F32 mMicGain;
F32 mSpeakerVolume;
bool mPrimary;
std::vector<llwebrtc::LLWebRTCIceCandidate> mIceCandidates;
bool mIceCompleted;
bool mTrickling;