mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-23 16:55:52 +08:00
Add more detail.
This commit is contained in:
@@ -70,14 +70,20 @@ bool CJitterBuffer::addData(const unsigned char* data, unsigned int sequenceNumb
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int number = sequenceNumber - headSequenceNumber;
|
unsigned int number;
|
||||||
|
if (sequenceNumber >= headSequenceNumber)
|
||||||
|
number = sequenceNumber - headSequenceNumber;
|
||||||
|
else
|
||||||
|
number = (sequenceNumber + m_blockCount) - headSequenceNumber;;
|
||||||
|
|
||||||
|
unsigned int index = (m_headSequenceNumber + number) % m_blockCount;
|
||||||
|
|
||||||
// Do we already have the data?
|
// Do we already have the data?
|
||||||
if (m_buffer[number].m_used)
|
if (m_buffer[index].m_used)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
::memcpy(m_buffer[number].m_data, data, m_blockSize);
|
::memcpy(m_buffer[index].m_data, data, m_blockSize);
|
||||||
m_buffer[number].m_used = true;
|
m_buffer[index].m_used = true;
|
||||||
|
|
||||||
if (!m_timer.isRunning())
|
if (!m_timer.isRunning())
|
||||||
m_timer.start();
|
m_timer.start();
|
||||||
@@ -98,8 +104,11 @@ JB_STATUS CJitterBuffer::getData(unsigned char* data)
|
|||||||
if (m_headSequenceNumber > sequenceNumber)
|
if (m_headSequenceNumber > sequenceNumber)
|
||||||
return JBS_NO_DATA;
|
return JBS_NO_DATA;
|
||||||
|
|
||||||
if (m_buffer[m_headSequenceNumber].m_used) {
|
unsigned int head = m_headSequenceNumber % m_blockCount;
|
||||||
::memcpy(data, m_buffer[m_headSequenceNumber].m_data, m_blockSize);
|
|
||||||
|
if (m_buffer[head].m_used) {
|
||||||
|
::memcpy(data, m_buffer[head].m_data, m_blockSize);
|
||||||
|
m_buffer[head].m_used = false;
|
||||||
|
|
||||||
m_headSequenceNumber++;
|
m_headSequenceNumber++;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user