#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] |