OPAL  Version 3.10.10
OpalJitterBuffer Class Reference

#include <jitter.h>

Inheritance diagram for OpalJitterBuffer:
OpalJitterBufferThread RTP_JitterBuffer

Public Member Functions

Construction
 OpalJitterBuffer (unsigned minJitterDelay, unsigned maxJitterDelay, unsigned timeUnits=8, PINDEX packetSize=2048)
 
virtual ~OpalJitterBuffer ()
 
Overrides from PObject
void PrintOn (ostream &strm) const
 
Operations
void SetDelay (unsigned minJitterDelay, unsigned maxJitterDelay, PINDEX packetSize=2048)
 
void Reset ()
 
virtual PBoolean WriteData (const RTP_DataFrame &frame, const PTimeInterval &tick=0)
 
virtual PBoolean ReadData (RTP_DataFrame &frame, const PTimeInterval &tick=0)
 
DWORD GetCurrentJitterDelay () const
 
DWORD GetMinJitterDelay () const
 
DWORD GetMaxJitterDelay () const
 
unsigned GetTimeUnits () const
 
DWORD GetPacketsTooLate () const
 
DWORD GetBufferOverruns () const
 
DWORD GetMaxConsecutiveMarkerBits () const
 
void SetMaxConsecutiveMarkerBits (DWORD max)
 

Protected Types

enum  { e_SynchronisationStart, e_SynchronisationFill, e_SynchronisationShrink, e_SynchronisationDone }
 
typedef std::map< DWORD, RTP_DataFrameFrameMap
 

Protected Member Functions

DWORD CalculateRequiredTimestamp (DWORD playOutTimestamp) const
 
bool AdjustCurrentJitterDelay (int delta)
 

Protected Attributes

unsigned m_timeUnits
 
PINDEX m_packetSize
 
DWORD m_minJitterDelay
 Minimum jitter delay in timestamp units. More...
 
DWORD m_maxJitterDelay
 Maximum jitter delay in timestamp units. More...
 
int m_jitterGrowTime
 Amaint to increase jitter delay by when get "late" packet. More...
 
DWORD m_jitterShrinkPeriod
 
int m_jitterShrinkTime
 Amount to shrink jitter delay by if consistently filled. More...
 
DWORD m_silenceShrinkPeriod
 Reduce jitter delay is silent for this long. More...
 
int m_silenceShrinkTime
 Amount to shrink jitter delay by if consistently silent. More...
 
DWORD m_jitterDriftPeriod
 
int m_currentJitterDelay
 
DWORD m_packetsTooLate
 
DWORD m_bufferOverruns
 
DWORD m_consecutiveMarkerBits
 
DWORD m_maxConsecutiveMarkerBits
 
DWORD m_consecutiveLatePackets
 
DWORD m_averageFrameTime
 
DWORD m_lastTimestamp
 
DWORD m_lastSyncSource
 
DWORD m_bufferFilledTime
 
DWORD m_bufferLowTime
 
DWORD m_bufferEmptiedTime
 
int m_timestampDelta
 
enum OpalJitterBuffer:: { ... }  m_synchronisationState
 
FrameMap m_frames
 
PMutex m_bufferMutex
 
RTP_JitterBufferAnalyser * m_analyser
 

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

Member Typedef Documentation

◆ FrameMap

typedef std::map<DWORD, RTP_DataFrame> OpalJitterBuffer::FrameMap
protected

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
e_SynchronisationStart 
e_SynchronisationFill 
e_SynchronisationShrink 
e_SynchronisationDone 

Constructor & Destructor Documentation

◆ OpalJitterBuffer()

OpalJitterBuffer::OpalJitterBuffer ( unsigned  minJitterDelay,
unsigned  maxJitterDelay,
unsigned  timeUnits = 8,
PINDEX  packetSize = 2048 
)

Constructor for this jitter buffer. The size of this buffer can be altered later with the SetDelay method

Parameters
minJitterDelayMinimum delay in RTP timestamp units
maxJitterDelayMaximum delay in RTP timestamp units
timeUnitsTime units, usually 8 or 16
packetSizeMax RTP packet size

◆ ~OpalJitterBuffer()

virtual OpalJitterBuffer::~OpalJitterBuffer ( )
virtual

Destructor, which closes this down and deletes the internal list of frames

Member Function Documentation

◆ AdjustCurrentJitterDelay()

bool OpalJitterBuffer::AdjustCurrentJitterDelay ( int  delta)
protected

◆ CalculateRequiredTimestamp()

DWORD OpalJitterBuffer::CalculateRequiredTimestamp ( DWORD  playOutTimestamp) const
protected

◆ GetBufferOverruns()

DWORD OpalJitterBuffer::GetBufferOverruns ( ) const
inline

Get total number received packets that overran the jitter buffer.

References m_bufferOverruns.

◆ GetCurrentJitterDelay()

DWORD OpalJitterBuffer::GetCurrentJitterDelay ( ) const
inline

Get current delay for jitter buffer.

References m_currentJitterDelay.

◆ GetMaxConsecutiveMarkerBits()

DWORD OpalJitterBuffer::GetMaxConsecutiveMarkerBits ( ) const
inline

Get maximum consecutive marker bits before buffer starts to ignore them.

References m_maxConsecutiveMarkerBits.

◆ GetMaxJitterDelay()

DWORD OpalJitterBuffer::GetMaxJitterDelay ( ) const
inline

Get maximum delay for jitter buffer.

References m_maxJitterDelay.

◆ GetMinJitterDelay()

DWORD OpalJitterBuffer::GetMinJitterDelay ( ) const
inline

