stats working

This commit is contained in:
wangyix 2014-08-12 12:58:30 -07:00
parent 446c888242
commit 0007104b6a
2 changed files with 17 additions and 10 deletions

View file

@ -553,6 +553,7 @@ void AudioMixer::run() {
sendAudioStreamStats = true; sendAudioStreamStats = true;
} }
bool streamStatsPrinted = false;
foreach (const SharedNodePointer& node, nodeList->getNodeHash()) { foreach (const SharedNodePointer& node, nodeList->getNodeHash()) {
if (node->getLinkedData()) { if (node->getLinkedData()) {
AudioMixerClientData* nodeData = (AudioMixerClientData*)node->getLinkedData(); AudioMixerClientData* nodeData = (AudioMixerClientData*)node->getLinkedData();
@ -587,15 +588,21 @@ void AudioMixer::run() {
// send an audio stream stats packet if it's time // send an audio stream stats packet if it's time
if (sendAudioStreamStats) { if (sendAudioStreamStats) {
nodeData->sendAudioStreamStatsPackets(node); nodeData->sendAudioStreamStatsPackets(node);
printf("\nStats for agent %s\n:", node->getUUID().toString().toLatin1().data()); if (_printStreamStats) {
nodeData->printUpstreamDownstreamStats(); printf("\nStats for agent %s:\n", node->getUUID().toString().toLatin1().data());
nodeData->printUpstreamDownstreamStats();
streamStatsPrinted = true;
}
} }
++_sumListeners; ++_sumListeners;
} }
} }
} }
if (streamStatsPrinted) {
printf("\n----------------------------------------------------------------\n");
}
++_numStatFrames; ++_numStatFrames;

View file

@ -268,40 +268,40 @@ QString AudioMixerClientData::getAudioStreamStatsString() const {
void AudioMixerClientData::printUpstreamDownstreamStats() const { void AudioMixerClientData::printUpstreamDownstreamStats() const {
// print the upstream (mic stream) stats if the mic stream exists // print the upstream (mic stream) stats if the mic stream exists
if (_audioStreams.contains(QUuid())) { if (_audioStreams.contains(QUuid())) {
printf(" Upstream:\n"); printf("Upstream:\n");
printAudioStreamStats(_audioStreams.value(QUuid())->getAudioStreamStats()); printAudioStreamStats(_audioStreams.value(QUuid())->getAudioStreamStats());
} }
// print the downstream stats if they contain valid info // print the downstream stats if they contain valid info
if (_downstreamAudioStreamStats._packetStreamStats._received > 0) { if (_downstreamAudioStreamStats._packetStreamStats._received > 0) {
printf(" Downstream:\n"); printf("Downstream:\n");
printAudioStreamStats(_downstreamAudioStreamStats); printAudioStreamStats(_downstreamAudioStreamStats);
} }
} }
void AudioMixerClientData::printAudioStreamStats(const AudioStreamStats& streamStats) const { 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.getLostRate() * 100.0f,
streamStats._packetStreamStats._lost, streamStats._packetStreamStats._lost,
streamStats._packetStreamWindowStats.getLostRate() * 100.0f, streamStats._packetStreamWindowStats.getLostRate() * 100.0f,
streamStats._packetStreamWindowStats._lost); 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._desiredJitterBufferFrames,
streamStats._framesAvailableAverage, streamStats._framesAvailableAverage,
streamStats._framesAvailable); 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._starveCount,
streamStats._consecutiveNotMixedCount, streamStats._consecutiveNotMixedCount,
streamStats._framesDropped, streamStats._framesDropped,
streamStats._overflowCount); 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._timeGapMin).toLatin1().data(),
formatUsecTime(streamStats._timeGapMax).toLatin1().data(), formatUsecTime(streamStats._timeGapMax).toLatin1().data(),
formatUsecTime(streamStats._timeGapAverage).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._timeGapWindowMin).toLatin1().data(),
formatUsecTime(streamStats._timeGapWindowMax).toLatin1().data(), formatUsecTime(streamStats._timeGapWindowMax).toLatin1().data(),
formatUsecTime(streamStats._timeGapWindowAverage).toLatin1().data()); formatUsecTime(streamStats._timeGapWindowAverage).toLatin1().data());