From 9834c10610b77e375ebab09b0ec639d74b550bbc Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 11 Jul 2013 17:47:35 -0700 Subject: [PATCH] movement to use AudioInjector classes in Operative code --- audio-mixer/CMakeLists.txt | 2 +- audio-mixer/src/main.cpp | 2 +- hifi.podspec | 2 +- interface/CMakeLists.txt | 2 +- .../{audio => shared}/src/AudioInjectionManager.cpp | 2 ++ libraries/{audio => shared}/src/AudioInjectionManager.h | 0 libraries/{audio => shared}/src/AudioInjector.cpp | 9 +++++---- libraries/{audio => shared}/src/AudioInjector.h | 2 +- libraries/{audio => shared}/src/AudioRingBuffer.cpp | 0 libraries/{audio => shared}/src/AudioRingBuffer.h | 0 libraries/shared/src/NodeList.cpp | 2 +- libraries/shared/src/Operative.cpp | 9 ++++++++- libraries/shared/src/Operative.h | 4 ++++ 13 files changed, 25 insertions(+), 11 deletions(-) rename libraries/{audio => shared}/src/AudioInjectionManager.cpp (98%) rename libraries/{audio => shared}/src/AudioInjectionManager.h (100%) rename libraries/{audio => shared}/src/AudioInjector.cpp (96%) rename libraries/{audio => shared}/src/AudioInjector.h (98%) rename libraries/{audio => shared}/src/AudioRingBuffer.cpp (100%) rename libraries/{audio => shared}/src/AudioRingBuffer.h (100%) diff --git a/audio-mixer/CMakeLists.txt b/audio-mixer/CMakeLists.txt index 7e83e6fc1a..79fb29a9c7 100644 --- a/audio-mixer/CMakeLists.txt +++ b/audio-mixer/CMakeLists.txt @@ -18,7 +18,7 @@ include_glm(${TARGET_NAME} ${ROOT_DIR}) # link the shared hifi library include(${MACRO_DIR}/LinkHifiLibrary.cmake) link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR}) -link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR}) +# link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR}) # link the stk library set(STK_ROOT_DIR ${ROOT_DIR}/externals/stk) diff --git a/audio-mixer/src/main.cpp b/audio-mixer/src/main.cpp index b900c48479..df686d82a7 100644 --- a/audio-mixer/src/main.cpp +++ b/audio-mixer/src/main.cpp @@ -374,7 +374,7 @@ int main(int argc, const char* argv[]) { InjectedAudioRingBuffer* ringBuffer = (InjectedAudioRingBuffer*) node->getLinkedData(); if (memcmp(ringBuffer->getStreamIdentifier(), - packetData + 1, + packetData + numBytesForPacketHeader(packetData), STREAM_IDENTIFIER_NUM_BYTES) == 0) { // this is the matching stream, assign to matchingInjector and stop looking matchingInjector = &*node; diff --git a/hifi.podspec b/hifi.podspec index b2451b6201..94468bc3e7 100644 --- a/hifi.podspec +++ b/hifi.podspec @@ -39,12 +39,12 @@ Pod::Spec.new do |s| sp.public_header_files = "librares/shared/src" sp.exclude_files = "libraries/shared/src/UrlReader.*" sp.dependency 'glm' + sp.xcconfig = { 'CLANG_CXX_LIBRARY' => "libc++" } end s.subspec "audio" do |sp| sp.source_files = "libraries/audio/src" sp.public_header_files = "libraries/audio/src" - sp.xcconfig = { 'CLANG_CXX_LIBRARY' => "libc++" } sp.dependency 'glm' end diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 829ccbff06..8a0f5ac421 100755 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -87,7 +87,7 @@ include(${MACRO_DIR}/LinkHifiLibrary.cmake) link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR}) link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR}) link_hifi_library(avatars ${TARGET_NAME} ${ROOT_DIR}) -link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR}) +# link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR}) # find required libraries find_package(GLM REQUIRED) diff --git a/libraries/audio/src/AudioInjectionManager.cpp b/libraries/shared/src/AudioInjectionManager.cpp similarity index 98% rename from libraries/audio/src/AudioInjectionManager.cpp rename to libraries/shared/src/AudioInjectionManager.cpp index 65cbade423..79de62e747 100644 --- a/libraries/audio/src/AudioInjectionManager.cpp +++ b/libraries/shared/src/AudioInjectionManager.cpp @@ -61,6 +61,8 @@ void* AudioInjectionManager::injectAudioViaThread(void* args) { Node* audioMixer = NodeList::getInstance()->soloNodeOfType(NODE_TYPE_AUDIO_MIXER); if (audioMixer) { _destinationSocket = *audioMixer->getActiveSocket(); + } else { + pthread_exit(0); } } diff --git a/libraries/audio/src/AudioInjectionManager.h b/libraries/shared/src/AudioInjectionManager.h similarity index 100% rename from libraries/audio/src/AudioInjectionManager.h rename to libraries/shared/src/AudioInjectionManager.h diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/shared/src/AudioInjector.cpp similarity index 96% rename from libraries/audio/src/AudioInjector.cpp rename to libraries/shared/src/AudioInjector.cpp index 1ad69b7e38..3299437e03 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/shared/src/AudioInjector.cpp @@ -9,8 +9,8 @@ #include #include -#include -#include +#include "PacketHeaders.h" +#include "SharedUtil.h" #include "AudioInjector.h" @@ -130,10 +130,11 @@ void AudioInjector::addSample(const int16_t sample) { } } -void AudioInjector::addSamples(int16_t* sampleBuffer, int numSamples) { - if (_audioSampleArray + _indexOfNextSlot + numSamples <= _audioSampleArray + (_numTotalSamples / sizeof(int16_t))) { +void AudioInjector::addSamples(int16_t* sampleBuffer, int numSamples) { + if (_audioSampleArray + _indexOfNextSlot + numSamples <= _audioSampleArray + _numTotalSamples) { // only copy the audio from the sample buffer if there's space memcpy(_audioSampleArray + _indexOfNextSlot, sampleBuffer, numSamples * sizeof(int16_t)); + printf("Copied %d samples to the buffer\n", numSamples); _indexOfNextSlot += numSamples; } } diff --git a/libraries/audio/src/AudioInjector.h b/libraries/shared/src/AudioInjector.h similarity index 98% rename from libraries/audio/src/AudioInjector.h rename to libraries/shared/src/AudioInjector.h index b7f137ec73..aa00797c48 100644 --- a/libraries/audio/src/AudioInjector.h +++ b/libraries/shared/src/AudioInjector.h @@ -12,7 +12,7 @@ #include #include -#include +#include "UDPSocket.h" #include "AudioRingBuffer.h" diff --git a/libraries/audio/src/AudioRingBuffer.cpp b/libraries/shared/src/AudioRingBuffer.cpp similarity index 100% rename from libraries/audio/src/AudioRingBuffer.cpp rename to libraries/shared/src/AudioRingBuffer.cpp diff --git a/libraries/audio/src/AudioRingBuffer.h b/libraries/shared/src/AudioRingBuffer.h similarity index 100% rename from libraries/audio/src/AudioRingBuffer.h rename to libraries/shared/src/AudioRingBuffer.h diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index df7822d6aa..4a02c37178 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -30,7 +30,7 @@ const char SOLO_NODE_TYPES[3] = { }; char DOMAIN_HOSTNAME[] = "highfidelity.below92.com"; -char DOMAIN_IP[100] = ""; // IP Address will be re-set by lookup on startup +char DOMAIN_IP[100] = "192.168.1.47"; // IP Address will be re-set by lookup on startup const int DOMAINSERVER_PORT = 40102; bool silentNodeThreadStopFlag = false; diff --git a/libraries/shared/src/Operative.cpp b/libraries/shared/src/Operative.cpp index 19cf78c102..7c67399bdc 100644 --- a/libraries/shared/src/Operative.cpp +++ b/libraries/shared/src/Operative.cpp @@ -6,6 +6,8 @@ // Copyright (c) 2013 HighFidelity, Inc. All rights reserved. // +#include "AudioInjectionManager.h" + #include "NodeList.h" #include "NodeTypes.h" #include "PacketHeaders.h" @@ -210,7 +212,8 @@ void Operative::run() { // change the owner type on our NodeList NodeList::getInstance()->setOwnerType(NODE_TYPE_AGENT); - NodeList::getInstance()->setNodeTypesOfInterest(&NODE_TYPE_VOXEL_SERVER, 1); + const char NODE_TYPES_OF_INTEREST[] = {NODE_TYPE_VOXEL_SERVER, NODE_TYPE_AUDIO_MIXER}; + NodeList::getInstance()->setNodeTypesOfInterest(NODE_TYPES_OF_INTEREST, 2); NodeList::getInstance()->getNodeSocket()->setBlocking(false); while (!shouldStop) { @@ -218,6 +221,10 @@ void Operative::run() { renderMovingBug(); + if (!injector->isInjectingAudio()) { + AudioInjectionManager::threadInjector(injector); + } + // send a check in packet to the domain server if DOMAIN_SERVER_CHECK_IN_USECS has elapsed if (usecTimestampNow() - usecTimestamp(&lastDomainServerCheckIn) >= DOMAIN_SERVER_CHECK_IN_USECS) { gettimeofday(&lastDomainServerCheckIn, NULL); diff --git a/libraries/shared/src/Operative.h b/libraries/shared/src/Operative.h index edaed6dd44..98249aaca6 100644 --- a/libraries/shared/src/Operative.h +++ b/libraries/shared/src/Operative.h @@ -9,6 +9,8 @@ #ifndef __hifi__Operative__ #define __hifi__Operative__ +#import "AudioInjector.h" + #include #include @@ -17,6 +19,8 @@ public: Operative(); bool volatile shouldStop; + AudioInjector* injector; + void run(); private: void renderMovingBug();