From 7196814ec3b2a087f966816becd7803475f5c810 Mon Sep 17 00:00:00 2001 From: wangyix Date: Mon, 23 Jun 2014 10:22:16 -0700 Subject: [PATCH] added debug prints to look at injected ring buffers --- assignment-client/src/audio/AudioMixerClientData.cpp | 2 ++ libraries/audio/src/AudioRingBuffer.cpp | 10 +++++++--- libraries/audio/src/PositionalAudioRingBuffer.cpp | 2 -- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index 0c41cc70f9..0080af4716 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -90,6 +90,7 @@ int AudioMixerClientData::parseData(const QByteArray& packet) { // we don't have a matching injected audio ring buffer, so add it matchingInjectedRingBuffer = new InjectedAudioRingBuffer(streamIdentifier); _ringBuffers.push_back(matchingInjectedRingBuffer); +printf("created InjectedRingBuffer %p\n", (void*)matchingInjectedRingBuffer); } matchingInjectedRingBuffer->parseData(packet); @@ -132,6 +133,7 @@ void AudioMixerClientData::pushBuffersAfterFrameSend() { && audioBuffer->hasStarted() && audioBuffer->isStarved()) { // this is an empty audio buffer that has starved, safe to delete delete audioBuffer; +printf("deleted injector %p\n", (void*)audioBuffer); i = _ringBuffers.erase(i); continue; } diff --git a/libraries/audio/src/AudioRingBuffer.cpp b/libraries/audio/src/AudioRingBuffer.cpp index ae100dcdf1..8ce48a39e3 100644 --- a/libraries/audio/src/AudioRingBuffer.cpp +++ b/libraries/audio/src/AudioRingBuffer.cpp @@ -125,16 +125,19 @@ qint64 AudioRingBuffer::writeData(const char* data, qint64 maxSize) { std::less less; std::less_equal lessEqual; + // TODO: why is less(_endOfLastWrite, _nextOutput) a condition here? if (_hasStarted + /* && (less(_endOfLastWrite, _nextOutput) - && lessEqual(_nextOutput, shiftedPositionAccomodatingWrap(_endOfLastWrite, samplesToCopy)))) { + && lessEqual(_nextOutput, shiftedPositionAccomodatingWrap(_endOfLastWrite, samplesToCopy)))*/ + && samplesToCopy > _sampleCapacity - samplesAvailable()) { // this read will cross the next output, so call us starved and reset the buffer qDebug() << "Filled the ring buffer. Resetting."; _endOfLastWrite = _buffer; _nextOutput = _buffer; _isStarved = true; } - + if (_endOfLastWrite + samplesToCopy <= _buffer + _sampleCapacity) { memcpy(_endOfLastWrite, data, samplesToCopy * sizeof(int16_t)); } else { @@ -145,6 +148,7 @@ qint64 AudioRingBuffer::writeData(const char* data, qint64 maxSize) { _endOfLastWrite = shiftedPositionAccomodatingWrap(_endOfLastWrite, samplesToCopy); +printf("%p: writeData. %d samples available\n", (void*)this, samplesAvailable()); return samplesToCopy * sizeof(int16_t); } @@ -158,7 +162,7 @@ const int16_t& AudioRingBuffer::operator[] (const int index) const { void AudioRingBuffer::shiftReadPosition(unsigned int numSamples) { _nextOutput = shiftedPositionAccomodatingWrap(_nextOutput, numSamples); -//printf("\nmixed. %d samples remaining\n", samplesAvailable()); +printf("%p: mixed. %d samples remaining\n", (void*)this, samplesAvailable()); } unsigned int AudioRingBuffer::samplesAvailable() const { diff --git a/libraries/audio/src/PositionalAudioRingBuffer.cpp b/libraries/audio/src/PositionalAudioRingBuffer.cpp index 93f68b4dff..03ac36d09e 100644 --- a/libraries/audio/src/PositionalAudioRingBuffer.cpp +++ b/libraries/audio/src/PositionalAudioRingBuffer.cpp @@ -151,8 +151,6 @@ int PositionalAudioRingBuffer::parseData(const QByteArray& packet) { int dataBytes = writeData(packet.data() + readBytes, packet.size() - readBytes); readBytes += dataBytes; } -//printf("parsed packet. %d samples available\n", samplesAvailable()); - return readBytes; }