added debug prints to look at injected ring buffers

This commit is contained in:
wangyix 2014-06-23 10:22:16 -07:00
parent 6b72b161d3
commit 7196814ec3
3 changed files with 9 additions and 5 deletions

View file

@ -90,6 +90,7 @@ int AudioMixerClientData::parseData(const QByteArray& packet) {
// we don't have a matching injected audio ring buffer, so add it // we don't have a matching injected audio ring buffer, so add it
matchingInjectedRingBuffer = new InjectedAudioRingBuffer(streamIdentifier); matchingInjectedRingBuffer = new InjectedAudioRingBuffer(streamIdentifier);
_ringBuffers.push_back(matchingInjectedRingBuffer); _ringBuffers.push_back(matchingInjectedRingBuffer);
printf("created InjectedRingBuffer %p\n", (void*)matchingInjectedRingBuffer);
} }
matchingInjectedRingBuffer->parseData(packet); matchingInjectedRingBuffer->parseData(packet);
@ -132,6 +133,7 @@ void AudioMixerClientData::pushBuffersAfterFrameSend() {
&& audioBuffer->hasStarted() && audioBuffer->isStarved()) { && audioBuffer->hasStarted() && audioBuffer->isStarved()) {
// this is an empty audio buffer that has starved, safe to delete // this is an empty audio buffer that has starved, safe to delete
delete audioBuffer; delete audioBuffer;
printf("deleted injector %p\n", (void*)audioBuffer);
i = _ringBuffers.erase(i); i = _ringBuffers.erase(i);
continue; continue;
} }

View file

@ -125,16 +125,19 @@ qint64 AudioRingBuffer::writeData(const char* data, qint64 maxSize) {
std::less<int16_t*> less; std::less<int16_t*> less;
std::less_equal<int16_t*> lessEqual; std::less_equal<int16_t*> lessEqual;
// TODO: why is less(_endOfLastWrite, _nextOutput) a condition here?
if (_hasStarted if (_hasStarted
/*
&& (less(_endOfLastWrite, _nextOutput) && (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 // this read will cross the next output, so call us starved and reset the buffer
qDebug() << "Filled the ring buffer. Resetting."; qDebug() << "Filled the ring buffer. Resetting.";
_endOfLastWrite = _buffer; _endOfLastWrite = _buffer;
_nextOutput = _buffer; _nextOutput = _buffer;
_isStarved = true; _isStarved = true;
} }
if (_endOfLastWrite + samplesToCopy <= _buffer + _sampleCapacity) { if (_endOfLastWrite + samplesToCopy <= _buffer + _sampleCapacity) {
memcpy(_endOfLastWrite, data, samplesToCopy * sizeof(int16_t)); memcpy(_endOfLastWrite, data, samplesToCopy * sizeof(int16_t));
} else { } else {
@ -145,6 +148,7 @@ qint64 AudioRingBuffer::writeData(const char* data, qint64 maxSize) {
_endOfLastWrite = shiftedPositionAccomodatingWrap(_endOfLastWrite, samplesToCopy); _endOfLastWrite = shiftedPositionAccomodatingWrap(_endOfLastWrite, samplesToCopy);
printf("%p: writeData. %d samples available\n", (void*)this, samplesAvailable());
return samplesToCopy * sizeof(int16_t); return samplesToCopy * sizeof(int16_t);
} }
@ -158,7 +162,7 @@ const int16_t& AudioRingBuffer::operator[] (const int index) const {
void AudioRingBuffer::shiftReadPosition(unsigned int numSamples) { void AudioRingBuffer::shiftReadPosition(unsigned int numSamples) {
_nextOutput = shiftedPositionAccomodatingWrap(_nextOutput, 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 { unsigned int AudioRingBuffer::samplesAvailable() const {

View file

@ -151,8 +151,6 @@ int PositionalAudioRingBuffer::parseData(const QByteArray& packet) {
int dataBytes = writeData(packet.data() + readBytes, packet.size() - readBytes); int dataBytes = writeData(packet.data() + readBytes, packet.size() - readBytes);
readBytes += dataBytes; readBytes += dataBytes;
} }
//printf("parsed packet. %d samples available\n", samplesAvailable());
return readBytes; return readBytes;
} }