#include <jitter.h>
Inheritance diagram for OpalJitterBuffer:
Public Member Functions | |
Construction | |
OpalJitterBuffer (unsigned minJitterDelay, unsigned maxJitterDelay, unsigned timeUnits=8, PINDEX packetSize=2048) | |
virtual | ~OpalJitterBuffer () |
Overrides from PObject | |
void | PrintOn (ostream &strm) const |
Operations | |
void | SetDelay (unsigned minJitterDelay, unsigned maxJitterDelay, PINDEX packetSize=2048) |
void | Reset () |
virtual PBoolean | WriteData (const RTP_DataFrame &frame) |
virtual PBoolean | ReadData (RTP_DataFrame &frame) |
DWORD | GetJitterTime () const |
unsigned | GetTimeUnits () const |
DWORD | GetPacketsTooLate () const |
DWORD | GetBufferOverruns () const |
DWORD | GetMaxConsecutiveMarkerBits () const |
void | SetMaxConsecutiveMarkerBits (DWORD max) |
Protected Member Functions | |
OpalJitterBuffer::Entry * | GetAvailableEntry () |
void | InternalWriteData (OpalJitterBuffer::Entry *availableEntry) |
Entry * | GetNewest (bool pop) |
Entry * | GetOldest (bool pop) |
Protected Attributes | |
DWORD | minJitterTime |
DWORD | maxJitterTime |
unsigned | timeUnits |
PINDEX | bufferSize |
DWORD | maxConsecutiveMarkerBits |
DWORD | currentJitterTime |
DWORD | packetsTooLate |
unsigned | bufferOverruns |
unsigned | consecutiveBufferOverruns |
DWORD | consecutiveMarkerBits |
bool | markerWarning |
PTimeInterval | consecutiveEarlyPacketStartTime |
DWORD | lastWriteTimestamp |
PTimeInterval | lastWriteTick |
DWORD | jitterCalc |
DWORD | targetJitterTime |
unsigned | jitterCalcPacketCount |
bool | m_resetJitterBufferNow |
FrameQueue | freeFrames |
FrameQueue | jitterBuffer |
Entry * | currentFrame |
PMutex | bufferMutex |
bool | preBuffering |
bool | firstReadData |
RTP_JitterBufferAnalyser * | analyser |
Data Structures | |
class | Entry |
struct | FrameQueue |
OpalJitterBuffer::OpalJitterBuffer | ( | unsigned | minJitterDelay, | |
unsigned | maxJitterDelay, | |||
unsigned | timeUnits = 8 , |
|||
PINDEX | packetSize = 2048 | |||
) |
Constructor for this jitter buffer. The size of this buffer can be altered later with the SetDelay method
minJitterDelay | Minimum delay in RTP timestamp units |
maxJitterDelay | Maximum delay in RTP timestamp units |
timeUnits | Time units, usually 8 or 16 |
packetSize | Max RTP packet size |
virtual OpalJitterBuffer::~OpalJitterBuffer | ( | ) | [virtual] |
Destructor, which closes this down and deletes the internal list of frames
OpalJitterBuffer::Entry* OpalJitterBuffer::GetAvailableEntry | ( | ) | [protected] |
DWORD OpalJitterBuffer::GetBufferOverruns | ( | ) | const [inline] |
Get total number received packets that overran the jitter buffer.
DWORD OpalJitterBuffer::GetJitterTime | ( | ) | const [inline] |
Get current delay for jitter buffer.
DWORD OpalJitterBuffer::GetMaxConsecutiveMarkerBits | ( | ) | const [inline] |
Get maximum consecutive marker bits before buffer starts to ignore them.
Entry* OpalJitterBuffer::GetNewest | ( | bool | pop | ) | [protected] |
Entry* OpalJitterBuffer::GetOldest | ( | bool | pop | ) | [protected] |
DWORD OpalJitterBuffer::GetPacketsTooLate | ( | ) | const [inline] |
Get total number received packets too late to go into jitter buffer.
unsigned OpalJitterBuffer::GetTimeUnits | ( | ) | const [inline] |
Get time units.
void OpalJitterBuffer::InternalWriteData | ( | OpalJitterBuffer::Entry * | availableEntry | ) | [protected] |
void OpalJitterBuffer::PrintOn | ( | ostream & | strm | ) | const |
Report the statistics for this jitter instance
virtual PBoolean OpalJitterBuffer::ReadData | ( | RTP_DataFrame & | frame | ) | [virtual] |
Read a data frame from the jitter buffer. This function never blocks. If no data is available, an RTP packet with zero payload size is returned.
frame | Frame to extract from jitter buffer |
Reimplemented in OpalJitterBufferThread.
void OpalJitterBuffer::Reset | ( | ) | [inline] |
Reset jitter buffer. Jitter buffer is cleared and "restocked" from input data.
void OpalJitterBuffer::SetDelay | ( | unsigned | minJitterDelay, | |
unsigned | maxJitterDelay, | |||
PINDEX | packetSize = 2048 | |||
) |
Set the maximum delay the jitter buffer will operate to.
minJitterDelay | Minimum delay in RTP timestamp units |
maxJitterDelay | Maximum delay in RTP timestamp units |
packetSize | Max RTP packet size |
void OpalJitterBuffer::SetMaxConsecutiveMarkerBits | ( | DWORD | max | ) | [inline] |
Set maximum consecutive marker bits before buffer starts to ignore them.
virtual PBoolean OpalJitterBuffer::WriteData | ( | const RTP_DataFrame & | frame | ) | [virtual] |
Write data frame from the RTP channel.
frame | Frame to feed into jitter buffer |
RTP_JitterBufferAnalyser* OpalJitterBuffer::analyser [protected] |
PMutex OpalJitterBuffer::bufferMutex [protected] |
unsigned OpalJitterBuffer::bufferOverruns [protected] |
PINDEX OpalJitterBuffer::bufferSize [protected] |
unsigned OpalJitterBuffer::consecutiveBufferOverruns [protected] |
PTimeInterval OpalJitterBuffer::consecutiveEarlyPacketStartTime [protected] |
DWORD OpalJitterBuffer::consecutiveMarkerBits [protected] |
Entry* OpalJitterBuffer::currentFrame [protected] |
DWORD OpalJitterBuffer::currentJitterTime [protected] |
bool OpalJitterBuffer::firstReadData [protected] |
FrameQueue OpalJitterBuffer::freeFrames [protected] |
FrameQueue OpalJitterBuffer::jitterBuffer [protected] |
DWORD OpalJitterBuffer::jitterCalc [protected] |
unsigned OpalJitterBuffer::jitterCalcPacketCount [protected] |
PTimeInterval OpalJitterBuffer::lastWriteTick [protected] |
DWORD OpalJitterBuffer::lastWriteTimestamp [protected] |
bool OpalJitterBuffer::m_resetJitterBufferNow [protected] |
bool OpalJitterBuffer::markerWarning [protected] |
DWORD OpalJitterBuffer::maxConsecutiveMarkerBits [protected] |
DWORD OpalJitterBuffer::maxJitterTime [protected] |
DWORD OpalJitterBuffer::minJitterTime [protected] |
DWORD OpalJitterBuffer::packetsTooLate [protected] |
bool OpalJitterBuffer::preBuffering [protected] |
DWORD OpalJitterBuffer::targetJitterTime [protected] |
unsigned OpalJitterBuffer::timeUnits [protected] |