From 67efa7796f6c1857952bf02c7844828eb071408b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 1 May 2015 10:38:32 -0700 Subject: [PATCH] use only AD rate for FRD adjustment --- assignment-client/src/avatars/AvatarMixer.cpp | 14 +++++++++++--- .../src/avatars/AvatarMixerClientData.cpp | 2 +- .../src/avatars/AvatarMixerClientData.h | 4 +++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 0c7f9fbce1..2795a73f25 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -178,7 +178,7 @@ void AvatarMixer::broadcastAvatarData() { int numAvatarDataBytes = 0; // use the data rate specifically for avatar data for FRD adjustment checks - float avatarDataRateLastSecond = node->getOutboundBandwidth(); + float avatarDataRateLastSecond = nodeData->getOutboundAvatarDataKbps(); // Check if it is time to adjust what we send this client based on the observed // bandwidth to this node. We do this once a second, which is also the window for @@ -187,7 +187,7 @@ void AvatarMixer::broadcastAvatarData() { const float FRD_ADJUSTMENT_ACCEPTABLE_RATIO = 0.8f; - qDebug() << "current node outbound bandwidth is" << avatarDataRateLastSecond; + // qDebug() << "current node outbound bandwidth is" << avatarDataRateLastSecond; if (avatarDataRateLastSecond > _maxKbpsPerNode) { @@ -438,10 +438,18 @@ void AvatarMixer::sendStatsPacket() { // add stats for each listerner nodeList->eachNode([&](const SharedNodePointer& node) { QJsonObject avatarStats; - avatarStats["kbps"] = node->getOutboundBandwidth(); + + const QString NODE_OUTBOUND_KBPS_STAT_KEY = "outbound_kbps"; + + avatarStats[NODE_OUTBOUND_KBPS_STAT_KEY] = node->getOutboundBandwidth(); AvatarMixerClientData* clientData = static_cast(node->getLinkedData()); if (clientData) { clientData->loadJSONStats(avatarStats); + + // add the diff between the full outbound bandwidth and the measured bandwidth for AvatarData send only + avatarStats["delta_full_vs_avatar_data_kbps"] = + avatarStats[NODE_OUTBOUND_KBPS_STAT_KEY].toDouble() - avatarStats[OUTBOUND_AVATAR_DATA_STATS_KEY].toDouble(); + } avatarsObject[uuidStringWithoutCurlyBraces(node->getUUID())] = avatarStats; diff --git a/assignment-client/src/avatars/AvatarMixerClientData.cpp b/assignment-client/src/avatars/AvatarMixerClientData.cpp index 1748aeb23e..eeb1f70f99 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.cpp +++ b/assignment-client/src/avatars/AvatarMixerClientData.cpp @@ -31,5 +31,5 @@ void AvatarMixerClientData::loadJSONStats(QJsonObject& jsonObject) const { jsonObject["max_full_rate_distance"] = _maxFullRateDistance; jsonObject["num_avatars_sent_last_frame"] = _numAvatarsSentLastFrame; - jsonObject["other_avatar_data_kbps"] = getSentAvatarDataKbps(); + jsonObject[OUTBOUND_AVATAR_DATA_STATS_KEY] = getOutboundAvatarDataKbps(); } diff --git a/assignment-client/src/avatars/AvatarMixerClientData.h b/assignment-client/src/avatars/AvatarMixerClientData.h index e3f94f83a8..2f9ac7150d 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.h +++ b/assignment-client/src/avatars/AvatarMixerClientData.h @@ -23,6 +23,8 @@ #include #include +const QString OUTBOUND_AVATAR_DATA_STATS_KEY = "outbound_av_data_kbps"; + class AvatarMixerClientData : public NodeData { Q_OBJECT public: @@ -53,7 +55,7 @@ public: void recordSentAvatarData(int numBytes) { _avgOtherAvatarDataRate.updateAverage((float) numBytes); } - float getSentAvatarDataKbps() const + float getOutboundAvatarDataKbps() const { return _avgOtherAvatarDataRate.getAverageSampleValuePerSecond() / (float) BYTES_PER_KILOBIT; } void loadJSONStats(QJsonObject& jsonObject) const;