OpalJitterBuffer Class Reference

#include <jitter.h>

Inheritance diagram for OpalJitterBuffer:
OpalJitterBufferThread RTP_JitterBuffer

Data Structures

class  Entry
struct  FrameQueue

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::EntryGetAvailableEntry ()
void InternalWriteData (OpalJitterBuffer::Entry *availableEntry)
EntryGetNewest (bool pop)
EntryGetOldest (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
EntrycurrentFrame
PMutex bufferMutex
bool preBuffering
bool firstReadData
RTP_JitterBufferAnalyser * analyser

Detailed Description

This is an Abstract jitter buffer, which can be used simply in any application. The user is required to use a descendant of this class, and provide a "OnReadPacket" method, so that network packets can be placed in this class instance


Constructor & Destructor Documentation

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

Parameters:
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


Member Function Documentation

OpalJitterBuffer::Entry* OpalJitterBuffer::GetAvailableEntry (  )  [protected]
DWORD OpalJitterBuffer::GetBufferOverruns (  )  const [inline]

Get total number received packets that overran the jitter buffer.

References bufferOverruns.

DWORD OpalJitterBuffer::GetJitterTime (  )  const [inline]

Get current delay for jitter buffer.

References currentJitterTime.

DWORD OpalJitterBuffer::GetMaxConsecutiveMarkerBits (  )  const [inline]

Get maximum consecutive marker bits before buffer starts to ignore them.

References maxConsecutiveMarkerBits.

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.

References packetsTooLate.

unsigned OpalJitterBuffer::GetTimeUnits (  )  const [inline]

Get time units.

References timeUnits.

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.

Parameters:
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.

References m_resetJitterBufferNow.

void OpalJitterBuffer::SetDelay ( unsigned  minJitterDelay,
unsigned  maxJitterDelay,
PINDEX  packetSize = 2048 
)

Set the maximum delay the jitter buffer will operate to.

Parameters:
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.

References maxConsecutiveMarkerBits.

virtual PBoolean OpalJitterBuffer::WriteData ( const RTP_DataFrame frame  )  [virtual]

Write data frame from the RTP channel.

Parameters:
frame Frame to feed into jitter buffer

Field Documentation

RTP_JitterBufferAnalyser* OpalJitterBuffer::analyser [protected]
PMutex OpalJitterBuffer::bufferMutex [protected]
unsigned OpalJitterBuffer::bufferOverruns [protected]

Referenced by GetBufferOverruns().

PINDEX OpalJitterBuffer::bufferSize [protected]

Referenced by GetJitterTime().

DWORD OpalJitterBuffer::jitterCalc [protected]
PTimeInterval OpalJitterBuffer::lastWriteTick [protected]

Referenced by Reset().

Referenced by GetPacketsTooLate().

unsigned OpalJitterBuffer::timeUnits [protected]

Referenced by GetTimeUnits().


The documentation for this class was generated from the following file:

Generated on 14 Jul 2011 for OPAL by  doxygen 1.6.1