#include <jitter.h>
Inheritance diagram for OpalJitterBuffer:

Public Member Functions | |
| OpalJitterBuffer (unsigned minJitterDelay, unsigned maxJitterDelay, unsigned timeUnits=8, PINDEX stackSize=30000) | |
| virtual | ~OpalJitterBuffer () | 
| void | PrintOn (ostream &strm) const | 
| virtual PBoolean | OnReadPacket (RTP_DataFrame &frame, PBoolean loop)=0 | 
| void | SetDelay (unsigned minJitterDelay, unsigned maxJitterDelay) | 
| void | UseImmediateReduction (PBoolean state) | 
| 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) | 
| virtual void | Resume (PHandleAggregator *aggregator=NULL) | 
| PDECLARE_NOTIFIER (PThread, OpalJitterBuffer, JitterThreadMain) | |
| PBoolean | WaitForTermination (const PTimeInterval &t) | 
| bool | IsEmpty () | 
Protected Member Functions | |
| void | Start (unsigned _minJitterTime, unsigned _maxJitterTime) | 
| Entry * | GetNewest (bool pop) | 
| Entry * | GetOldest (bool pop) | 
| PBoolean | Init (Entry *¤tReadFrame, PBoolean &markerWarning) | 
| PBoolean | PreRead (Entry *¤tReadFrame, PBoolean &markerWarning) | 
| PBoolean | OnRead (Entry *¤tReadFrame, PBoolean &markerWarning, PBoolean loop) | 
| void | DeInit (Entry *¤tReadFrame, PBoolean &markerWarning) | 
Protected Attributes | |
| PINDEX | bufferSize | 
| DWORD | minJitterTime | 
| DWORD | maxJitterTime | 
| DWORD | maxConsecutiveMarkerBits | 
| unsigned | timeUnits | 
| DWORD | currentJitterTime | 
| DWORD | packetsTooLate | 
| unsigned | bufferOverruns | 
| unsigned | consecutiveBufferOverruns | 
| DWORD | consecutiveMarkerBits | 
| PTimeInterval | consecutiveEarlyPacketStartTime | 
| DWORD | lastWriteTimestamp | 
| PTimeInterval | lastWriteTick | 
| DWORD | jitterCalc | 
| DWORD | targetJitterTime | 
| unsigned | jitterCalcPacketCount | 
| bool | doJitterReductionImmediately | 
| FrameQueue | freeFrames | 
| FrameQueue | jitterBuffer | 
| Entry * | currentFrame | 
| PMutex | bufferMutex | 
| bool | shuttingDown | 
| bool | preBuffering | 
| bool | firstReadData | 
| RTP_JitterBufferAnalyser * | analyser | 
| PThread * | jitterThread | 
| PINDEX | jitterStackSize | 
Classes | |
| class | Entry | 
| class | FrameQueue | 
| 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
| 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 | 
| virtual OpalJitterBuffer::~OpalJitterBuffer | ( | ) |  [virtual] | 
        
Destructor, which closes this down and deletes the internal list of frames
| void OpalJitterBuffer::PrintOn | ( | ostream & | strm | ) | const | 
Report the statistics for this jitter instance
| virtual PBoolean OpalJitterBuffer::OnReadPacket | ( | RTP_DataFrame & | frame, | |
| PBoolean | loop | |||
| ) |  [pure virtual] | 
        
This method is where this OpalJitterBuffer collects data from the outside world. A descendant class of OpalJitterBuffer will override this method
| frame | Frame read from the RTP session | 
| loop | If PTrue, loop as long as data is available, if PFalse, 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.
| minJitterDelay | Minimum delay in RTP timestamp units | 
| maxJitterDelay | Maximum delay in RTP timestamp units | 
| void OpalJitterBuffer::UseImmediateReduction | ( | PBoolean | state | ) |  [inline] | 
        
| virtual PBoolean OpalJitterBuffer::ReadData | ( | 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.
| 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.
| virtual void OpalJitterBuffer::Resume | ( | PHandleAggregator * |  aggregator = NULL           | 
          ) |  [virtual] | 
        
Start jitter thread
| OpalJitterBuffer::PDECLARE_NOTIFIER | ( | PThread | , | |
| OpalJitterBuffer | , | |||
| JitterThreadMain | ||||
| ) | 
| PBoolean OpalJitterBuffer::WaitForTermination | ( | const PTimeInterval & | t | ) |  [inline] | 
        
| bool OpalJitterBuffer::IsEmpty | ( | ) |  [inline] | 
        
| void OpalJitterBuffer::Start | ( | unsigned | _minJitterTime, | |
| unsigned | _maxJitterTime | |||
| ) |  [protected] | 
        
| Entry* OpalJitterBuffer::GetNewest | ( | bool | pop | ) |  [inline, protected] | 
        
| Entry* OpalJitterBuffer::GetOldest | ( | bool | pop | ) |  [inline, protected] | 
        
| PBoolean OpalJitterBuffer::Init | ( | Entry *& | currentReadFrame, | |
| PBoolean & | markerWarning | |||
| ) |  [protected] | 
        
| PBoolean OpalJitterBuffer::PreRead | ( | Entry *& | currentReadFrame, | |
| PBoolean & | markerWarning | |||
| ) |  [protected] | 
        
| PBoolean OpalJitterBuffer::OnRead | ( | Entry *& | currentReadFrame, | |
| PBoolean & | markerWarning, | |||
| PBoolean | loop | |||
| ) |  [protected] | 
        
| void OpalJitterBuffer::DeInit | ( | Entry *& | currentReadFrame, | |
| PBoolean & | markerWarning | |||
| ) |  [protected] | 
        
PINDEX OpalJitterBuffer::bufferSize [protected]           | 
        
DWORD OpalJitterBuffer::minJitterTime [protected]           | 
        
DWORD OpalJitterBuffer::maxJitterTime [protected]           | 
        
DWORD OpalJitterBuffer::maxConsecutiveMarkerBits [protected]           | 
        
unsigned OpalJitterBuffer::timeUnits [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]           | 
        
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]           | 
        
PThread* OpalJitterBuffer::jitterThread [protected]           | 
        
PINDEX OpalJitterBuffer::jitterStackSize [protected]           | 
        
 1.5.1