fix audio AppendFlag semantics

This commit is contained in:
Zach Pomerantz 2016-09-26 17:48:33 -07:00
parent dbe3104f09
commit 055fabf57b
3 changed files with 14 additions and 9 deletions

View file

@ -218,12 +218,10 @@ void AudioMixerClientData::sendAudioStreamStatsPackets(const SharedNodePointer&
auto nodeList = DependencyManager::get<NodeList>();
// 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);

View file

@ -69,7 +69,7 @@ void AudioIOStats::processStreamStatsPacket(QSharedPointer<ReceivedMessage> mess
quint8 appendFlag;
message->readPrimitive(&appendFlag);
if (appendFlag == 0) {
if (appendFlag & AudioStreamStats::START) {
_injectorStreams.clear();
}
@ -89,7 +89,7 @@ void AudioIOStats::processStreamStatsPacket(QSharedPointer<ReceivedMessage> 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();

View file

@ -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(),