From 5e65f422fa1a81e885fb4c8cf504a5c952173fe1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 9 Jul 2015 15:30:25 -0700 Subject: [PATCH] Move mute environment handling to Application --- interface/src/Application.cpp | 11 +++++ libraries/audio-client/src/AudioClient.cpp | 48 +--------------------- libraries/audio-client/src/AudioClient.h | 7 +++- 3 files changed, 19 insertions(+), 47 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b7c926a7e8..20878205a9 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -419,6 +419,17 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : &AudioScriptingInterface::getInstance(), &AudioScriptingInterface::receivedFirstPacket); connect(audioIO.data(), &AudioClient::disconnected, &AudioScriptingInterface::getInstance(), &AudioScriptingInterface::disconnected); + connect(audioIO.data(), &AudioClient::muteEnvironmentRequested, [](glm::vec3 position, float radius) { + auto audioClient = DependencyManager::get(); + float distance = glm::distance(DependencyManager::get()->getMyAvatar()->getPosition(), + position); + bool shouldMute = !audioClient->isMuted() && (distance < radius); + + if (shouldMute) { + audioClient->toggleMute(); + AudioScriptingInterface::getInstance().environmentMuted(); + } + }); audioThread->start(); diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 983fa4c20e..2571f42786 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -602,19 +602,13 @@ void AudioClient::handleMuteEnvironmentPacket(std::unique_ptr packet, int headerSize = numBytesForPacketHeaderGivenPacketType(PacketType::MuteEnvironment); memcpy(&position, packet->getPayload(), sizeof(glm::vec3)); memcpy(&radius, packet->getPayload() + sizeof(glm::vec3), sizeof(float)); - float distance = glm::distance(DependencyManager::get()->getMyAvatar()->getPosition(), - position); - bool shouldMute = !_muted && (distance < radius); - if (shouldMute) { - toggleMute(); - // TODO reimplement on interface side - //AudioScriptingInterface::getInstance().environmentMuted(); - } + emit muteEnvironmentRequested(position, radius); } void AudioClient::updateLastHeardFromAudioMixer(std::unique_ptr& packet) { // update having heard from the audio-mixer and record the bytes received + auto nodeList = DependencyManager::get(); SharedNodePointer audioMixer = nodeList->nodeWithUUID(packet->getSourceID()); if (audioMixer) { audioMixer->setLastHeardMicrostamp(usecTimestampNow()); @@ -1023,44 +1017,6 @@ void AudioClient::sendMuteEnvironmentPacket() { } } -void AudioClient::addReceivedAudioToStream(const QByteArray& audioByteArray) { - DependencyManager::get()->flagTimeForConnectionStep(LimitedNodeList::ConnectionStep::ReceiveFirstAudioPacket); - - if (_audioOutput) { - - if (!_hasReceivedFirstPacket) { - _hasReceivedFirstPacket = true; - - // have the audio scripting interface emit a signal to say we just connected to mixer - emit receivedFirstPacket(); - } - - // Audio output must exist and be correctly set up if we're going to process received audio - _receivedAudioStream.parseData(audioByteArray); - } -} - -void AudioClient::parseAudioEnvironmentData(const QByteArray &packet) { - int numBytesPacketHeader = numBytesForPacketHeader(packet); - const char* dataAt = packet.constData() + numBytesPacketHeader; - - char bitset; - memcpy(&bitset, dataAt, sizeof(char)); - dataAt += sizeof(char); - - bool hasReverb = oneAtBit(bitset, HAS_REVERB_BIT);; - if (hasReverb) { - float reverbTime, wetLevel; - memcpy(&reverbTime, dataAt, sizeof(float)); - dataAt += sizeof(float); - memcpy(&wetLevel, dataAt, sizeof(float)); - dataAt += sizeof(float); - _receivedAudioStream.setReverb(reverbTime, wetLevel); - } else { - _receivedAudioStream.clearReverb(); - } -} - void AudioClient::toggleMute() { _muted = !_muted; emit muteToggled(); diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 37e21e7277..cc04d60367 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -13,6 +13,7 @@ #define hifi_AudioClient_h #include +#include #include #include @@ -32,8 +33,10 @@ #include #include #include -#include +#include +#include +#include #include #include #include @@ -197,6 +200,8 @@ signals: void audioFinished(); + void muteEnvironmentRequested(glm::vec3 position, float radius); + protected: AudioClient(); ~AudioClient();