From 6c85caaa54415bbb272f9398deb50ca1f9f66b9c Mon Sep 17 00:00:00 2001 From: wangyix Date: Thu, 10 Jul 2014 17:03:53 -0700 Subject: [PATCH] updated Stats for new AudioStreamStats format --- .../src/audio/AudioMixerClientData.cpp | 28 +++++++++---------- interface/src/ui/Stats.cpp | 22 +++++---------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index d0b5104dbd..789e73eb86 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -278,33 +278,33 @@ QString AudioMixerClientData::getAudioStreamStatsString() const { + " not mixed:" + QString::number(streamStats._ringBufferConsecutiveNotMixedCount) + " overflows:" + QString::number(streamStats._ringBufferOverflowCount) + " silents dropped: ?" - + " lost %:" + QString::number(streamStats._packetStreamStats.getLostRate(), 'g', 2) - + " lost % 30s:" + QString::number(streamStats._packetStreamWindowStats.getLostRate(), 'g', 2) + + " lost %:" + QString::number(streamStats._packetStreamStats.getLostRate(), 'f', 2) + + " lost % 30s:" + QString::number(streamStats._packetStreamWindowStats.getLostRate(), 'f', 2) + " min gap:" + QString::number(streamStats._timeGapMin) + " max gap:" + QString::number(streamStats._timeGapMax) - + " avg gap:" + QString::number(streamStats._timeGapAverage, 'g', 2) + + " avg gap:" + QString::number(streamStats._timeGapAverage, 'f', 2) + " min 30s gap:" + QString::number(streamStats._timeGapWindowMin) + " max 30s gap:" + QString::number(streamStats._timeGapWindowMax) - + " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'g', 2); + + " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'f', 2); AvatarAudioRingBuffer* avatarRingBuffer = getAvatarAudioRingBuffer(); if (avatarRingBuffer) { AudioStreamStats streamStats = getAudioStreamStatsOfStream(avatarRingBuffer); - result += "mic.desired:" + QString::number(streamStats._ringBufferDesiredJitterBufferFrames) + result += " mic.desired:" + QString::number(streamStats._ringBufferDesiredJitterBufferFrames) + " current:" + QString::number(streamStats._ringBufferCurrentJitterBufferFrames) + " available:" + QString::number(streamStats._ringBufferFramesAvailable) + " starves:" + QString::number(streamStats._ringBufferStarveCount) + " not mixed:" + QString::number(streamStats._ringBufferConsecutiveNotMixedCount) + " overflows:" + QString::number(streamStats._ringBufferOverflowCount) + " silents dropped:" + QString::number(streamStats._ringBufferSilentFramesDropped) - + " lost %:" + QString::number(streamStats._packetStreamStats.getLostRate(), 'g', 2) - + " lost % 30s:" + QString::number(streamStats._packetStreamWindowStats.getLostRate(), 'g', 2) + + " lost %:" + QString::number(streamStats._packetStreamStats.getLostRate(), 'f', 2) + + " lost % 30s:" + QString::number(streamStats._packetStreamWindowStats.getLostRate(), 'f', 2) + " min gap:" + QString::number(streamStats._timeGapMin) + " max gap:" + QString::number(streamStats._timeGapMax) - + " avg gap:" + QString::number(streamStats._timeGapAverage, 'g', 2) + + " avg gap:" + QString::number(streamStats._timeGapAverage, 'f', 2) + " min 30s gap:" + QString::number(streamStats._timeGapWindowMin) + " max 30s gap:" + QString::number(streamStats._timeGapWindowMax) - + " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'g', 2); + + " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'f', 2); } else { result = "mic unknown"; } @@ -312,21 +312,21 @@ QString AudioMixerClientData::getAudioStreamStatsString() const { for (int i = 0; i < _ringBuffers.size(); i++) { if (_ringBuffers[i]->getType() == PositionalAudioRingBuffer::Injector) { AudioStreamStats streamStats = getAudioStreamStatsOfStream(_ringBuffers[i]); - result += "inj.desired:" + QString::number(streamStats._ringBufferDesiredJitterBufferFrames) + result += " inj.desired:" + QString::number(streamStats._ringBufferDesiredJitterBufferFrames) + " current:" + QString::number(streamStats._ringBufferCurrentJitterBufferFrames) + " available:" + QString::number(streamStats._ringBufferFramesAvailable) + " starves:" + QString::number(streamStats._ringBufferStarveCount) + " not mixed:" + QString::number(streamStats._ringBufferConsecutiveNotMixedCount) + " overflows:" + QString::number(streamStats._ringBufferOverflowCount) + " silents dropped:" + QString::number(streamStats._ringBufferSilentFramesDropped) - + " lost %:" + QString::number(streamStats._packetStreamStats.getLostRate(), 'g', 2) - + " lost % 30s:" + QString::number(streamStats._packetStreamWindowStats.getLostRate(), 'g', 2) + + " lost %:" + QString::number(streamStats._packetStreamStats.getLostRate(), 'f', 2) + + " lost % 30s:" + QString::number(streamStats._packetStreamWindowStats.getLostRate(), 'f', 2) + " min gap:" + QString::number(streamStats._timeGapMin) + " max gap:" + QString::number(streamStats._timeGapMax) - + " avg gap:" + QString::number(streamStats._timeGapAverage, 'g', 2) + + " avg gap:" + QString::number(streamStats._timeGapAverage, 'f', 2) + " min 30s gap:" + QString::number(streamStats._timeGapWindowMin) + " max 30s gap:" + QString::number(streamStats._timeGapWindowMax) - + " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'g', 2); + + " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'f', 2); } } return result; diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index add0754fe1..15a54e42a6 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -24,6 +24,7 @@ #include "InterfaceConfig.h" #include "Menu.h" #include "Util.h" +#include "SequenceNumberStats.h" using namespace std; @@ -341,8 +342,6 @@ void Stats::display( verticalOffset += STATS_PELS_PER_LINE; drawText(horizontalOffset, verticalOffset, scale, rotation, font, streamStatsFormatLabelString4, color); - float packetLossRate, packetLossRate30s; - char downstreamLabelString[] = " Downstream:"; verticalOffset += STATS_PELS_PER_LINE; drawText(horizontalOffset, verticalOffset, scale, rotation, font, downstreamLabelString, color); @@ -351,9 +350,8 @@ void Stats::display( AudioStreamStats downstreamAudioStreamStats = audio->getDownstreamAudioStreamStats(); - audio->calculatePacketLossRate(audio->getIncomingStreamPacketStatsHistory(), packetLossRate, packetLossRate30s); - - sprintf(downstreamAudioStatsString, " mix: %.1f%%/%.1f%%, %u/?/%u", packetLossRate*100.0f, packetLossRate30s*100.0f, + sprintf(downstreamAudioStatsString, " mix: %.1f%%/%.1f%%, %u/?/%u", downstreamAudioStreamStats._packetStreamStats.getLostRate()*100.0f, + downstreamAudioStreamStats._packetStreamWindowStats.getLostRate() * 100.0f, downstreamAudioStreamStats._ringBufferFramesAvailable, downstreamAudioStreamStats._ringBufferDesiredJitterBufferFrames); verticalOffset += STATS_PELS_PER_LINE; @@ -381,10 +379,9 @@ void Stats::display( char upstreamAudioStatsString[30]; const AudioStreamStats& audioMixerAvatarAudioStreamStats = audio->getAudioMixerAvatarStreamAudioStats(); - - audio->calculatePacketLossRate(audio->getAudioMixerAvatarStreamPacketStatsHistory(), packetLossRate, packetLossRate30s); - sprintf(upstreamAudioStatsString, " mic: %.1f%%/%.1f%%, %u/%u/%u", packetLossRate*100.0f, packetLossRate30s*100.0f, + sprintf(upstreamAudioStatsString, " mic: %.1f%%/%.1f%%, %u/%u/%u", audioMixerAvatarAudioStreamStats._packetStreamStats.getLostRate()*100.0f, + audioMixerAvatarAudioStreamStats._packetStreamWindowStats.getLostRate() * 100.0f, audioMixerAvatarAudioStreamStats._ringBufferFramesAvailable, audioMixerAvatarAudioStreamStats._ringBufferCurrentJitterBufferFrames, audioMixerAvatarAudioStreamStats._ringBufferDesiredJitterBufferFrames); @@ -405,15 +402,10 @@ void Stats::display( verticalOffset += STATS_PELS_PER_LINE; drawText(horizontalOffset, verticalOffset, scale, rotation, font, upstreamAudioStatsString, color); - QHash > audioMixerInjectedStreamPacketStatsHistoryMap - = audio->getAudioMixerInjectedStreamPacketStatsHistoryMap(); - foreach(const AudioStreamStats& injectedStreamAudioStats, audioMixerInjectedStreamAudioStatsMap) { - audio->calculatePacketLossRate(audioMixerInjectedStreamPacketStatsHistoryMap[injectedStreamAudioStats._streamIdentifier], - packetLossRate, packetLossRate30s); - - sprintf(upstreamAudioStatsString, " inj: %.1f%%/%.1f%%, %u/%u/%u", packetLossRate*100.0f, packetLossRate30s*100.0f, + sprintf(upstreamAudioStatsString, " inj: %.1f%%/%.1f%%, %u/%u/%u", injectedStreamAudioStats._packetStreamStats.getLostRate()*100.0f, + injectedStreamAudioStats._packetStreamWindowStats.getLostRate() * 100.0f, injectedStreamAudioStats._ringBufferFramesAvailable, injectedStreamAudioStats._ringBufferCurrentJitterBufferFrames, injectedStreamAudioStats._ringBufferDesiredJitterBufferFrames);