From 842ef820ab99fc91921cc5f93eaaff4646ba10e3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 23 May 2013 13:56:16 -0700 Subject: [PATCH] use a more consistent method to clock the injector thread --- libraries/audio/src/AudioInjector.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index a0f68e299b..8e540c9735 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -90,9 +90,10 @@ void AudioInjector::injectAudio(UDPSocket* injectorSocket, sockaddr* destination memcpy(currentPacketPtr, &_bearing, sizeof(_bearing)); currentPacketPtr += sizeof(_bearing); + gettimeofday(&startTime, NULL); + int nextFrame = 0; + for (int i = 0; i < _numTotalSamples; i += BUFFER_LENGTH_SAMPLES) { - gettimeofday(&startTime, NULL); - int numSamplesToCopy = BUFFER_LENGTH_SAMPLES; if (_numTotalSamples - i < BUFFER_LENGTH_SAMPLES) { @@ -104,7 +105,7 @@ void AudioInjector::injectAudio(UDPSocket* injectorSocket, sockaddr* destination injectorSocket->send(destinationSocket, dataPacket, sizeof(dataPacket)); - double usecToSleep = BUFFER_SEND_INTERVAL_USECS - (usecTimestampNow() - usecTimestamp(&startTime)); + double usecToSleep = usecTimestamp(&startTime) + (++nextFrame * BUFFER_SEND_INTERVAL_USECS) - usecTimestampNow(); if (usecToSleep > 0) { usleep(usecToSleep); }