mirror of
https://github.com/lubosz/overte.git
synced 2025-04-23 01:04:06 +02:00
minor refactoring
This commit is contained in:
parent
71c23eac1e
commit
bb2adb2721
2 changed files with 19 additions and 16 deletions
|
@ -35,7 +35,7 @@ InboundAudioStream::InboundAudioStream(int numFrameSamples, int numFramesCapacit
|
|||
_interframeTimeGapStatsForJitterCalc(TIME_GAPS_FOR_JITTER_CALC_INTERVAL_SAMPLES, TIME_GAPS_FOR_JITTER_CALC_WINDOW_INTERVALS),
|
||||
_interframeTimeGapStatsForStatsPacket(TIME_GAPS_FOR_STATS_PACKET_INTERVAL_SAMPLES, TIME_GAPS_FOR_STATS_PACKET_WINDOW_INTERVALS),
|
||||
_framesAvailableStat(),
|
||||
_framesAvailableAvg(0)
|
||||
_currentJitterBufferFrames(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -59,13 +59,13 @@ void InboundAudioStream::resetStats() {
|
|||
_interframeTimeGapStatsForJitterCalc.reset();
|
||||
_interframeTimeGapStatsForStatsPacket.reset();
|
||||
_framesAvailableStat.reset();
|
||||
_framesAvailableAvg = 0;
|
||||
_currentJitterBufferFrames = 0;
|
||||
}
|
||||
|
||||
void InboundAudioStream::clearBuffer() {
|
||||
_ringBuffer.clear();
|
||||
_framesAvailableStat.reset();
|
||||
_framesAvailableAvg = 0;
|
||||
_currentJitterBufferFrames = 0;
|
||||
}
|
||||
|
||||
int InboundAudioStream::parseData(const QByteArray& packet) {
|
||||
|
@ -116,9 +116,9 @@ int InboundAudioStream::parseData(const QByteArray& packet) {
|
|||
if (framesAvailable > _desiredJitterBufferFrames + _maxFramesOverDesired) {
|
||||
int framesToDrop = framesAvailable - (_desiredJitterBufferFrames + DESIRED_JITTER_BUFFER_FRAMES_PADDING);
|
||||
_ringBuffer.shiftReadPosition(framesToDrop * _ringBuffer.getNumFrameSamples());
|
||||
printf("dropped %d old frames\n", framesToDrop);
|
||||
|
||||
_framesAvailableStat.reset();
|
||||
_framesAvailableAvg = 0;
|
||||
_currentJitterBufferFrames = 0;
|
||||
|
||||
_oldFramesDropped += framesToDrop;
|
||||
}
|
||||
|
@ -158,10 +158,10 @@ bool InboundAudioStream::popFrames(int numFrames, bool starveOnFail) {
|
|||
|
||||
void InboundAudioStream::framesAvailableChanged() {
|
||||
_framesAvailableStat.updateWithSample(_ringBuffer.framesAvailable());
|
||||
if (_framesAvailableStat.getElapsedUsecs() >= FRAMES_AVAILABLE_STATS_WINDOW_USECS) {
|
||||
_framesAvailableAvg = (int)ceil(_framesAvailableStat.getAverage());
|
||||
|
||||
if (_framesAvailableStat.getElapsedUsecs() >= FRAMES_AVAILABLE_STAT_WINDOW_USECS) {
|
||||
_currentJitterBufferFrames = (int)ceil(_framesAvailableStat.getAverage());
|
||||
_framesAvailableStat.reset();
|
||||
printf("10s samples filled; frames avail avg = %d\n", _framesAvailableAvg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -245,17 +245,17 @@ int InboundAudioStream::writeDroppableSilentSamples(int numSilentSamples) {
|
|||
int desiredJitterBufferFramesPlusPadding = _desiredJitterBufferFrames + DESIRED_JITTER_BUFFER_FRAMES_PADDING;
|
||||
int numSilentFramesToDrop = 0;
|
||||
|
||||
if (numSilentSamples >= samplesPerFrame && _framesAvailableAvg > desiredJitterBufferFramesPlusPadding) {
|
||||
if (numSilentSamples >= samplesPerFrame && _currentJitterBufferFrames > desiredJitterBufferFramesPlusPadding) {
|
||||
|
||||
// our avg jitter buffer size exceeds its desired value, so ignore some silent
|
||||
// frames to get that size as close to desired as possible
|
||||
int numSilentFramesToDropDesired = _framesAvailableAvg - desiredJitterBufferFramesPlusPadding;
|
||||
int numSilentFramesToDropDesired = _currentJitterBufferFrames - desiredJitterBufferFramesPlusPadding;
|
||||
int numSilentFramesReceived = numSilentSamples / samplesPerFrame;
|
||||
numSilentFramesToDrop = std::min(numSilentFramesToDropDesired, numSilentFramesReceived);
|
||||
|
||||
// dont reset _framesAvailableAvg here; we want to be able to drop further silent frames
|
||||
// dont reset _currentJitterBufferFrames here; we want to be able to drop further silent frames
|
||||
// without waiting for _framesAvailableStat to fill up to 10s of samples.
|
||||
_framesAvailableAvg -= numSilentFramesToDrop;
|
||||
_currentJitterBufferFrames -= numSilentFramesToDrop;
|
||||
_framesAvailableStat.reset();
|
||||
}
|
||||
|
||||
|
@ -277,7 +277,7 @@ AudioStreamStats InboundAudioStream::getAudioStreamStats() const {
|
|||
streamStats._timeGapWindowAverage = _interframeTimeGapStatsForStatsPacket.getWindowAverage();
|
||||
|
||||
streamStats._framesAvailable = _ringBuffer.framesAvailable();
|
||||
streamStats._framesAvailableAverage = _framesAvailableAvg;
|
||||
streamStats._framesAvailableAverage = _currentJitterBufferFrames;
|
||||
streamStats._desiredJitterBufferFrames = _desiredJitterBufferFrames;
|
||||
streamStats._starveCount = _starveCount;
|
||||
streamStats._consecutiveNotMixedCount = _consecutiveNotMixedCount;
|
||||
|
|
|
@ -37,7 +37,7 @@ const int TIME_GAPS_FOR_JITTER_CALC_WINDOW_INTERVALS = 10;
|
|||
const int TIME_GAPS_FOR_STATS_PACKET_INTERVAL_SAMPLES = USECS_PER_SECOND / BUFFER_SEND_INTERVAL_USECS;
|
||||
const int TIME_GAPS_FOR_STATS_PACKET_WINDOW_INTERVALS = 30;
|
||||
|
||||
const int FRAMES_AVAILABLE_STATS_WINDOW_USECS = 10 * USECS_PER_SECOND;
|
||||
const int FRAMES_AVAILABLE_STAT_WINDOW_USECS = 10 * USECS_PER_SECOND;
|
||||
|
||||
// the internal history buffer of the incoming seq stats will cover 30s to calculate
|
||||
// packet loss % over last 30s
|
||||
|
@ -91,7 +91,7 @@ public:
|
|||
int getNumFrameSamples() const { return _ringBuffer.getNumFrameSamples(); }
|
||||
int getFrameCapacity() const { return _ringBuffer.getFrameCapacity(); }
|
||||
int getFramesAvailable() const { return _ringBuffer.framesAvailable(); }
|
||||
double getFramesAvailableAverage() const { return _framesAvailableAvg; }
|
||||
double getFramesAvailableAverage() const { return _framesAvailableStat.getAverage(); }
|
||||
|
||||
bool isStarved() const { return _isStarved; }
|
||||
bool hasStarted() const { return _hasStarted; }
|
||||
|
@ -165,7 +165,10 @@ protected:
|
|||
MovingMinMaxAvg<quint64> _interframeTimeGapStatsForStatsPacket;
|
||||
|
||||
TimeWeightedAvg<int> _framesAvailableStat;
|
||||
int _framesAvailableAvg;
|
||||
|
||||
// this value is based on the time-weighted avg from _framesAvailableStat. it is only used for
|
||||
// dropping silent frames right now.
|
||||
int _currentJitterBufferFrames;
|
||||
};
|
||||
|
||||
#endif // hifi_InboundAudioStream_h
|
||||
|
|
Loading…
Reference in a new issue