diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index c37a5f2346..ca1b57ad6a 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -57,9 +57,9 @@ AudioMixer::AudioMixer(ReceivedMessage& message) : auto& packetReceiver = nodeList->getPacketReceiver(); packetReceiver.registerListenerForTypes({ PacketType::MicrophoneAudioNoEcho, PacketType::MicrophoneAudioWithEcho, - PacketType::InjectAudio, PacketType::SilentAudioFrame, - PacketType::AudioStreamStats }, - this, "handleNodeAudioPacket"); + PacketType::InjectAudio, PacketType::AudioStreamStats }, + this, "handleAudioPacket"); + packetReceiver.registerListenerForTypes({ PacketType::SilentAudioFrame }, this, "handleSilentAudioPacket"); packetReceiver.registerListener(PacketType::NegotiateAudioFormat, this, "handleNegotiateAudioFormat"); packetReceiver.registerListener(PacketType::MuteEnvironment, this, "handleMuteEnvironmentPacket"); packetReceiver.registerListener(PacketType::NodeIgnoreRequest, this, "handleNodeIgnoreRequestPacket"); @@ -72,7 +72,13 @@ AudioMixer::AudioMixer(ReceivedMessage& message) : connect(nodeList.data(), &NodeList::nodeKilled, this, &AudioMixer::handleNodeKilled); } -void AudioMixer::handleNodeAudioPacket(QSharedPointer message, SharedNodePointer sendingNode) { +void AudioMixer::handleAudioPacket(QSharedPointer message, SharedNodePointer sendingNode) { + getOrCreateClientData(sendingNode.data()); + DependencyManager::get()->updateNodeWithDataFromPacket(message, sendingNode); +} + +void AudioMixer::handleSilentAudioPacket(QSharedPointer message, SharedNodePointer sendingNode) { + _numSilentPackets++; getOrCreateClientData(sendingNode.data()); DependencyManager::get()->updateNodeWithDataFromPacket(message, sendingNode); } @@ -300,6 +306,8 @@ void AudioMixer::sendStatsPacket() { statsObject["avg_streams_per_frame"] = (float)_stats.sumStreams / (float)_numStatFrames; statsObject["avg_listeners_per_frame"] = (float)_stats.sumListeners / (float)_numStatFrames; + statsObject["silent_packets_per_frame"] = (float)_numSilentPackets / (float)_numStatFrames; + // timing stats QJsonObject timingStats; @@ -338,7 +346,7 @@ void AudioMixer::sendStatsPacket() { statsObject["mix_stats"] = mixStats; - _numStatFrames = 0; + _numStatFrames = _numSilentPackets = 0; _stats.reset(); // add stats for each listerner diff --git a/assignment-client/src/audio/AudioMixer.h b/assignment-client/src/audio/AudioMixer.h index f9c4252ecf..07359f4aef 100644 --- a/assignment-client/src/audio/AudioMixer.h +++ b/assignment-client/src/audio/AudioMixer.h @@ -56,7 +56,8 @@ public slots: private slots: // packet handlers - void handleNodeAudioPacket(QSharedPointer packet, SharedNodePointer sendingNode); + void handleAudioPacket(QSharedPointer packet, SharedNodePointer sendingNode); + void handleSilentAudioPacket(QSharedPointer packet, SharedNodePointer sendingNode); void handleMuteEnvironmentPacket(QSharedPointer packet, SharedNodePointer sendingNode); void handleNegotiateAudioFormat(QSharedPointer message, SharedNodePointer sendingNode); void handleNodeKilled(SharedNodePointer killedNode); @@ -87,6 +88,8 @@ private: float _trailingMixRatio { 0.0f }; float _throttlingRatio { 0.0f }; + int _numSilentPackets { 0 }; + int _numStatFrames { 0 }; AudioMixerStats _stats;