diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index a56c140326..33fb90c3f4 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -218,12 +218,10 @@ void AudioMixerClientData::sendAudioStreamStatsPackets(const SharedNodePointer& auto nodeList = DependencyManager::get(); - // The append flag is a boolean value that will be packed right after the header. The first packet sent - // inside this method will have 0 for this flag, every subsequent packet but the last will have 1 for this flag, - // and the last packet will have 2 for this flag. + // The append flag is a boolean value that will be packed right after the header. // This flag allows the client to know when it has received all stats packets, so it can group any downstream effects, // and clear its cache of injector stream stats; it helps to prevent buildup of dead audio stream stats in the client. - quint8 appendFlag = 0; + quint8 appendFlag = AudioStreamStats::START; auto streamsCopy = getAudioStreams(); @@ -241,12 +239,12 @@ void AudioMixerClientData::sendAudioStreamStatsPackets(const SharedNodePointer& // is this the terminal packet? if (numStreamStatsRemaining <= numStreamStatsToPack) { - appendFlag = 2; + appendFlag |= AudioStreamStats::END; } // pack the append flag in this packet statsPacket->writePrimitive(appendFlag); - appendFlag = 1; + appendFlag = 0; // pack the number of stream stats to follow statsPacket->writePrimitive(numStreamStatsToPack); diff --git a/libraries/audio-client/src/AudioIOStats.cpp b/libraries/audio-client/src/AudioIOStats.cpp index 77ce82e565..0d952fd22c 100644 --- a/libraries/audio-client/src/AudioIOStats.cpp +++ b/libraries/audio-client/src/AudioIOStats.cpp @@ -69,7 +69,7 @@ void AudioIOStats::processStreamStatsPacket(QSharedPointer mess quint8 appendFlag; message->readPrimitive(&appendFlag); - if (appendFlag == 0) { + if (appendFlag & AudioStreamStats::START) { _injectorStreams.clear(); } @@ -89,7 +89,7 @@ void AudioIOStats::processStreamStatsPacket(QSharedPointer mess } } - if (appendFlag == 2) { + if (appendFlag & AudioStreamStats::END) { _interface->updateInjectorStreams(_injectorStreams); } } @@ -106,7 +106,7 @@ void AudioIOStats::publish() { return; } - quint8 appendFlag = 0; + quint8 appendFlag = AudioStreamStats::START | AudioStreamStats::END; quint16 numStreamStatsToPack = 1; AudioStreamStats stats = _receivedAudioStream->getAudioStreamStats(); diff --git a/libraries/audio/src/AudioStreamStats.h b/libraries/audio/src/AudioStreamStats.h index 046c4e5a47..1230c14706 100644 --- a/libraries/audio/src/AudioStreamStats.h +++ b/libraries/audio/src/AudioStreamStats.h @@ -16,6 +16,13 @@ class AudioStreamStats { public: + // Intermediate packets should have no flag set + // Unique packets should have both flags set + enum AppendFlag : quint8 { + START = 1, + END = 2 + }; + AudioStreamStats() : _streamType(-1), _streamIdentifier(),