From ed9bfdc50369b08907709ab4c14631a5eeaee7a6 Mon Sep 17 00:00:00 2001 From: wangyix Date: Mon, 28 Jul 2014 14:08:45 -0700 Subject: [PATCH] these didn't commit for some reason --- interface/src/Audio.h | 1 + libraries/audio/src/InboundAudioStream.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/interface/src/Audio.h b/interface/src/Audio.h index 3efdb1d3b1..87472740d0 100644 --- a/interface/src/Audio.h +++ b/interface/src/Audio.h @@ -58,6 +58,7 @@ public: virtual void startDrumSound(float volume, float frequency, float duration, float decay); void overrideDesiredJitterBufferFramesTo(int desired) { _receivedAudioStream.overrideDesiredJitterBufferFramesTo(desired); } + void unoverrideDesiredJitterBufferFrames() { _receivedAudioStream.unoverrideDesiredJitterBufferFrames(); } int getDesiredJitterBufferFrames() const { return _receivedAudioStream.getDesiredJitterBufferFrames(); } float getCollisionSoundMagnitude() { return _collisionSoundMagnitude; } diff --git a/libraries/audio/src/InboundAudioStream.cpp b/libraries/audio/src/InboundAudioStream.cpp index a22a002548..c7e2b145a9 100644 --- a/libraries/audio/src/InboundAudioStream.cpp +++ b/libraries/audio/src/InboundAudioStream.cpp @@ -17,6 +17,7 @@ InboundAudioStream::InboundAudioStream(int numFrameSamples, int numFramesCapacit _lastPopSucceeded(false), _lastPopOutput(), _dynamicJitterBuffers(dynamicJitterBuffers), + _dynamicJitterBuffersOverride(false), _useStDevForJitterCalc(useStDevForJitterCalc), _calculatedJitterBufferFramesUsingMaxGap(0), _calculatedJitterBufferFramesUsingStDev(0), @@ -147,10 +148,17 @@ void InboundAudioStream::starved() { } void InboundAudioStream::overrideDesiredJitterBufferFramesTo(int desired) { - _dynamicJitterBuffers = false; + _dynamicJitterBuffersOverride = true; _desiredJitterBufferFrames = desired; } +void InboundAudioStream::unoverrideDesiredJitterBufferFrames() { + _dynamicJitterBuffersOverride = false; + if (!_dynamicJitterBuffers) { + _desiredJitterBufferFrames = 1; + } +} + int InboundAudioStream::clampDesiredJitterBufferFramesValue(int desired) const { const int MIN_FRAMES_DESIRED = 0; const int MAX_FRAMES_DESIRED = _ringBuffer.getFrameCapacity(); @@ -177,7 +185,7 @@ SequenceNumberStats::ArrivalInfo InboundAudioStream::frameReceivedUpdateNetworkS _calculatedJitterBufferFramesUsingMaxGap = ceilf((float)_interframeTimeGapStatsForJitterCalc.getWindowMax() / USECS_PER_FRAME); _interframeTimeGapStatsForJitterCalc.clearNewStatsAvailableFlag(); - if (_dynamicJitterBuffers && !_useStDevForJitterCalc) { + if (_dynamicJitterBuffers && !_dynamicJitterBuffersOverride && !_useStDevForJitterCalc) { _desiredJitterBufferFrames = clampDesiredJitterBufferFramesValue(_calculatedJitterBufferFramesUsingMaxGap); } } @@ -187,10 +195,10 @@ SequenceNumberStats::ArrivalInfo InboundAudioStream::frameReceivedUpdateNetworkS const int STANDARD_DEVIATION_SAMPLE_COUNT = 500; if (_stdev.getSamples() > STANDARD_DEVIATION_SAMPLE_COUNT) { const float NUM_STANDARD_DEVIATIONS = 3.0f; - _calculatedJitterBufferFramesUsingStDev = (int)ceilf(2 * (NUM_STANDARD_DEVIATIONS * _stdev.getStDev()) / USECS_PER_FRAME) + 1; + _calculatedJitterBufferFramesUsingStDev = (int)ceilf(NUM_STANDARD_DEVIATIONS * _stdev.getStDev() / USECS_PER_FRAME) + 1; _stdev.reset(); - if (_dynamicJitterBuffers && _useStDevForJitterCalc) { + if (_dynamicJitterBuffers && !_dynamicJitterBuffersOverride && _useStDevForJitterCalc) { _desiredJitterBufferFrames = clampDesiredJitterBufferFramesValue(_calculatedJitterBufferFramesUsingStDev); } }