Make jitter buffer message follow the same rules as the networking ones.

This commit is contained in:
Jonathan Naylor 2017-11-26 18:00:21 +00:00
parent a215ce2982
commit ccb3f37d5d
3 changed files with 12 additions and 7 deletions

View file

@ -83,8 +83,8 @@ m_beacon(false)
m_streamId[0U] = 0x00U;
m_streamId[1U] = 0x00U;
m_jitterBuffers[1U] = new CJitterBuffer(60U, DMR_SLOT_TIME, jitter, 256U);
m_jitterBuffers[2U] = new CJitterBuffer(60U, DMR_SLOT_TIME, jitter, 256U);
m_jitterBuffers[1U] = new CJitterBuffer(60U, DMR_SLOT_TIME, jitter, 256U, debug);
m_jitterBuffers[2U] = new CJitterBuffer(60U, DMR_SLOT_TIME, jitter, 256U, debug);
m_id[0U] = id >> 24;
m_id[1U] = id >> 16;

View file

@ -24,10 +24,11 @@
#include <cassert>
#include <cstring>
CJitterBuffer::CJitterBuffer(unsigned int blockSize, unsigned int blockTime, unsigned int jitterTime, unsigned int topSequenceNumber) :
CJitterBuffer::CJitterBuffer(unsigned int blockSize, unsigned int blockTime, unsigned int jitterTime, unsigned int topSequenceNumber, bool debug) :
m_blockSize(blockSize),
m_blockTime(blockTime),
m_topSequenceNumber(topSequenceNumber),
m_debug(debug),
m_blockCount(0U),
m_timer(1000U, 0U, jitterTime),
m_stopWatch(),
@ -74,12 +75,14 @@ bool CJitterBuffer::addData(const unsigned char* data, unsigned int length, unsi
// Is the data out of sequence?
if (headSequenceNumber < tailSequenceNumber) {
if (sequenceNumber < headSequenceNumber || sequenceNumber >= tailSequenceNumber) {
LogInfo("JitterBuffer: rejecting frame with seqNo=%u, head=%u, tail=%u", sequenceNumber, headSequenceNumber, tailSequenceNumber);
if (m_debug)
LogDebug("JitterBuffer: rejecting frame with seqNo=%u, head=%u, tail=%u", sequenceNumber, headSequenceNumber, tailSequenceNumber);
return false;
}
} else {
if (sequenceNumber >= tailSequenceNumber && sequenceNumber < headSequenceNumber) {
LogInfo("JitterBuffer: rejecting frame with seqNo=%u, head=%u, tail=%u", sequenceNumber, headSequenceNumber, tailSequenceNumber);
if (m_debug)
LogDebug("JitterBuffer: rejecting frame with seqNo=%u, head=%u, tail=%u", sequenceNumber, headSequenceNumber, tailSequenceNumber);
return false;
}
}
@ -94,7 +97,8 @@ bool CJitterBuffer::addData(const unsigned char* data, unsigned int length, unsi
// Do we already have the data?
if (m_buffer[index].m_length > 0U) {
LogInfo("JitterBuffer: rejecting frame with seqNo=%u, already exists", sequenceNumber);
if (m_debug)
LogDebug("JitterBuffer: rejecting frame with seqNo=%u, already exists", sequenceNumber);
return false;
}

View file

@ -30,7 +30,7 @@ enum JB_STATUS {
class CJitterBuffer {
public:
CJitterBuffer(unsigned int blockSize, unsigned int blockTime, unsigned int jitterTime, unsigned int topSequenceNumber);
CJitterBuffer(unsigned int blockSize, unsigned int blockTime, unsigned int jitterTime, unsigned int topSequenceNumber, bool debug);
~CJitterBuffer();
bool addData(const unsigned char* data, unsigned int length, unsigned int sequenceNumber);
@ -45,6 +45,7 @@ private:
unsigned int m_blockSize;
unsigned int m_blockTime;
unsigned int m_topSequenceNumber;
bool m_debug;
unsigned int m_blockCount;
CTimer m_timer;
CStopWatch m_stopWatch;