OpalJitterBuffer Class Reference

#include <jitter.h>

Inheritance diagram for OpalJitterBuffer:

IAX2JitterBuffer RTP_JitterBuffer List of all members.

Public Member Functions

 OpalJitterBuffer (unsigned minJitterDelay, unsigned maxJitterDelay, unsigned timeUnits=8, PINDEX stackSize=30000)
 ~OpalJitterBuffer ()
void PrintOn (ostream &strm) const
virtual BOOL OnReadPacket (RTP_DataFrame &frame, BOOL loop)=0
void SetDelay (unsigned minJitterDelay, unsigned maxJitterDelay)
void UseImmediateReduction (BOOL state)
virtual BOOL ReadData (DWORD timestamp, RTP_DataFrame &frame)
DWORD GetJitterTime () const
unsigned GetTimeUnits () const
DWORD GetPacketsTooLate () const
DWORD GetBufferOverruns () const
DWORD GetMaxConsecutiveMarkerBits () const
void SetMaxConsecutiveMarkerBits (DWORD max)
void Resume (PHandleAggregator *aggregator=NULL)
 PDECLARE_NOTIFIER (PThread, OpalJitterBuffer, JitterThreadMain)
BOOL WaitForTermination (const PTimeInterval &t)

Protected Member Functions

BOOL Init (Entry *&currentReadFrame, BOOL &markerWarning)
BOOL PreRead (Entry *&currentReadFrame, BOOL &markerWarning)
BOOL OnRead (Entry *&currentReadFrame, BOOL &markerWarning, BOOL loop)
void DeInit (Entry *&currentReadFrame, BOOL &markerWarning)

Protected Attributes

PINDEX bufferSize
DWORD minJitterTime
DWORD maxJitterTime
DWORD maxConsecutiveMarkerBits
unsigned timeUnits
unsigned currentDepth
DWORD currentJitterTime
DWORD packetsTooLate
unsigned bufferOverruns
unsigned consecutiveBufferOverruns
DWORD consecutiveMarkerBits
PTimeInterval consecutiveEarlyPacketStartTime
DWORD lastWriteTimestamp
PTimeInterval lastWriteTick
DWORD jitterCalc
DWORD targetJitterTime
unsigned jitterCalcPacketCount
BOOL doJitterReductionImmediately
BOOL doneFreeTrash
EntryoldestFrame
EntrynewestFrame
EntryfreeFrames
EntrycurrentWriteFrame
PMutex bufferMutex
BOOL shuttingDown
BOOL preBuffering
BOOL doneFirstWrite
RTP_JitterBufferAnalyser * analyser
PThread * jitterThread
PINDEX jitterStackSize
RTP_AggregatedHandleaggregratedHandle

Classes

class  Entry

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  stackSize = 30000 
)

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
stackSize  Stack size for jitter thread

OpalJitterBuffer::~OpalJitterBuffer (  ) 

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

virtual BOOL OpalJitterBuffer::OnReadPacket ( RTP_DataFrame frame,
BOOL  loop 
) [pure virtual]

This method is where this OpalJitterBuffer collects data from the outside world. A descendant class of OpalJitterBuffer will override this method

Returns:
TRUE on successful read, FALSE on faulty read.
Parameters:
frame  Frame read from the RTP session
loop  If TRUE, loop as long as data is available, if FALSE, only process once

Implemented in IAX2JitterBuffer, and RTP_JitterBuffer.

void OpalJitterBuffer::SetDelay ( unsigned  minJitterDelay,
unsigned  maxJitterDelay 
)

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

void OpalJitterBuffer::UseImmediateReduction ( BOOL  state  )  [inline]

virtual BOOL OpalJitterBuffer::ReadData ( DWORD  timestamp,
RTP_DataFrame frame 
) [virtual]

Read a data frame from the RTP channel. Any control frames received are dispatched to callbacks and are not returned by this function. It will block until a data frame is available or an error occurs.

Parameters:
timestamp  Timestamp to read from buffer.
frame  Frame read from the RTP session

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.

void OpalJitterBuffer::Resume ( PHandleAggregator aggregator = NULL  ) 

Start jitter thread

OpalJitterBuffer::PDECLARE_NOTIFIER ( PThread  ,
OpalJitterBuffer  ,
JitterThreadMain   
)

BOOL OpalJitterBuffer::WaitForTermination ( const PTimeInterval &  t  )  [inline]

BOOL OpalJitterBuffer::Init ( Entry *&  currentReadFrame,
BOOL &  markerWarning 
) [protected]

BOOL OpalJitterBuffer::PreRead ( Entry *&  currentReadFrame,
BOOL &  markerWarning 
) [protected]

BOOL OpalJitterBuffer::OnRead ( Entry *&  currentReadFrame,
BOOL &  markerWarning,
BOOL  loop 
) [protected]

void OpalJitterBuffer::DeInit ( Entry *&  currentReadFrame,
BOOL &  markerWarning 
) [protected]


Member Data Documentation

PINDEX OpalJitterBuffer::bufferSize [protected]

DWORD OpalJitterBuffer::minJitterTime [protected]

DWORD OpalJitterBuffer::maxJitterTime [protected]

DWORD OpalJitterBuffer::maxConsecutiveMarkerBits [protected]

unsigned OpalJitterBuffer::timeUnits [protected]

unsigned OpalJitterBuffer::currentDepth [protected]

DWORD OpalJitterBuffer::currentJitterTime [protected]

DWORD OpalJitterBuffer::packetsTooLate [protected]

unsigned OpalJitterBuffer::bufferOverruns [protected]

unsigned OpalJitterBuffer::consecutiveBufferOverruns [protected]

DWORD OpalJitterBuffer::consecutiveMarkerBits [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::doJitterReductionImmediately [protected]

BOOL OpalJitterBuffer::doneFreeTrash [protected]

Entry* OpalJitterBuffer::oldestFrame [protected]

Entry* OpalJitterBuffer::newestFrame [protected]

Entry* OpalJitterBuffer::freeFrames [protected]

Entry* OpalJitterBuffer::currentWriteFrame [protected]

PMutex OpalJitterBuffer::bufferMutex [protected]

BOOL OpalJitterBuffer::shuttingDown [protected]

BOOL OpalJitterBuffer::preBuffering [protected]

BOOL OpalJitterBuffer::doneFirstWrite [protected]

RTP_JitterBufferAnalyser* OpalJitterBuffer::analyser [protected]

PThread* OpalJitterBuffer::jitterThread [protected]

PINDEX OpalJitterBuffer::jitterStackSize [protected]

RTP_AggregatedHandle* OpalJitterBuffer::aggregratedHandle [protected]


The documentation for this class was generated from the following file:
Generated on Fri Mar 7 06:34:04 2008 for OPAL by  doxygen 1.5.1