another improvement of auto jitter buffer detection in very bad network conditions

This commit is contained in:
Volker Fischer 2015-03-21 11:48:27 +00:00
parent 0691ed7910
commit 79c83a4c13
3 changed files with 20 additions and 5 deletions

View file

@ -1,5 +1,7 @@
3.3.9 3.3.9
- another improvement of auto jitter buffer detection in very bad
network conditions

View file

@ -150,11 +150,9 @@ void CNetBufWithStats::Init ( const int iNewBlockSize,
ErrorRateStatistic[i].Init ( MAX_STATISTIC_COUNT, true ); ErrorRateStatistic[i].Init ( MAX_STATISTIC_COUNT, true );
} }
// start initialization phase of IIR filtering, use a quarter the size // reset the initialization counter which controls the initialization
// of the error rate statistic buffers which should be ok for a good // phase length
// initialization value (initialization phase should be as short as ResetInitCounter();
// possible
iInitCounter = MAX_STATISTIC_COUNT / 4;
// init auto buffer setting with a meaningful value, also init the // init auto buffer setting with a meaningful value, also init the
// IIR parameter with this value // IIR parameter with this value
@ -164,6 +162,15 @@ void CNetBufWithStats::Init ( const int iNewBlockSize,
} }
} }
void CNetBufWithStats::ResetInitCounter()
{
// start initialization phase of IIR filtering, use a quarter the size
// of the error rate statistic buffers which should be ok for a good
// initialization value (initialization phase should be as short as
// possible)
iInitCounter = MAX_STATISTIC_COUNT / 4;
}
bool CNetBufWithStats::Put ( const CVector<uint8_t>& vecbyData, bool CNetBufWithStats::Put ( const CVector<uint8_t>& vecbyData,
const int iInSize ) const int iInSize )
{ {
@ -250,6 +257,11 @@ void CNetBufWithStats::UpdateAutoSetting()
{ {
// in case no buffer is below bound, use largest buffer size // in case no buffer is below bound, use largest buffer size
iCurMaxUpDecision = viBufSizesForSim[NUM_STAT_SIMULATION_BUFFERS - 1]; iCurMaxUpDecision = viBufSizesForSim[NUM_STAT_SIMULATION_BUFFERS - 1];
// This is a worst case, something very bad had happened. Hopefully
// this was just temporary so that we initiate a new initialzation
// phase to get quickly back to normal buffer sizes (hopefully).
ResetInitCounter();
} }

View file

@ -418,6 +418,7 @@ public:
protected: protected:
void UpdateAutoSetting(); void UpdateAutoSetting();
void ResetInitCounter();
// statistic (do not use the vector class since the classes do not have // statistic (do not use the vector class since the classes do not have
// appropriate copy constructor/operator) // appropriate copy constructor/operator)