From 5c188ea81e7c14507282bce8ef2931a55c3415c0 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 24 Jun 2014 09:41:29 -0700 Subject: [PATCH] adding more stats --- assignment-client/src/audio/AudioMixerClientData.cpp | 4 ++++ libraries/audio/src/PositionalAudioRingBuffer.cpp | 11 +++++++++++ libraries/audio/src/PositionalAudioRingBuffer.h | 1 + 3 files changed, 16 insertions(+) diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index cde1377053..def9b8c953 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -144,10 +144,12 @@ QString AudioMixerClientData::getJitterBufferStats() const { AvatarAudioRingBuffer* avatarRingBuffer = getAvatarAudioRingBuffer(); if (avatarRingBuffer) { int desiredJitterBuffer = avatarRingBuffer->getDesiredJitterBufferFrames(); + int calculatedJitterBuffer = avatarRingBuffer->getCalculatedDesiredJitterBufferFrames(); int currentJitterBuffer = avatarRingBuffer->getCurrentJitterBufferFrames(); int samplesAvailable = avatarRingBuffer->samplesAvailable(); int framesAvailable = (samplesAvailable / avatarRingBuffer->getSamplesPerFrame()); result += "mic.desired:" + QString::number(desiredJitterBuffer) + + " calculated:" + QString::number(calculatedJitterBuffer) + " current:" + QString::number(currentJitterBuffer) + " available:" + QString::number(framesAvailable) + " samples:" + QString::number(samplesAvailable); @@ -158,10 +160,12 @@ QString AudioMixerClientData::getJitterBufferStats() const { for (int i = 0; i < _ringBuffers.size(); i++) { if (_ringBuffers[i]->getType() == PositionalAudioRingBuffer::Injector) { int desiredJitterBuffer = _ringBuffers[i]->getDesiredJitterBufferFrames(); + int calculatedJitterBuffer = _ringBuffers[i]->getCalculatedDesiredJitterBufferFrames(); int currentJitterBuffer = _ringBuffers[i]->getCurrentJitterBufferFrames(); int samplesAvailable = _ringBuffers[i]->samplesAvailable(); int framesAvailable = (samplesAvailable / _ringBuffers[i]->getSamplesPerFrame()); result += "| injected["+QString::number(i)+"].desired:" + QString::number(desiredJitterBuffer) + + " calculated:" + QString::number(calculatedJitterBuffer) + " current:" + QString::number(currentJitterBuffer) + " available:" + QString::number(framesAvailable) + " samples:" + QString::number(samplesAvailable); diff --git a/libraries/audio/src/PositionalAudioRingBuffer.cpp b/libraries/audio/src/PositionalAudioRingBuffer.cpp index 5b6d5138d1..e3c123e592 100644 --- a/libraries/audio/src/PositionalAudioRingBuffer.cpp +++ b/libraries/audio/src/PositionalAudioRingBuffer.cpp @@ -233,6 +233,17 @@ bool PositionalAudioRingBuffer::shouldBeAddedToMix() { return true; } +int PositionalAudioRingBuffer::getCalculatedDesiredJitterBufferFrames() const { + int calculatedDesiredJitterBufferFrames = 1; + const float USECS_PER_FRAME = NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL * USECS_PER_SECOND / (float)SAMPLE_RATE; + + calculatedDesiredJitterBufferFrames = ceilf((float)_interframeTimeGapStats.peekWindowMaxGap() / USECS_PER_FRAME); + if (calculatedDesiredJitterBufferFrames < 1) { + calculatedDesiredJitterBufferFrames = 1; + } + return calculatedDesiredJitterBufferFrames; +} + void PositionalAudioRingBuffer::updateDesiredJitterBufferFrames() { if (_interframeTimeGapStats.hasNewWindowMaxGapAvailable()) { diff --git a/libraries/audio/src/PositionalAudioRingBuffer.h b/libraries/audio/src/PositionalAudioRingBuffer.h index 4c7148abbe..b9caeff605 100644 --- a/libraries/audio/src/PositionalAudioRingBuffer.h +++ b/libraries/audio/src/PositionalAudioRingBuffer.h @@ -77,6 +77,7 @@ public: int getSamplesPerFrame() const { return _isStereo ? NETWORK_BUFFER_LENGTH_SAMPLES_STEREO : NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL; } + int getCalculatedDesiredJitterBufferFrames() const; /// returns what we would calculate our desired as if asked int getDesiredJitterBufferFrames() const { return _desiredJitterBufferFrames; } int getCurrentJitterBufferFrames() const { return _currentJitterBufferFrames; }