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

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 *¤tReadFrame, BOOL &markerWarning) |
| BOOL | PreRead (Entry *¤tReadFrame, BOOL &markerWarning) |
| BOOL | OnRead (Entry *¤tReadFrame, BOOL &markerWarning, BOOL loop) |
| void | DeInit (Entry *¤tReadFrame, 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 |
| Entry * | oldestFrame |
| Entry * | newestFrame |
| Entry * | freeFrames |
| Entry * | currentWriteFrame |
| PMutex | bufferMutex |
| BOOL | shuttingDown |
| BOOL | preBuffering |
| BOOL | doneFirstWrite |
| RTP_JitterBufferAnalyser * | analyser |
| PThread * | jitterThread |
| PINDEX | jitterStackSize |
| RTP_AggregatedHandle * | aggregratedHandle |
Classes | |
| class | Entry |
| 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 |
| OpalJitterBuffer::~OpalJitterBuffer | ( | ) |
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 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
| 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.
| 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.
| 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] |
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] |
1.5.1