added server side audio mixer jitter stats

This commit is contained in:
ZappoMan 2014-06-23 15:19:13 -07:00
parent 19195f9119
commit 076bc11545
4 changed files with 42 additions and 0 deletions

View file

@ -424,6 +424,19 @@ void AudioMixer::sendStatsPacket() {
} else {
statsObject["average_mixes_per_listener"] = 0.0;
}
// add stats for each listerner
NodeList* nodeList = NodeList::getInstance();
int clientNumber = 0;
foreach (const SharedNodePointer& node, nodeList->getNodeHash()) {
clientNumber++;
AudioMixerClientData* clientData = static_cast<AudioMixerClientData*>(node->getLinkedData());
if (clientData) {
QString property = "jitterStats." + QString::number(clientNumber);
statsObject[qPrintable(property)] = clientData->getJitterBufferStats();
}
}
ThreadedAssignment::addPacketStatsAndSendStatsPacket(statsObject);

View file

@ -138,3 +138,26 @@ void AudioMixerClientData::pushBuffersAfterFrameSend() {
i++;
}
}
QString AudioMixerClientData::getJitterBufferStats() const {
QString result;
AvatarAudioRingBuffer* avatarRingBuffer = getAvatarAudioRingBuffer();
if (avatarRingBuffer) {
int desiredJitterBuffer = avatarRingBuffer->getDesiredJitterBufferFrames();
int currentJitterBuffer = avatarRingBuffer->getCurrentJitterBufferFrames();
result += "mic.desired:" + QString::number(desiredJitterBuffer) + " current:" + QString::number(currentJitterBuffer);
} else {
result = "mic unknown";
}
for (int i = 0; i < _ringBuffers.size(); i++) {
if (_ringBuffers[i]->getType() == PositionalAudioRingBuffer::Injector) {
int desiredJitterBuffer = _ringBuffers[i]->getDesiredJitterBufferFrames();
int currentJitterBuffer = _ringBuffers[i]->getCurrentJitterBufferFrames();
result += "| injected["+QString::number(i)+"].desired:"
+ QString::number(desiredJitterBuffer) + " current:" + QString::number(currentJitterBuffer);
}
}
return result;
}

View file

@ -29,6 +29,9 @@ public:
int parseData(const QByteArray& packet);
void checkBuffersBeforeFrameSend(AABox* checkSourceZone = NULL, AABox* listenerZone = NULL);
void pushBuffersAfterFrameSend();
QString getJitterBufferStats() const;
private:
QList<PositionalAudioRingBuffer*> _ringBuffers;
};

View file

@ -77,6 +77,9 @@ public:
int getSamplesPerFrame() const { return _isStereo ? NETWORK_BUFFER_LENGTH_SAMPLES_STEREO : NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL; }
int getDesiredJitterBufferFrames() const { return _desiredJitterBufferFrames; }
int getCurrentJitterBufferFrames() const { return _currentJitterBufferFrames; }
protected:
// disallow copying of PositionalAudioRingBuffer objects
PositionalAudioRingBuffer(const PositionalAudioRingBuffer&);