#include <jitter.h>
Public Member Functions | |
RTP_JitterBuffer (RTP_Session &session, unsigned minJitterDelay, unsigned maxJitterDelay, PINDEX stackSize=30000) | |
~RTP_JitterBuffer () | |
void | SetDelay (unsigned minJitterDelay, unsigned maxJitterDelay) |
void | UseImmediateReduction (BOOL state) |
virtual BOOL | ReadData (DWORD timestamp, RTP_DataFrame &frame) |
DWORD | GetJitterTime () const |
DWORD | GetPacketsTooLate () const |
DWORD | GetBufferOverruns () const |
DWORD | GetMaxConsecutiveMarkerBits () const |
void | SetMaxConsecutiveMarkerBits (DWORD max) |
void | Resume () |
PDECLARE_NOTIFIER (PThread, RTP_JitterBuffer, JitterThreadMain) | |
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 | |
RTP_Session & | session |
PINDEX | bufferSize |
DWORD | minJitterTime |
DWORD | maxJitterTime |
DWORD | maxConsecutiveMarkerBits |
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 |
Friends | |
class | RTP_AggregatedHandle |
Classes | |
class | Entry |
RTP_JitterBuffer::RTP_JitterBuffer | ( | RTP_Session & | session, | |
unsigned | minJitterDelay, | |||
unsigned | maxJitterDelay, | |||
PINDEX | stackSize = 30000 | |||
) |
session | Associated RTP session tor ead data from |
minJitterDelay | Minimum delay in RTP timestamp units |
maxJitterDelay | Maximum delay in RTP timestamp units |
stackSize | Stack size for jitter thread |
RTP_JitterBuffer::~RTP_JitterBuffer | ( | ) |
void RTP_JitterBuffer::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 RTP_JitterBuffer::UseImmediateReduction | ( | BOOL | state | ) | [inline] |
References doJitterReductionImmediately.
virtual BOOL RTP_JitterBuffer::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 RTP_JitterBuffer::GetJitterTime | ( | ) | const [inline] |
Get current delay for jitter buffer.
References currentJitterTime.
DWORD RTP_JitterBuffer::GetPacketsTooLate | ( | ) | const [inline] |
Get total number received packets too late to go into jitter buffer.
References packetsTooLate.
DWORD RTP_JitterBuffer::GetBufferOverruns | ( | ) | const [inline] |
Get total number received packets that overran the jitter buffer.
References bufferOverruns.
DWORD RTP_JitterBuffer::GetMaxConsecutiveMarkerBits | ( | ) | const [inline] |
Get maximum consecutive marker bits before buffer starts to ignore them.
References maxConsecutiveMarkerBits.
void RTP_JitterBuffer::SetMaxConsecutiveMarkerBits | ( | DWORD | max | ) | [inline] |
Set maximum consecutive marker bits before buffer starts to ignore them.
References maxConsecutiveMarkerBits.
void RTP_JitterBuffer::Resume | ( | ) |
Start seperate jitter thread
RTP_JitterBuffer::PDECLARE_NOTIFIER | ( | PThread | , | |
RTP_JitterBuffer | , | |||
JitterThreadMain | ||||
) |
BOOL RTP_JitterBuffer::Init | ( | Entry *& | currentReadFrame, | |
BOOL & | markerWarning | |||
) | [protected] |
BOOL RTP_JitterBuffer::PreRead | ( | Entry *& | currentReadFrame, | |
BOOL & | markerWarning | |||
) | [protected] |
BOOL RTP_JitterBuffer::OnRead | ( | Entry *& | currentReadFrame, | |
BOOL & | markerWarning, | |||
BOOL | loop | |||
) | [protected] |
void RTP_JitterBuffer::DeInit | ( | Entry *& | currentReadFrame, | |
BOOL & | markerWarning | |||
) | [protected] |
friend class RTP_AggregatedHandle [friend] |
RTP_Session& RTP_JitterBuffer::session [protected] |
PINDEX RTP_JitterBuffer::bufferSize [protected] |
DWORD RTP_JitterBuffer::minJitterTime [protected] |
DWORD RTP_JitterBuffer::maxJitterTime [protected] |
DWORD RTP_JitterBuffer::maxConsecutiveMarkerBits [protected] |
Referenced by GetMaxConsecutiveMarkerBits(), and SetMaxConsecutiveMarkerBits().
unsigned RTP_JitterBuffer::currentDepth [protected] |
DWORD RTP_JitterBuffer::currentJitterTime [protected] |
Referenced by GetJitterTime().
DWORD RTP_JitterBuffer::packetsTooLate [protected] |
Referenced by GetPacketsTooLate().
unsigned RTP_JitterBuffer::bufferOverruns [protected] |
Referenced by GetBufferOverruns().
unsigned RTP_JitterBuffer::consecutiveBufferOverruns [protected] |
DWORD RTP_JitterBuffer::consecutiveMarkerBits [protected] |
PTimeInterval RTP_JitterBuffer::consecutiveEarlyPacketStartTime [protected] |
DWORD RTP_JitterBuffer::lastWriteTimestamp [protected] |
PTimeInterval RTP_JitterBuffer::lastWriteTick [protected] |
DWORD RTP_JitterBuffer::jitterCalc [protected] |
DWORD RTP_JitterBuffer::targetJitterTime [protected] |
unsigned RTP_JitterBuffer::jitterCalcPacketCount [protected] |
BOOL RTP_JitterBuffer::doJitterReductionImmediately [protected] |
Referenced by UseImmediateReduction().
BOOL RTP_JitterBuffer::doneFreeTrash [protected] |
Entry* RTP_JitterBuffer::oldestFrame [protected] |
Entry* RTP_JitterBuffer::newestFrame [protected] |
Entry* RTP_JitterBuffer::freeFrames [protected] |
Entry* RTP_JitterBuffer::currentWriteFrame [protected] |
PMutex RTP_JitterBuffer::bufferMutex [protected] |
BOOL RTP_JitterBuffer::shuttingDown [protected] |
BOOL RTP_JitterBuffer::preBuffering [protected] |
BOOL RTP_JitterBuffer::doneFirstWrite [protected] |
RTP_JitterBufferAnalyser* RTP_JitterBuffer::analyser [protected] |
PThread* RTP_JitterBuffer::jitterThread [protected] |
PINDEX RTP_JitterBuffer::jitterStackSize [protected] |