From 02b401701f4e4770ea7ec71eb20ac07e180c9a81 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 10 Nov 2014 15:46:36 -0800 Subject: [PATCH] Set a minimum mute intervalle in the mixer --- assignment-client/src/audio/AudioMixer.cpp | 33 +++++++++++-------- .../src/audio/AvatarAudioStream.cpp | 3 +- .../src/audio/AvatarAudioStream.h | 7 +++- interface/src/Audio.cpp | 1 - 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index e7f41a2dca..c01afeda4e 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -719,20 +719,25 @@ void AudioMixer::run() { // if the stream should be muted, send mute packet if (shouldMute(nodeData->getAvatarAudioStream()->getQuietestFrameLoudness())) { - int headerSize = numBytesForPacketHeaderGivenPacketType(PacketTypeMuteEnvironment); - int packetSize = headerSize + sizeof(glm::vec3) + sizeof(float); - - // Fake data to force mute - glm::vec3 position = nodeData->getAvatarAudioStream()->getPosition(); - float radius = 1.0f; - - char* packet = (char*)malloc(packetSize); - populatePacketHeader(packet, PacketTypeMuteEnvironment); - memcpy(packet + headerSize, &position, sizeof(glm::vec3)); - memcpy(packet + headerSize + sizeof(glm::vec3), &radius, sizeof(float)); - - nodeList->writeDatagram(packet, packetSize, node); - free(packet); + static const int TIME_BETWEEN_MUTES = 5; // in secs + if (usecTimestampNow() - nodeData->getAvatarAudioStream()->getLastMuted() > + TIME_BETWEEN_MUTES * USECS_PER_SECOND) { + int headerSize = numBytesForPacketHeaderGivenPacketType(PacketTypeMuteEnvironment); + int packetSize = headerSize + sizeof(glm::vec3) + sizeof(float); + + // Fake data to force mute + glm::vec3 position = nodeData->getAvatarAudioStream()->getPosition(); + float radius = 1.0f; + + char* packet = (char*)malloc(packetSize); + populatePacketHeader(packet, PacketTypeMuteEnvironment); + memcpy(packet + headerSize, &position, sizeof(glm::vec3)); + memcpy(packet + headerSize + sizeof(glm::vec3), &radius, sizeof(float)); + + nodeList->writeDatagram(packet, packetSize, node); + nodeData->getAvatarAudioStream()->setLastMutedNow(); + free(packet); + } } diff --git a/assignment-client/src/audio/AvatarAudioStream.cpp b/assignment-client/src/audio/AvatarAudioStream.cpp index 90dcefa09d..cd67722a2e 100644 --- a/assignment-client/src/audio/AvatarAudioStream.cpp +++ b/assignment-client/src/audio/AvatarAudioStream.cpp @@ -14,7 +14,8 @@ #include "AvatarAudioStream.h" AvatarAudioStream::AvatarAudioStream(bool isStereo, const InboundAudioStream::Settings& settings) : - PositionalAudioStream(PositionalAudioStream::Microphone, isStereo, settings) + PositionalAudioStream(PositionalAudioStream::Microphone, isStereo, settings), + _lastMuted(usecTimestampNow()) { } diff --git a/assignment-client/src/audio/AvatarAudioStream.h b/assignment-client/src/audio/AvatarAudioStream.h index cc2ff1aca7..e1fb6dd486 100644 --- a/assignment-client/src/audio/AvatarAudioStream.h +++ b/assignment-client/src/audio/AvatarAudioStream.h @@ -19,13 +19,18 @@ class AvatarAudioStream : public PositionalAudioStream { public: AvatarAudioStream(bool isStereo, const InboundAudioStream::Settings& settings); - + + qint64 getLastMuted() const { return _lastMuted; } + void setLastMutedNow() { _lastMuted = usecTimestampNow(); } + private: // disallow copying of AvatarAudioStream objects AvatarAudioStream(const AvatarAudioStream&); AvatarAudioStream& operator= (const AvatarAudioStream&); int parseStreamProperties(PacketType type, const QByteArray& packetAfterSeqNum, int& numAudioSamples); + + qint64 _lastMuted; }; #endif // hifi_AvatarAudioStream_h diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 87f7163cd5..726d1e609a 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -1409,7 +1409,6 @@ void Audio::renderToolBox(int x, int y, bool boxed) { float t = (float)(now - _iconPulseTimeReference) / (float)USECS_PER_SECOND; float pulseFactor = (glm::cos(t * PULSE_FREQUENCY * 2.0f * PI) + 1.0f) / 2.0f; _iconColor = PULSE_MIN + (PULSE_MAX - PULSE_MIN) * pulseFactor; - } glColor3f(_iconColor, _iconColor, _iconColor);