mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Make jitter buffer message follow the same rules as the networking ones.
This commit is contained in:
@@ -83,8 +83,8 @@ m_beacon(false)
|
|||||||
m_streamId[0U] = 0x00U;
|
m_streamId[0U] = 0x00U;
|
||||||
m_streamId[1U] = 0x00U;
|
m_streamId[1U] = 0x00U;
|
||||||
|
|
||||||
m_jitterBuffers[1U] = 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);
|
m_jitterBuffers[2U] = new CJitterBuffer(60U, DMR_SLOT_TIME, jitter, 256U, debug);
|
||||||
|
|
||||||
m_id[0U] = id >> 24;
|
m_id[0U] = id >> 24;
|
||||||
m_id[1U] = id >> 16;
|
m_id[1U] = id >> 16;
|
||||||
|
|||||||
@@ -24,10 +24,11 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstring>
|
#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_blockSize(blockSize),
|
||||||
m_blockTime(blockTime),
|
m_blockTime(blockTime),
|
||||||
m_topSequenceNumber(topSequenceNumber),
|
m_topSequenceNumber(topSequenceNumber),
|
||||||
|
m_debug(debug),
|
||||||
m_blockCount(0U),
|
m_blockCount(0U),
|
||||||
m_timer(1000U, 0U, jitterTime),
|
m_timer(1000U, 0U, jitterTime),
|
||||||
m_stopWatch(),
|
m_stopWatch(),
|
||||||
@@ -74,12 +75,14 @@ bool CJitterBuffer::addData(const unsigned char* data, unsigned int length, unsi
|
|||||||
// Is the data out of sequence?
|
// Is the data out of sequence?
|
||||||
if (headSequenceNumber < tailSequenceNumber) {
|
if (headSequenceNumber < tailSequenceNumber) {
|
||||||
if (sequenceNumber < headSequenceNumber || sequenceNumber >= 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;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (sequenceNumber >= tailSequenceNumber && sequenceNumber < headSequenceNumber) {
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -94,7 +97,8 @@ bool CJitterBuffer::addData(const unsigned char* data, unsigned int length, unsi
|
|||||||
|
|
||||||
// Do we already have the data?
|
// Do we already have the data?
|
||||||
if (m_buffer[index].m_length > 0U) {
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ enum JB_STATUS {
|
|||||||
|
|
||||||
class CJitterBuffer {
|
class CJitterBuffer {
|
||||||
public:
|
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();
|
~CJitterBuffer();
|
||||||
|
|
||||||
bool addData(const unsigned char* data, unsigned int length, unsigned int sequenceNumber);
|
bool addData(const unsigned char* data, unsigned int length, unsigned int sequenceNumber);
|
||||||
@@ -45,6 +45,7 @@ private:
|
|||||||
unsigned int m_blockSize;
|
unsigned int m_blockSize;
|
||||||
unsigned int m_blockTime;
|
unsigned int m_blockTime;
|
||||||
unsigned int m_topSequenceNumber;
|
unsigned int m_topSequenceNumber;
|
||||||
|
bool m_debug;
|
||||||
unsigned int m_blockCount;
|
unsigned int m_blockCount;
|
||||||
CTimer m_timer;
|
CTimer m_timer;
|
||||||
CStopWatch m_stopWatch;
|
CStopWatch m_stopWatch;
|
||||||
|
|||||||
Reference in New Issue
Block a user