tidied up code

This commit is contained in:
wangyix 2014-07-10 09:51:01 -07:00
parent 7fcf149f70
commit 0d83b9a6f6
10 changed files with 41 additions and 54 deletions

View file

@ -176,9 +176,9 @@ AudioStreamStats AudioMixerClientData::getAudioStreamStatsOfStream(const Positio
streamStats._timeGapMin = timeGapStats.getMin();
streamStats._timeGapMax = timeGapStats.getMax();
streamStats._timeGapAverage = timeGapStats.getAverage();
streamStats._timeGapMovingMin = timeGapStats.getWindowMin();
streamStats._timeGapMovingMax = timeGapStats.getWindowMax();
streamStats._timeGapMovingAverage = timeGapStats.getWindowAverage();
streamStats._timeGapWindowMin = timeGapStats.getWindowMin();
streamStats._timeGapWindowMax = timeGapStats.getWindowMax();
streamStats._timeGapWindowAverage = timeGapStats.getWindowAverage();
streamStats._ringBufferFramesAvailable = ringBuffer->framesAvailable();
streamStats._ringBufferCurrentJitterBufferFrames = ringBuffer->getCurrentJitterBufferFrames();
@ -267,9 +267,9 @@ QString AudioMixerClientData::getAudioStreamStatsString() const {
+ " min gap:" + QString::number(streamStats._timeGapMin)
+ " max gap:" + QString::number(streamStats._timeGapMax)
+ " avg gap:" + QString::number(streamStats._timeGapAverage, 'g', 2)
+ " min 30s gap:" + QString::number(streamStats._timeGapMovingMin)
+ " max 30s gap:" + QString::number(streamStats._timeGapMovingMax)
+ " avg 30s gap:" + QString::number(streamStats._timeGapMovingAverage, 'g', 2);
+ " min 30s gap:" + QString::number(streamStats._timeGapWindowMin)
+ " max 30s gap:" + QString::number(streamStats._timeGapWindowMax)
+ " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'g', 2);
} else {
result = "mic unknown";
}
@ -290,9 +290,9 @@ QString AudioMixerClientData::getAudioStreamStatsString() const {
+ " min gap:" + QString::number(streamStats._timeGapMin)
+ " max gap:" + QString::number(streamStats._timeGapMax)
+ " avg gap:" + QString::number(streamStats._timeGapAverage, 'g', 2)
+ " min 30s gap:" + QString::number(streamStats._timeGapMovingMin)
+ " max 30s gap:" + QString::number(streamStats._timeGapMovingMax)
+ " avg 30s gap:" + QString::number(streamStats._timeGapMovingAverage, 'g', 2);
+ " min 30s gap:" + QString::number(streamStats._timeGapWindowMin)
+ " max 30s gap:" + QString::number(streamStats._timeGapWindowMax)
+ " avg 30s gap:" + QString::number(streamStats._timeGapWindowAverage, 'g', 2);
}
}
return result;

View file

@ -19,7 +19,7 @@ AvatarAudioRingBuffer::AvatarAudioRingBuffer(bool isStereo, bool dynamicJitterBu
}
int AvatarAudioRingBuffer::parseData(const QByteArray& packet) {
frameReceived();
timeGapStatsFrameReceived();
updateDesiredJitterBufferFrames();
_shouldLoopbackForNode = (packetTypeForPacket(packet) == PacketTypeMicrophoneAudioWithEcho);

View file

@ -50,6 +50,7 @@ static const int NUMBER_OF_NOISE_SAMPLE_FRAMES = 300;
static const int AUDIO_STREAM_STATS_HISTORY_SIZE = 30;
// audio frames time gap stats (min/max/avg) for last ~30 seconds are recalculated every ~1 second
const int TIME_GAPS_STATS_INTERVAL_SAMPLES = USECS_PER_SECOND / BUFFER_SEND_INTERVAL_USECS;
const int TIME_GAP_STATS_WINDOW_INTERVALS = 30;
@ -776,8 +777,8 @@ void Audio::parseAudioStreamStatsPacket(const QByteArray& packet) {
}
}
// when an audio stream stats packet is received, also record the current packets received and lost
// in the packet loss stats history
// when an audio stream stats packet is received, also record the downstream packets stats in the history
// for calculating packet loss rates
_incomingStreamPacketStatsHistory.insert(_incomingMixedAudioSequenceNumberStats.getStats());
}

View file

