differentiate smaples/frames from dropped audio

This commit is contained in:
Zach Pomerantz 2016-10-04 18:45:03 -07:00
parent 00fabb77b4
commit 05aded5c9d

View file

@ -224,16 +224,17 @@ int InboundAudioStream::writeDroppableSilentFrames(int silentFrames) {
} }
// calculate how many silent frames we should drop. // calculate how many silent frames we should drop.
int silentSamples = silentFrames * 2;
int samplesPerFrame = _ringBuffer.getNumFrameSamples(); int samplesPerFrame = _ringBuffer.getNumFrameSamples();
int desiredJitterBufferFramesPlusPadding = _desiredJitterBufferFrames + DESIRED_JITTER_BUFFER_FRAMES_PADDING; int desiredJitterBufferFramesPlusPadding = _desiredJitterBufferFrames + DESIRED_JITTER_BUFFER_FRAMES_PADDING;
int numSilentFramesToDrop = 0; int numSilentFramesToDrop = 0;
if (silentFrames >= samplesPerFrame && _currentJitterBufferFrames > desiredJitterBufferFramesPlusPadding) { if (silentSamples >= samplesPerFrame && _currentJitterBufferFrames > desiredJitterBufferFramesPlusPadding) {
// our avg jitter buffer size exceeds its desired value, so ignore some silent // our avg jitter buffer size exceeds its desired value, so ignore some silent
// frames to get that size as close to desired as possible // frames to get that size as close to desired as possible
int numSilentFramesToDropDesired = _currentJitterBufferFrames - desiredJitterBufferFramesPlusPadding; int numSilentFramesToDropDesired = _currentJitterBufferFrames - desiredJitterBufferFramesPlusPadding;
int numSilentFramesReceived = silentFrames / samplesPerFrame; int numSilentFramesReceived = silentSamples / samplesPerFrame;
numSilentFramesToDrop = std::min(numSilentFramesToDropDesired, numSilentFramesReceived); numSilentFramesToDrop = std::min(numSilentFramesToDropDesired, numSilentFramesReceived);
// dont reset _currentJitterBufferFrames here; we want to be able to drop further silent frames // dont reset _currentJitterBufferFrames here; we want to be able to drop further silent frames
@ -247,7 +248,7 @@ int InboundAudioStream::writeDroppableSilentFrames(int silentFrames) {
_framesAvailableStat.reset(); _framesAvailableStat.reset();
} }
int ret = _ringBuffer.addSilentSamples(silentFrames - numSilentFramesToDrop * samplesPerFrame); int ret = _ringBuffer.addSilentSamples(silentSamples - numSilentFramesToDrop * samplesPerFrame);
return ret; return ret;
} }
@ -418,10 +419,10 @@ int InboundAudioStream::writeFramesForDroppedPackets(int networkFrames) {
return writeLastFrameRepeatedWithFade(networkFrames); return writeLastFrameRepeatedWithFade(networkFrames);
} }
int InboundAudioStream::writeLastFrameRepeatedWithFade(int samples) { int InboundAudioStream::writeLastFrameRepeatedWithFade(int frames) {
AudioRingBuffer::ConstIterator frameToRepeat = _ringBuffer.lastFrameWritten(); AudioRingBuffer::ConstIterator frameToRepeat = _ringBuffer.lastFrameWritten();
int frameSize = _ringBuffer.getNumFrameSamples(); int frameSize = _ringBuffer.getNumFrameSamples();
int samplesToWrite = samples; int samplesToWrite = frames * 2;
int indexOfRepeat = 0; int indexOfRepeat = 0;
do { do {
int samplesToWriteThisIteration = std::min(samplesToWrite, frameSize); int samplesToWriteThisIteration = std::min(samplesToWrite, frameSize);
@ -434,7 +435,7 @@ int InboundAudioStream::writeLastFrameRepeatedWithFade(int samples) {
indexOfRepeat++; indexOfRepeat++;
} while (samplesToWrite > 0); } while (samplesToWrite > 0);
return samples; return frames;
} }
AudioStreamStats InboundAudioStream::getAudioStreamStats() const { AudioStreamStats InboundAudioStream::getAudioStreamStats() const {