mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 18:03:27 +02:00
use only AD rate for FRD adjustment
This commit is contained in:
parent
94739cf8d3
commit
67efa7796f
3 changed files with 15 additions and 5 deletions
|
@ -178,7 +178,7 @@ void AvatarMixer::broadcastAvatarData() {
|
||||||
int numAvatarDataBytes = 0;
|
int numAvatarDataBytes = 0;
|
||||||
|
|
||||||
// use the data rate specifically for avatar data for FRD adjustment checks
|
// 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
|
// 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
|
// 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;
|
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) {
|
if (avatarDataRateLastSecond > _maxKbpsPerNode) {
|
||||||
|
|
||||||
|
@ -438,10 +438,18 @@ void AvatarMixer::sendStatsPacket() {
|
||||||
// add stats for each listerner
|
// add stats for each listerner
|
||||||
nodeList->eachNode([&](const SharedNodePointer& node) {
|
nodeList->eachNode([&](const SharedNodePointer& node) {
|
||||||
QJsonObject avatarStats;
|
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<AvatarMixerClientData*>(node->getLinkedData());
|
AvatarMixerClientData* clientData = static_cast<AvatarMixerClientData*>(node->getLinkedData());
|
||||||
if (clientData) {
|
if (clientData) {
|
||||||
clientData->loadJSONStats(avatarStats);
|
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;
|
avatarsObject[uuidStringWithoutCurlyBraces(node->getUUID())] = avatarStats;
|
||||||
|
|
|
@ -31,5 +31,5 @@ void AvatarMixerClientData::loadJSONStats(QJsonObject& jsonObject) const {
|
||||||
jsonObject["max_full_rate_distance"] = _maxFullRateDistance;
|
jsonObject["max_full_rate_distance"] = _maxFullRateDistance;
|
||||||
jsonObject["num_avatars_sent_last_frame"] = _numAvatarsSentLastFrame;
|
jsonObject["num_avatars_sent_last_frame"] = _numAvatarsSentLastFrame;
|
||||||
|
|
||||||
jsonObject["other_avatar_data_kbps"] = getSentAvatarDataKbps();
|
jsonObject[OUTBOUND_AVATAR_DATA_STATS_KEY] = getOutboundAvatarDataKbps();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include <NumericalConstants.h>
|
#include <NumericalConstants.h>
|
||||||
#include <SimpleMovingAverage.h>
|
#include <SimpleMovingAverage.h>
|
||||||
|
|
||||||
|
const QString OUTBOUND_AVATAR_DATA_STATS_KEY = "outbound_av_data_kbps";
|
||||||
|
|
||||||
class AvatarMixerClientData : public NodeData {
|
class AvatarMixerClientData : public NodeData {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
@ -53,7 +55,7 @@ public:
|
||||||
|
|
||||||
void recordSentAvatarData(int numBytes) { _avgOtherAvatarDataRate.updateAverage((float) numBytes); }
|
void recordSentAvatarData(int numBytes) { _avgOtherAvatarDataRate.updateAverage((float) numBytes); }
|
||||||
|
|
||||||
float getSentAvatarDataKbps() const
|
float getOutboundAvatarDataKbps() const
|
||||||
{ return _avgOtherAvatarDataRate.getAverageSampleValuePerSecond() / (float) BYTES_PER_KILOBIT; }
|
{ return _avgOtherAvatarDataRate.getAverageSampleValuePerSecond() / (float) BYTES_PER_KILOBIT; }
|
||||||
|
|
||||||
void loadJSONStats(QJsonObject& jsonObject) const;
|
void loadJSONStats(QJsonObject& jsonObject) const;
|
||||||
|
|
Loading…
Reference in a new issue