From 4fe2e25bf0d8e217a11ea0a89e00efc486b0331e Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 18 Oct 2013 17:36:59 -0700 Subject: [PATCH] add a stream identifier back to the audio injector --- libraries/audio/src/AudioInjectionManager.cpp | 11 ------ libraries/audio/src/AudioInjectionManager.h | 1 - libraries/audio/src/AudioInjector.cpp | 35 ++++--------------- libraries/audio/src/AudioInjector.h | 3 +- 4 files changed, 9 insertions(+), 41 deletions(-) diff --git a/libraries/audio/src/AudioInjectionManager.cpp b/libraries/audio/src/AudioInjectionManager.cpp index afa99b0413..16ace5bbb6 100644 --- a/libraries/audio/src/AudioInjectionManager.cpp +++ b/libraries/audio/src/AudioInjectionManager.cpp @@ -21,17 +21,6 @@ sockaddr AudioInjectionManager::_destinationSocket; bool AudioInjectionManager::_isDestinationSocketExplicit = false; AudioInjector* AudioInjectionManager::_injectors[50] = {}; -AudioInjector* AudioInjectionManager::injectorWithSamplesFromFile(const char* filename) { - for (int i = 0; i < MAX_CONCURRENT_INJECTORS; i++) { - if (!_injectors[i]) { - _injectors[i] = new AudioInjector(filename); - return _injectors[i]; - } - } - - return NULL; -} - AudioInjector* AudioInjectionManager::injectorWithCapacity(int capacity) { for (int i = 0; i < MAX_CONCURRENT_INJECTORS; i++) { if (!_injectors[i]) { diff --git a/libraries/audio/src/AudioInjectionManager.h b/libraries/audio/src/AudioInjectionManager.h index 8cb9614811..5f56663a78 100644 --- a/libraries/audio/src/AudioInjectionManager.h +++ b/libraries/audio/src/AudioInjectionManager.h @@ -19,7 +19,6 @@ const int MAX_CONCURRENT_INJECTORS = 50; class AudioInjectionManager { public: static AudioInjector* injectorWithCapacity(int capacity); - static AudioInjector* injectorWithSamplesFromFile(const char* filename); static void threadInjector(AudioInjector* injector); diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index d7fd003515..c2154f2a85 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -17,34 +17,8 @@ #include "AudioInjector.h" -AudioInjector::AudioInjector(const char* filename) : - _position(0.0f, 0.0f, 0.0f), - _orientation(0.0f, 0.0f, 0.0f, 0.0f), - _radius(0.0f), - _volume(MAX_INJECTOR_VOLUME), - _indexOfNextSlot(0), - _isInjectingAudio(false) -{ - std::fstream sourceFile; - - sourceFile.open(filename, std::ios::in | std::ios::binary); - sourceFile.seekg(0, std::ios::end); - - int totalBytes = sourceFile.tellg(); - if (totalBytes == -1) { - printf("Error reading audio data from file %s\n", filename); - _audioSampleArray = NULL; - } else { - printf("Read %d bytes from audio file\n", totalBytes); - sourceFile.seekg(0, std::ios::beg); - _numTotalSamples = totalBytes / 2; - _audioSampleArray = new int16_t[_numTotalSamples]; - - sourceFile.read((char *)_audioSampleArray, totalBytes); - } -} - AudioInjector::AudioInjector(int maxNumSamples) : + _streamIdentifier(QUuid::createUuid()), _numTotalSamples(maxNumSamples), _position(0.0f, 0.0f, 0.0f), _orientation(), @@ -79,11 +53,16 @@ void AudioInjector::injectAudio(UDPSocket* injectorSocket, sockaddr* destination unsigned char* currentPacketPtr = dataPacket + populateTypeAndVersion(dataPacket, PACKET_TYPE_INJECT_AUDIO); - // copy the identifier for this injector + // copy the UUID for the owning node QByteArray rfcUUID = NodeList::getInstance()->getOwnerUUID().toRfc4122(); memcpy(currentPacketPtr, rfcUUID.constData(), rfcUUID.size()); currentPacketPtr += rfcUUID.size(); + // copy the stream identifier + QByteArray rfcStreamIdentifier = _streamIdentifier.toRfc4122(); + memcpy(currentPacketPtr, rfcStreamIdentifier.constData(), rfcStreamIdentifier.size()); + currentPacketPtr += rfcStreamIdentifier.size(); + memcpy(currentPacketPtr, &_position, sizeof(_position)); currentPacketPtr += sizeof(_position); diff --git a/libraries/audio/src/AudioInjector.h b/libraries/audio/src/AudioInjector.h index be265fe57f..b3a5b82fdf 100644 --- a/libraries/audio/src/AudioInjector.h +++ b/libraries/audio/src/AudioInjector.h @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -29,7 +30,6 @@ class AudioInjector : public QObject { Q_PROPERTY(glm::vec3 position READ getPosition WRITE setPosition) Q_PROPERTY(uchar volume READ getVolume WRITE setVolume); public: - AudioInjector(const char* filename); AudioInjector(int maxNumSamples); ~AudioInjector(); @@ -59,6 +59,7 @@ public slots: int16_t& sampleAt(const int index); void insertSample(const int index, int sample); private: + QUuid _streamIdentifier; int16_t* _audioSampleArray; int _numTotalSamples; glm::vec3 _position;