mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 08:04:01 +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;
|
||||
|
||||
// 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<AvatarMixerClientData*>(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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#include <NumericalConstants.h>
|
||||
#include <SimpleMovingAverage.h>
|
||||
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue