Add more detail.

This commit is contained in:
Jonathan Naylor
2017-11-22 13:41:10 +00:00
parent 036d8b3d2d
commit 982b0992b3

View File

@@ -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++;