diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index fb1f3333a4..914d5ae63b 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -553,6 +553,7 @@ void AudioMixer::run() { sendAudioStreamStats = true; } + bool streamStatsPrinted = false; foreach (const SharedNodePointer& node, nodeList->getNodeHash()) { if (node->getLinkedData()) { AudioMixerClientData* nodeData = (AudioMixerClientData*)node->getLinkedData(); @@ -587,15 +588,21 @@ void AudioMixer::run() { // send an audio stream stats packet if it's time if (sendAudioStreamStats) { nodeData->sendAudioStreamStatsPackets(node); - - printf("\nStats for agent %s\n:", node->getUUID().toString().toLatin1().data()); - nodeData->printUpstreamDownstreamStats(); + + if (_printStreamStats) { + printf("\nStats for agent %s:\n", node->getUUID().toString().toLatin1().data()); + nodeData->printUpstreamDownstreamStats(); + streamStatsPrinted = true; + } } ++_sumListeners; } } } + if (streamStatsPrinted) { + printf("\n----------------------------------------------------------------\n"); + } ++_numStatFrames; diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index ade34e2dae..9a8a85c3d1 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -268,40 +268,40 @@ QString AudioMixerClientData::getAudioStreamStatsString() const { void AudioMixerClientData::printUpstreamDownstreamStats() const { // print the upstream (mic stream) stats if the mic stream exists if (_audioStreams.contains(QUuid())) { - printf(" Upstream:\n"); + printf("Upstream:\n"); printAudioStreamStats(_audioStreams.value(QUuid())->getAudioStreamStats()); } // print the downstream stats if they contain valid info if (_downstreamAudioStreamStats._packetStreamStats._received > 0) { - printf(" Downstream:\n"); + printf("Downstream:\n"); printAudioStreamStats(_downstreamAudioStreamStats); } } void AudioMixerClientData::printAudioStreamStats(const AudioStreamStats& streamStats) const { - printf(" Packet loss | overall: %5.2f%% (%d lost), last_30s: %5.2f%% (%d lost)", + printf(" Packet loss | overall: %5.2f%% (%d lost), last_30s: %5.2f%% (%d lost)\n", streamStats._packetStreamStats.getLostRate() * 100.0f, streamStats._packetStreamStats._lost, streamStats._packetStreamWindowStats.getLostRate() * 100.0f, streamStats._packetStreamWindowStats._lost); - printf(" Ringbuffer frames | desired: %u, avg_available(10s): %u, available: %u", + printf(" Ringbuffer frames | desired: %u, avg_available(10s): %u, available: %u\n", streamStats._desiredJitterBufferFrames, streamStats._framesAvailableAverage, streamStats._framesAvailable); - printf(" Ringbuffer stats | starves: %u, prev_starve_lasted: %u, frames_dropped: %u, overflows: %u", + printf(" Ringbuffer stats | starves: %u, prev_starve_lasted: %u, frames_dropped: %u, overflows: %u\n", streamStats._starveCount, streamStats._consecutiveNotMixedCount, streamStats._framesDropped, streamStats._overflowCount); - printf(" Inter-packet timegaps (overall) | min: %9s, max: %9s, avg: %9s", + printf(" Inter-packet timegaps (overall) | min: %9s, max: %9s, avg: %9s\n", formatUsecTime(streamStats._timeGapMin).toLatin1().data(), formatUsecTime(streamStats._timeGapMax).toLatin1().data(), formatUsecTime(streamStats._timeGapAverage).toLatin1().data()); - printf(" Inter-packet timegaps (last 30s) | min: %9s, max: %9s, avg: %9s", + printf(" Inter-packet timegaps (last 30s) | min: %9s, max: %9s, avg: %9s\n", formatUsecTime(streamStats._timeGapWindowMin).toLatin1().data(), formatUsecTime(streamStats._timeGapWindowMax).toLatin1().data(), formatUsecTime(streamStats._timeGapWindowAverage).toLatin1().data());