OpalJitterBuffer Class Reference

#include <jitter.h>

Inheritance diagram for OpalJitterBuffer:

OpalJitterBufferThread RTP_JitterBuffer List of all members.

Public Member Functions

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 shuttingDown
bool preBuffering
bool firstReadData
RTP_JitterBufferAnalyser * analyser

Classes

class  Entry
class  FrameQueue

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

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

void OpalJitterBuffer::PrintOn ( ostream &  strm  )  const

Report the statistics for this jitter instance

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::Reset (  )  [inline]

Reset jitter buffer. Jitter buffer is cleared and "restocked" from input data.

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

Write data frame from the RTP channel.

Parameters:
frame  Frame to feed into jitter buffer

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

DWORD OpalJitterBuffer::GetJitterTime (  )  const [inline]

Get current delay for jitter buffer.

unsigned OpalJitterBuffer::GetTimeUnits (  )  const [inline]

Get time units.

DWORD OpalJitterBuffer::GetPacketsTooLate (  )  const [inline]

Get total number received packets too late to go into jitter buffer.

DWORD OpalJitterBuffer::GetBufferOverruns (  )  const [inline]

Get total number received packets that overran the jitter buffer.

DWORD OpalJitterBuffer::GetMaxConsecutiveMarkerBits (  )  const [inline]

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

void OpalJitterBuffer::SetMaxConsecutiveMarkerBits ( DWORD  max  )  [inline]

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

OpalJitterBuffer::Entry* OpalJitterBuffer::GetAvailableEntry (  )  [protected]

void OpalJitterBuffer::InternalWriteData ( OpalJitterBuffer::Entry availableEntry  )  [protected]

Entry* OpalJitterBuffer::GetNewest ( bool  pop  )  [inline, protected]

Entry* OpalJitterBuffer::GetOldest ( bool  pop  )  [inline, protected]


Member Data Documentation

DWORD OpalJitterBuffer::minJitterTime [protected]

DWORD OpalJitterBuffer::maxJitterTime [protected]

unsigned OpalJitterBuffer::timeUnits [protected]

PINDEX OpalJitterBuffer::bufferSize [protected]

DWORD OpalJitterBuffer::maxConsecutiveMarkerBits [protected]

DWORD OpalJitterBuffer::currentJitterTime [protected]

DWORD OpalJitterBuffer::packetsTooLate [protected]

unsigned OpalJitterBuffer::bufferOverruns [protected]

unsigned OpalJitterBuffer::consecutiveBufferOverruns [protected]

DWORD OpalJitterBuffer::consecutiveMarkerBits [protected]

bool OpalJitterBuffer::markerWarning [protected]

PTimeInterval OpalJitterBuffer::consecutiveEarlyPacketStartTime [protected]

DWORD OpalJitterBuffer::lastWriteTimestamp [protected]

PTimeInterval OpalJitterBuffer::lastWriteTick [protected]

DWORD OpalJitterBuffer::jitterCalc [protected]

DWORD OpalJitterBuffer::targetJitterTime [protected]

unsigned OpalJitterBuffer::jitterCalcPacketCount [protected]

bool OpalJitterBuffer::m_resetJitterBufferNow [protected]

FrameQueue OpalJitterBuffer::freeFrames [protected]

FrameQueue OpalJitterBuffer::jitterBuffer [protected]

Entry* OpalJitterBuffer::currentFrame [protected]

PMutex OpalJitterBuffer::bufferMutex [protected]

bool OpalJitterBuffer::shuttingDown [protected]

bool OpalJitterBuffer::preBuffering [protected]

bool OpalJitterBuffer::firstReadData [protected]

RTP_JitterBufferAnalyser* OpalJitterBuffer::analyser [protected]


The documentation for this class was generated from the following file:
Generated on Mon Aug 3 20:50:53 2009 for OPAL by  doxygen 1.5.1