@ -341,22 +341,12 @@ void Stats::display(
verticalOffset += STATS_PELS_PER_LINE;
drawText(horizontalOffset, verticalOffset, scale, rotation, font, streamStatsFormatLabelString4, color);
float packetLossRate, packetLossRate30s;
char downstreamLabelString[] = " Downstream:";
verticalOffset += STATS_PELS_PER_LINE;
drawText(horizontalOffset, verticalOffset, scale, rotation, font, downstreamLabelString, color);
/* const SequenceNumberStats& downstreamAudioSequenceNumberStats = audio->getIncomingMixedAudioSequenceNumberStats();
sprintf(downstreamAudioStatsString, " mix: %d/%d/%d, %d", downstreamAudioSequenceNumberStats.getNumEarly(),
downstreamAudioSequenceNumberStats.getNumLate(), downstreamAudioSequenceNumberStats.getNumLost(),
audio->getJitterBufferSamples() / NETWORK_BUFFER_LENGTH_SAMPLES_STEREO);
verticalOffset += STATS_PELS_PER_LINE;
drawText(horizontalOffset, verticalOffset, scale, rotation, font, downstreamAudioStatsString, color);*/
float packetLossRate, packetLossRate30s;
char downstreamAudioStatsString[30];
audio->calculatePacketLossRate(audio->getIncomingStreamPacketStatsHistory(), packetLossRate, packetLossRate30s);
@ -406,8 +396,8 @@ void Stats::display(
verticalOffset += STATS_PELS_PER_LINE;
drawText(horizontalOffset, verticalOffset, scale, rotation, font, upstreamAudioStatsString, color);
sprintf(upstreamAudioStatsString, " %llu/%llu/%.2f, %u/%u", audioMixerAvatarAudioStreamStats._timeGapMovingMin,
audioMixerAvatarAudioStreamStats._timeGapMovingMax, audioMixerAvatarAudioStreamStats._timeGapMovingAverage,
sprintf(upstreamAudioStatsString, " %llu/%llu/%.2f, %u/%u", audioMixerAvatarAudioStreamStats._timeGapWindowMin,
audioMixerAvatarAudioStreamStats._timeGapWindowMax, audioMixerAvatarAudioStreamStats._timeGapWindowAverage,
audioMixerAvatarAudioStreamStats._ringBufferConsecutiveNotMixedCount, audioMixerAvatarAudioStreamStats._ringBufferSilentFramesDropped);
verticalOffset += STATS_PELS_PER_LINE;
@ -435,8 +425,8 @@ void Stats::display(
verticalOffset += STATS_PELS_PER_LINE;
drawText(horizontalOffset, verticalOffset, scale, rotation, font, upstreamAudioStatsString, color);
sprintf(upstreamAudioStatsString, " %llu/%llu/%.2f, %u/%u", injectedStreamAudioStats._timeGapMovingMin,
injectedStreamAudioStats._timeGapMovingMax, injectedStreamAudioStats._timeGapMovingAverage,
sprintf(upstreamAudioStatsString, " %llu/%llu/%.2f, %u/%u", injectedStreamAudioStats._timeGapWindowMin,
injectedStreamAudioStats._timeGapWindowMax, injectedStreamAudioStats._timeGapWindowAverage,
injectedStreamAudioStats._ringBufferConsecutiveNotMixedCount, injectedStreamAudioStats._ringBufferSilentFramesDropped);
verticalOffset += STATS_PELS_PER_LINE;

View file

@ -23,9 +23,9 @@ public:
_timeGapMin(0),
_timeGapMax(0),
_timeGapAverage(0.0f),
_timeGapMovingMin(0),
_timeGapMovingMax(0),
_timeGapMovingAverage(0.0f),
_timeGapWindowMin(0),
_timeGapWindowMax(0),
_timeGapWindowAverage(0.0f),
_ringBufferFramesAvailable(0),
_ringBufferCurrentJitterBufferFrames(0),
_ringBufferDesiredJitterBufferFrames(0),
@ -42,9 +42,9 @@ public:
quint64 _timeGapMin;
quint64 _timeGapMax;
float _timeGapAverage;
quint64 _timeGapMovingMin;
quint64 _timeGapMovingMax;
float _timeGapMovingAverage;
quint64 _timeGapWindowMin;
quint64 _timeGapWindowMax;
float _timeGapWindowAverage;
quint32 _ringBufferFramesAvailable;
quint16 _ringBufferCurrentJitterBufferFrames;

View file

@ -31,7 +31,7 @@ InjectedAudioRingBuffer::InjectedAudioRingBuffer(const QUuid& streamIdentifier,
const uchar MAX_INJECTOR_VOLUME = 255;
int InjectedAudioRingBuffer::parseData(const QByteArray& packet) {
frameReceived();
timeGapStatsFrameReceived();
updateDesiredJitterBufferFrames();
// setup a data stream to read from this packet

View file

@ -198,7 +198,7 @@ int PositionalAudioRingBuffer::getCalculatedDesiredJitterBufferFrames() const {
return calculatedDesiredJitterBufferFrames;
}
void PositionalAudioRingBuffer::frameReceived() {
void PositionalAudioRingBuffer::timeGapStatsFrameReceived() {
quint64 now = usecTimestampNow();
if (_lastFrameReceivedTime != 0) {
quint64 gap = now - _lastFrameReceivedTime;

View file

@ -80,7 +80,7 @@ protected:
PositionalAudioRingBuffer(const PositionalAudioRingBuffer&);
PositionalAudioRingBuffer& operator= (const PositionalAudioRingBuffer&);
void frameReceived();
void timeGapStatsFrameReceived();
void updateDesiredJitterBufferFrames();
PositionalAudioRingBuffer::Type _type;

View file

@ -86,7 +86,6 @@ public:
}
void update(T newSample) {
// update overall stats
_overallStats.updateWithSample(newSample, _samplesCollected);
@ -115,7 +114,6 @@ public:
}
}
bool getNewStatsAvailableFlag() const { return _newStatsAvailable; }
void clearNewStatsAvailableFlag() { _newStatsAvailable = false; }
@ -126,8 +124,6 @@ public:
T getWindowMax() const { return _windowStats._max; }
double getWindowAverage() const { return _windowStats._average; }
private:
int _intervalLength;
int _windowIntervals;

View file

@ -23,7 +23,7 @@ public:
RingBufferHistory(int capacity = 10)
: _size(capacity + 1),
_capacity(capacity),
_newestEntryAt(0),
_newestEntryAtIndex(0),
_numEntries(0)
{
_buffer = new T[_size];
@ -32,7 +32,7 @@ public:
RingBufferHistory(const RingBufferHistory& other)
: _size(other._size),
_capacity(other._capacity),
_newestEntryAt(other._newestEntryAt),
_newestEntryAtIndex(other._newestEntryAtIndex),
_numEntries(other._numEntries)
{
_buffer = new T[_size];
@ -42,7 +42,7 @@ public:
RingBufferHistory& operator= (const RingBufferHistory& rhs) {
_size = rhs._size;
_capacity = rhs._capacity;
_newestEntryAt = rhs._newestEntryAt;
_newestEntryAtIndex = rhs._newestEntryAtIndex;
_numEntries = rhs._numEntries;
delete[] _buffer;
_buffer = new T[_size];
@ -60,10 +60,10 @@ public:
void insert(const T& entry) {
// increment newest entry index cyclically
_newestEntryAt = (_newestEntryAt == _size - 1) ? 0 : _newestEntryAt + 1;
_newestEntryAtIndex = (_newestEntryAtIndex == _size - 1) ? 0 : _newestEntryAtIndex + 1;
// insert new entry
_buffer[_newestEntryAt] = entry;
_buffer[_newestEntryAtIndex] = entry;
if (_numEntries < _capacity) {
_numEntries++;
}
@ -75,7 +75,7 @@ public:
if (!(entryAge >= 0 && entryAge < _numEntries)) {
return NULL;
}
int entryAt = _newestEntryAt - entryAge;
int entryAt = _newestEntryAtIndex - entryAge;
if (entryAt < 0) {
entryAt += _size;
}
@ -87,11 +87,11 @@ public:
}
const T* getNewestEntry() const {
return &_buffer[_newestEntryAt];
return &_buffer[_newestEntryAtIndex];
}
T* getNewestEntry() {
return &_buffer[_newestEntryAt];
return &_buffer[_newestEntryAtIndex];
}
int getCapacity() const { return _capacity; }
@ -101,7 +101,7 @@ private:
T* _buffer;
int _size;
int _capacity;
int _newestEntryAt;
int _newestEntryAtIndex;
int _numEntries;
@ -133,14 +133,14 @@ public:
T* _at;
};
Iterator begin() { return Iterator(_buffer, _size, &_buffer[_newestEntryAt]); }
Iterator begin() { return Iterator(_buffer, _size, &_buffer[_newestEntryAtIndex]); }
Iterator end() {
int endAt = _newestEntryAt - _numEntries;
if (endAt < 0) {
endAt += _size;
int endAtIndex = _newestEntryAtIndex - _numEntries;
if (endAtIndex < 0) {
endAtIndex += _size;
}
return Iterator(_buffer, _size, &_buffer[endAt]);
return Iterator(_buffer, _size, &_buffer[endAtIndex]);
}
};