Get minimum delay for jitter buffer.

References m_minJitterDelay.

◆ GetPacketsTooLate()

DWORD OpalJitterBuffer::GetPacketsTooLate ( ) const
inline

Get total number received packets too late to go into jitter buffer.

References m_packetsTooLate.

◆ GetTimeUnits()

unsigned OpalJitterBuffer::GetTimeUnits ( ) const
inline

Get time units.

References m_timeUnits.

◆ PrintOn()

void OpalJitterBuffer::PrintOn ( ostream &  strm) const

Report the statistics for this jitter instance

◆ ReadData()

virtual PBoolean OpalJitterBuffer::ReadData ( RTP_DataFrame frame,
const PTimeInterval &  tick = 0 
)
virtual

Read a data frame from the jitter buffer. This function never blocks. If no data is available, an RTP packet with zero payload size is returned.

Parameters
frameFrame to extract from jitter buffer
tickReal time tick for packet removal

◆ Reset()

void OpalJitterBuffer::Reset ( )

Reset jitter buffer.

◆ SetDelay()

void OpalJitterBuffer::SetDelay ( unsigned  minJitterDelay,
unsigned  maxJitterDelay,
PINDEX  packetSize = 2048 
)

Set the maximum delay the jitter buffer will operate to.

Parameters
minJitterDelayMinimum delay in RTP timestamp units
maxJitterDelayMaximum delay in RTP timestamp units
packetSizeMax RTP packet size

◆ SetMaxConsecutiveMarkerBits()

void OpalJitterBuffer::SetMaxConsecutiveMarkerBits ( DWORD  max)
inline

Set maximum consecutive marker bits before buffer starts to ignore them.

References AdjustCurrentJitterDelay(), CalculateRequiredTimestamp(), and m_maxConsecutiveMarkerBits.

◆ WriteData()

virtual PBoolean OpalJitterBuffer::WriteData ( const RTP_DataFrame frame,
const PTimeInterval &  tick = 0 
)
virtual

Write data frame from the RTP channel.

Parameters
frameFrame to feed into jitter buffer
tickReal time tick for packet arrival

Field Documentation

◆ m_analyser

RTP_JitterBufferAnalyser* OpalJitterBuffer::m_analyser
protected

◆ m_averageFrameTime

DWORD OpalJitterBuffer::m_averageFrameTime
protected

◆ m_bufferEmptiedTime

DWORD OpalJitterBuffer::m_bufferEmptiedTime
protected

◆ m_bufferFilledTime

DWORD OpalJitterBuffer::m_bufferFilledTime
protected

◆ m_bufferLowTime

DWORD OpalJitterBuffer::m_bufferLowTime
protected

◆ m_bufferMutex

PMutex OpalJitterBuffer::m_bufferMutex
protected

◆ m_bufferOverruns

DWORD OpalJitterBuffer::m_bufferOverruns
protected

Referenced by GetBufferOverruns().

◆ m_consecutiveLatePackets

DWORD OpalJitterBuffer::m_consecutiveLatePackets
protected

◆ m_consecutiveMarkerBits

DWORD OpalJitterBuffer::m_consecutiveMarkerBits
protected

◆ m_currentJitterDelay

int OpalJitterBuffer::m_currentJitterDelay
protected

Referenced by GetCurrentJitterDelay().

◆ m_frames

FrameMap OpalJitterBuffer::m_frames
protected

◆ m_jitterDriftPeriod

DWORD OpalJitterBuffer::m_jitterDriftPeriod
protected

◆ m_jitterGrowTime

int OpalJitterBuffer::m_jitterGrowTime
protected

Amaint to increase jitter delay by when get "late" packet.

◆ m_jitterShrinkPeriod

DWORD OpalJitterBuffer::m_jitterShrinkPeriod
protected

Period (in timestamp units) over which buffer is consistently filled before shrinking

◆ m_jitterShrinkTime

int OpalJitterBuffer::m_jitterShrinkTime
protected

Amount to shrink jitter delay by if consistently filled.

◆ m_lastSyncSource

DWORD OpalJitterBuffer::m_lastSyncSource
protected

◆ m_lastTimestamp

DWORD OpalJitterBuffer::m_lastTimestamp
protected

◆ m_maxConsecutiveMarkerBits

DWORD OpalJitterBuffer::m_maxConsecutiveMarkerBits
protected

◆ m_maxJitterDelay

DWORD OpalJitterBuffer::m_maxJitterDelay
protected

Maximum jitter delay in timestamp units.

Referenced by GetMaxJitterDelay().

◆ m_minJitterDelay

DWORD OpalJitterBuffer::m_minJitterDelay
protected

Minimum jitter delay in timestamp units.

Referenced by GetMinJitterDelay().

◆ m_packetSize

PINDEX OpalJitterBuffer::m_packetSize
protected

◆ m_packetsTooLate

DWORD OpalJitterBuffer::m_packetsTooLate
protected

Referenced by GetPacketsTooLate().

◆ m_silenceShrinkPeriod

DWORD OpalJitterBuffer::m_silenceShrinkPeriod
protected

Reduce jitter delay is silent for this long.

◆ m_silenceShrinkTime

int OpalJitterBuffer::m_silenceShrinkTime
protected

Amount to shrink jitter delay by if consistently silent.

◆ m_synchronisationState

enum { ... } OpalJitterBuffer::m_synchronisationState

◆ m_timestampDelta

int OpalJitterBuffer::m_timestampDelta
protected

◆ m_timeUnits

unsigned OpalJitterBuffer::m_timeUnits
protected

Referenced by GetTimeUnits().


The documentation for this class was generated from the following file: