changed getAudioStreamStatsOfStream to return stats instead of taking pointer

This commit is contained in:
wangyix 2014-06-30 15:20:42 -07:00
parent 1bfe367020
commit ae2780dcab
2 changed files with 20 additions and 21 deletions

View file

@ -156,33 +156,33 @@ void AudioMixerClientData::pushBuffersAfterFrameSend() {
} }
} }
void AudioMixerClientData::getAudioStreamStatsOfStream(const PositionalAudioRingBuffer* ringBuffer, AudioStreamStats& stats) const { AudioStreamStats AudioMixerClientData::getAudioStreamStatsOfStream(const PositionalAudioRingBuffer* ringBuffer) const {
AudioStreamStats streamStats;
SequenceNumberStats streamSequenceNumberStats; SequenceNumberStats streamSequenceNumberStats;
stats._streamType = ringBuffer->getType(); streamStats._streamType = ringBuffer->getType();
if (stats._streamType == PositionalAudioRingBuffer::Injector) { if (streamStats._streamType == PositionalAudioRingBuffer::Injector) {
stats._streamIdentifier = ((InjectedAudioRingBuffer*)ringBuffer)->getStreamIdentifier(); streamStats._streamIdentifier = ((InjectedAudioRingBuffer*)ringBuffer)->getStreamIdentifier();
streamSequenceNumberStats = _incomingInjectedAudioSequenceNumberStatsMap.value(stats._streamIdentifier); streamSequenceNumberStats = _incomingInjectedAudioSequenceNumberStatsMap.value(streamStats._streamIdentifier);
} else { } else {
streamSequenceNumberStats = _incomingAvatarAudioSequenceNumberStats; streamSequenceNumberStats = _incomingAvatarAudioSequenceNumberStats;
} }
stats._jitterBufferFrames = ringBuffer->getCurrentJitterBufferFrames(); streamStats._jitterBufferFrames = ringBuffer->getCurrentJitterBufferFrames();
stats._packetsReceived = streamSequenceNumberStats.getNumReceived(); streamStats._packetsReceived = streamSequenceNumberStats.getNumReceived();
stats._packetsUnreasonable = streamSequenceNumberStats.getNumUnreasonable(); streamStats._packetsUnreasonable = streamSequenceNumberStats.getNumUnreasonable();
stats._packetsEarly = streamSequenceNumberStats.getNumEarly(); streamStats._packetsEarly = streamSequenceNumberStats.getNumEarly();
stats._packetsLate = streamSequenceNumberStats.getNumLate(); streamStats._packetsLate = streamSequenceNumberStats.getNumLate();
stats._packetsLost = streamSequenceNumberStats.getNumLost(); streamStats._packetsLost = streamSequenceNumberStats.getNumLost();
stats._packetsRecovered = streamSequenceNumberStats.getNumRecovered(); streamStats._packetsRecovered = streamSequenceNumberStats.getNumRecovered();
stats._packetsDuplicate = streamSequenceNumberStats.getNumDuplicate(); streamStats._packetsDuplicate = streamSequenceNumberStats.getNumDuplicate();
return streamStats;
} }
void AudioMixerClientData::sendAudioStreamStatsPackets(const SharedNodePointer& destinationNode) const { void AudioMixerClientData::sendAudioStreamStatsPackets(const SharedNodePointer& destinationNode) const {
char packet[MAX_PACKET_SIZE]; char packet[MAX_PACKET_SIZE];
AudioStreamStats streamStats;
NodeList* nodeList = NodeList::getInstance(); NodeList* nodeList = NodeList::getInstance();
// The append flag is a boolean value that will be packed right after the header. The first packet sent // The append flag is a boolean value that will be packed right after the header. The first packet sent
@ -217,8 +217,7 @@ void AudioMixerClientData::sendAudioStreamStatsPackets(const SharedNodePointer&
// pack the calculated number of stream stats // pack the calculated number of stream stats
for (int i = 0; i < numStreamStatsToPack; i++) { for (int i = 0; i < numStreamStatsToPack; i++) {
getAudioStreamStatsOfStream(*ringBuffersIterator, streamStats); AudioStreamStats streamStats = getAudioStreamStatsOfStream(*ringBuffersIterator);
memcpy(dataAt, &streamStats, sizeof(AudioStreamStats)); memcpy(dataAt, &streamStats, sizeof(AudioStreamStats));
dataAt += sizeof(AudioStreamStats); dataAt += sizeof(AudioStreamStats);
@ -250,7 +249,7 @@ QString AudioMixerClientData::getAudioStreamStatsString() const {
} else { } else {
result = "mic unknown"; result = "mic unknown";
} }
AudioStreamStats streamStats;
for (int i = 0; i < _ringBuffers.size(); i++) { for (int i = 0; i < _ringBuffers.size(); i++) {
if (_ringBuffers[i]->getType() == PositionalAudioRingBuffer::Injector) { if (_ringBuffers[i]->getType() == PositionalAudioRingBuffer::Injector) {
int desiredJitterBuffer = _ringBuffers[i]->getDesiredJitterBufferFrames(); int desiredJitterBuffer = _ringBuffers[i]->getDesiredJitterBufferFrames();
@ -259,7 +258,7 @@ QString AudioMixerClientData::getAudioStreamStatsString() const {
int overflowCount = _ringBuffers[i]->getOverflowCount(); int overflowCount = _ringBuffers[i]->getOverflowCount();
int samplesAvailable = _ringBuffers[i]->samplesAvailable(); int samplesAvailable = _ringBuffers[i]->samplesAvailable();
int framesAvailable = (samplesAvailable / _ringBuffers[i]->getSamplesPerFrame()); int framesAvailable = (samplesAvailable / _ringBuffers[i]->getSamplesPerFrame());
getAudioStreamStatsOfStream(_ringBuffers[i], streamStats); AudioStreamStats streamStats = getAudioStreamStatsOfStream(_ringBuffers[i]);
result += "| injected[" + QString::number(i) + "].desired:" + QString::number(desiredJitterBuffer) result += "| injected[" + QString::number(i) + "].desired:" + QString::number(desiredJitterBuffer)
+ " calculated:" + QString::number(calculatedJitterBuffer) + " calculated:" + QString::number(calculatedJitterBuffer)
+ " current:" + QString::number(currentJitterBuffer) + " current:" + QString::number(currentJitterBuffer)

View file

@ -32,7 +32,7 @@ public:
void checkBuffersBeforeFrameSend(AABox* checkSourceZone = NULL, AABox* listenerZone = NULL); void checkBuffersBeforeFrameSend(AABox* checkSourceZone = NULL, AABox* listenerZone = NULL);
void pushBuffersAfterFrameSend(); void pushBuffersAfterFrameSend();
void getAudioStreamStatsOfStream(const PositionalAudioRingBuffer* ringBuffer, AudioStreamStats& stats) const; AudioStreamStats getAudioStreamStatsOfStream(const PositionalAudioRingBuffer* ringBuffer) const;
QString getAudioStreamStatsString() const; QString getAudioStreamStatsString() const;
void sendAudioStreamStatsPackets(const SharedNodePointer& destinationNode) const; void sendAudioStreamStatsPackets(const SharedNodePointer& destinationNode) const;