OpalJitterBuffer Class Reference

#include <jitter.h>

Inheritance diagram for OpalJitterBuffer:

OpalJitterBufferThread RTP_JitterBuffer

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

Data Structures

class  Entry
struct  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


Member Function Documentation

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.

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.

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.

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]

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]


The documentation for this class was generated from the following file:
Generated on Mon Feb 21 20:19:23 2011 for OPAL by  doxygen 1.4.7