From beb415a851c5ac0e653b55753ee1ed8602f977af Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 5 Jun 2013 12:45:07 -0700 Subject: [PATCH] correct buffer byte constants in AudioRingBuffer --- audio-mixer/src/main.cpp | 4 ++-- interface/src/Audio.cpp | 12 +++++++----- libraries/audio/src/AudioInjector.cpp | 6 ++++-- libraries/audio/src/AudioRingBuffer.h | 5 +++-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/audio-mixer/src/main.cpp b/audio-mixer/src/main.cpp index 6582fa57bf..3975d3d866 100644 --- a/audio-mixer/src/main.cpp +++ b/audio-mixer/src/main.cpp @@ -99,7 +99,7 @@ int main(int argc, const char* argv[]) { int nextFrame = 0; timeval startTime; - unsigned char clientPacket[BUFFER_LENGTH_BYTES + 1]; + unsigned char clientPacket[BUFFER_LENGTH_BYTES_STEREO + sizeof(PACKET_HEADER_MIXED_AUDIO)]; clientPacket[0] = PACKET_HEADER_MIXED_AUDIO; int16_t clientSamples[BUFFER_LENGTH_SAMPLES_PER_CHANNEL * 2] = {}; @@ -295,7 +295,7 @@ int main(int argc, const char* argv[]) { } memcpy(clientPacket + 1, clientSamples, sizeof(clientSamples)); - agentList->getAgentSocket()->send(agent->getPublicSocket(), clientPacket, BUFFER_LENGTH_BYTES + 1); + agentList->getAgentSocket()->send(agent->getPublicSocket(), clientPacket, sizeof(clientPacket)); } } diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 159f984d1c..44f7375cc0 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -133,7 +133,7 @@ int audioCallback (const void* inputBuffer, // we need the amount of bytes in the buffer + 1 for type // + 12 for 3 floats for position + float for bearing + 1 attenuation byte - unsigned char dataPacket[BUFFER_LENGTH_BYTES + leadingBytes]; + unsigned char dataPacket[BUFFER_LENGTH_BYTES_PER_CHANNEL + leadingBytes]; dataPacket[0] = PACKET_HEADER_MICROPHONE_AUDIO; unsigned char *currentPacketPtr = dataPacket + 1; @@ -147,9 +147,11 @@ int audioCallback (const void* inputBuffer, currentPacketPtr += sizeof(headOrientation); // copy the audio data to the last BUFFER_LENGTH_BYTES bytes of the data packet - memcpy(currentPacketPtr, inputLeft, BUFFER_LENGTH_BYTES); + memcpy(currentPacketPtr, inputLeft, BUFFER_LENGTH_BYTES_PER_CHANNEL); - agentList->getAgentSocket()->send(audioMixer->getActiveSocket(), dataPacket, BUFFER_LENGTH_BYTES + leadingBytes); + agentList->getAgentSocket()->send(audioMixer->getActiveSocket(), + dataPacket, + BUFFER_LENGTH_BYTES_PER_CHANNEL + leadingBytes); } } @@ -312,8 +314,8 @@ Audio::Audio(Oscilloscope* scope) : // start the stream now that sources are good to go outputPortAudioError(Pa_StartStream(_stream)); - _echoInputSamples = new int16_t[BUFFER_LENGTH_BYTES]; - _echoOutputSamples = new int16_t[BUFFER_LENGTH_BYTES]; + _echoInputSamples = new int16_t[BUFFER_LENGTH_BYTES_PER_CHANNEL]; + _echoOutputSamples = new int16_t[BUFFER_LENGTH_BYTES_PER_CHANNEL]; memset(_echoInputSamples, 0, BUFFER_LENGTH_SAMPLES_PER_CHANNEL * sizeof(int)); memset(_echoOutputSamples, 0, BUFFER_LENGTH_SAMPLES_PER_CHANNEL * sizeof(int)); diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 86e6f8958b..f9f1bcc094 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -77,7 +77,7 @@ void AudioInjector::injectAudio(UDPSocket* injectorSocket, sockaddr* destination + sizeof(_radius) + sizeof(_volume); - unsigned char dataPacket[BUFFER_LENGTH_BYTES + leadingBytes]; + unsigned char dataPacket[(BUFFER_LENGTH_SAMPLES_PER_CHANNEL * sizeof(int16_t)) + leadingBytes]; dataPacket[0] = PACKET_HEADER_INJECT_AUDIO; unsigned char *currentPacketPtr = dataPacket + sizeof(PACKET_HEADER_INJECT_AUDIO); @@ -106,7 +106,9 @@ void AudioInjector::injectAudio(UDPSocket* injectorSocket, sockaddr* destination if (_numTotalSamples - i < BUFFER_LENGTH_SAMPLES_PER_CHANNEL) { numSamplesToCopy = _numTotalSamples - i; - memset(currentPacketPtr + numSamplesToCopy, 0, BUFFER_LENGTH_BYTES - (numSamplesToCopy * sizeof(int16_t))); + memset(currentPacketPtr + numSamplesToCopy, + 0, + BUFFER_LENGTH_BYTES_PER_CHANNEL - (numSamplesToCopy * sizeof(int16_t))); } memcpy(currentPacketPtr, _audioSampleArray + i, numSamplesToCopy * sizeof(int16_t)); diff --git a/libraries/audio/src/AudioRingBuffer.h b/libraries/audio/src/AudioRingBuffer.h index 65b4ac6f4b..4ef8c4ead5 100644 --- a/libraries/audio/src/AudioRingBuffer.h +++ b/libraries/audio/src/AudioRingBuffer.h @@ -18,8 +18,9 @@ const float SAMPLE_RATE = 22050.0; -const int BUFFER_LENGTH_BYTES = 1024; -const int BUFFER_LENGTH_SAMPLES_PER_CHANNEL = (BUFFER_LENGTH_BYTES / 2) / sizeof(int16_t); +const int BUFFER_LENGTH_BYTES_STEREO = 1024; +const int BUFFER_LENGTH_BYTES_PER_CHANNEL = 512; +const int BUFFER_LENGTH_SAMPLES_PER_CHANNEL = BUFFER_LENGTH_BYTES_PER_CHANNEL / sizeof(int16_t); const short RING_BUFFER_LENGTH_FRAMES = 10; const short RING_BUFFER_LENGTH_SAMPLES = RING_BUFFER_LENGTH_FRAMES * BUFFER_LENGTH_SAMPLES_PER_CHANNEL;