OPAL  Version 3.18.8
OpalAudioJitterBuffer Class Reference

#include <jitter.h>

Inheritance diagram for OpalAudioJitterBuffer:
Collaboration diagram for OpalAudioJitterBuffer:

Public Member Functions

Construction
 OpalAudioJitterBuffer (const Init &init)
 
virtual ~OpalAudioJitterBuffer ()
 
Overrides from PObject
void PrintOn (ostream &strm) const
 
Operations
virtual void SetDelay (const Init &init)
 
virtual void Close ()
 
virtual void Restart ()
 
virtual bool WriteData (const RTP_DataFrame &frame, const PTimeInterval &tick=PTimer::Tick())
 
virtual bool ReadData (RTP_DataFrame &frame, const PTimeInterval &timeout=PMaxTimeInterval)
 
virtual RTP_Timestamp GetCurrentJitterDelay () const
 
virtual RTP_Timestamp GetPacketTime () const
 
unsigned GetMaxConsecutiveMarkerBits () const
 
void SetMaxConsecutiveMarkerBits (unsigned max)
 
- Public Member Functions inherited from OpalJitterBuffer
unsigned GetTimeUnits () const
 
RTP_Timestamp GetMinJitterDelay () const
 
RTP_Timestamp GetMaxJitterDelay () const
 
unsigned GetPacketsTooLate () const
 
unsigned GetBufferOverruns () const
 
 OpalJitterBuffer (const Init &init)
 
virtual ~OpalJitterBuffer ()
 

Protected Types

enum  AdjustResult {
  e_Unchanged, e_Decreased, e_Increased, e_ReachedMinimum,
  e_ReachedMaximum
}
 
enum  { e_SynchronisationStart, e_SynchronisationFill, e_SynchronisationShrink, e_SynchronisationDone }
 
typedef std::map
< RTP_Timestamp, RTP_DataFrame
FrameMap
 

Protected Member Functions

void InternalReset ()
 
RTP_Timestamp CalculateRequiredTimestamp (RTP_Timestamp playOutTimestamp) const
 
AdjustResult AdjustCurrentJitterDelay (int delta)
 
- Protected Member Functions inherited from OpalJitterBuffer
 PDECLARE_MUTEX (m_bufferMutex)
 

Protected Attributes

int m_jitterGrowTime
 Amount to increase jitter delay by when get "late" packet. More...
 
RTP_Timestamp m_jitterShrinkPeriod
 consistently filled before shrinking More...
 
int m_jitterShrinkTime
 Amount to shrink jitter delay by if consistently filled. More...
 
RTP_Timestamp m_silenceShrinkPeriod
 Reduce jitter delay is silent for this long. More...
 
int m_silenceShrinkTime
 Amount to shrink jitter delay by if consistently silent. More...
 
RTP_Timestamp m_jitterDriftPeriod
 
unsigned m_overrunFactor
 
bool m_closed
 
int m_currentJitterDelay
 
unsigned m_consecutiveMarkerBits
 
unsigned m_maxConsecutiveMarkerBits
 
unsigned m_consecutiveLatePackets
 
unsigned m_consecutiveOverflows
 
unsigned m_consecutiveEmpty
 
unsigned m_frameTimeCount
 
uint64_t m_frameTimeSum
 
RTP_Timestamp m_packetTime
 
RTP_SequenceNumber m_lastSequenceNum
 
RTP_Timestamp m_lastTimestamp
 
RTP_SyncSourceId m_lastSyncSource
 
int m_lastBufferSize
 
RTP_Timestamp m_bufferStaticTime
 
RTP_Timestamp m_bufferLowTime
 
RTP_Timestamp m_bufferEmptiedTime
 
int m_timestampDelta
 
enum OpalAudioJitterBuffer:: { ... }  m_synchronisationState
 
FrameMap m_frames
 
PSemaphore m_frameCount
 
PTimeInterval m_lastInsertTick
 
- Protected Attributes inherited from OpalJitterBuffer
const unsigned m_timeUnits
 
PINDEX m_packetSize
 
RTP_Timestamp m_minJitterDelay
 Minimum jitter delay in timestamp units. More...
 
RTP_Timestamp m_maxJitterDelay
 Maximum jitter delay in timestamp units. More...
 
unsigned m_packetsTooLate
 
unsigned m_bufferOverruns
 
Analyser * m_analyser
 

Friends

ostream & operator<< (ostream &strm, const AdjustResult adjusted)
 

Detailed Description

This is an Audio jitter buffer.

Member Typedef Documentation

Member Enumeration Documentation

anonymous enum
protected
Enumerator
e_SynchronisationStart 
e_SynchronisationFill 
e_SynchronisationShrink 
e_SynchronisationDone 
Enumerator
e_Unchanged 
e_Decreased 
e_Increased 
e_ReachedMinimum 
e_ReachedMaximum 

Constructor & Destructor Documentation

OpalAudioJitterBuffer::OpalAudioJitterBuffer ( const Init init)

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

Parameters
initInitialisation information
virtual OpalAudioJitterBuffer::~OpalAudioJitterBuffer ( )
virtual

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

Member Function Documentation

AdjustResult OpalAudioJitterBuffer::AdjustCurrentJitterDelay ( int  delta)
protected
RTP_Timestamp OpalAudioJitterBuffer::CalculateRequiredTimestamp ( RTP_Timestamp  playOutTimestamp) const
protected
virtual void OpalAudioJitterBuffer::Close ( )
virtual

Reset jitter buffer.

Implements OpalJitterBuffer.

virtual RTP_Timestamp OpalAudioJitterBuffer::GetCurrentJitterDelay ( ) const
virtual

Get current delay for jitter buffer.

Reimplemented from OpalJitterBuffer.

unsigned OpalAudioJitterBuffer::GetMaxConsecutiveMarkerBits ( ) const
inline

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

References m_maxConsecutiveMarkerBits.

virtual RTP_Timestamp OpalAudioJitterBuffer::GetPacketTime ( ) const
virtual

Get average packet time for incoming data.

Reimplemented from OpalJitterBuffer.

void OpalAudioJitterBuffer::InternalReset ( )
protected
void OpalAudioJitterBuffer::PrintOn ( ostream &  strm) const

Report the statistics for this jitter instance

virtual bool OpalAudioJitterBuffer::ReadData ( RTP_DataFrame frame,
const PTimeInterval &  timeout = PMaxTimeInterval 
)
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
timeoutTime out for read

Implements OpalJitterBuffer.

virtual void OpalAudioJitterBuffer::Restart ( )
virtual

Restart jitter buffer.

Implements OpalJitterBuffer.

virtual void OpalAudioJitterBuffer::SetDelay ( const Init init)
virtual

Set the maximum delay the jitter buffer will operate to.

Parameters
initInitialisation information

Reimplemented from OpalJitterBuffer.

void OpalAudioJitterBuffer::SetMaxConsecutiveMarkerBits ( unsigned  max)
inline

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

References m_maxConsecutiveMarkerBits.

virtual bool OpalAudioJitterBuffer::WriteData ( const RTP_DataFrame frame,
const PTimeInterval &  tick = PTimer::Tick() 
)
virtual

Write data frame from the RTP channel.

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

Implements OpalJitterBuffer.

Friends And Related Function Documentation

ostream& operator<< ( ostream &  strm,
const AdjustResult  adjusted 
)
friend

Field Documentation

RTP_Timestamp OpalAudioJitterBuffer::m_bufferEmptiedTime
protected
RTP_Timestamp OpalAudioJitterBuffer::m_bufferLowTime
protected
RTP_Timestamp OpalAudioJitterBuffer::m_bufferStaticTime
protected
bool OpalAudioJitterBuffer::m_closed
protected
unsigned OpalAudioJitterBuffer::m_consecutiveEmpty
protected
unsigned OpalAudioJitterBuffer::m_consecutiveLatePackets
protected
unsigned OpalAudioJitterBuffer::m_consecutiveMarkerBits
protected
unsigned OpalAudioJitterBuffer::m_consecutiveOverflows
protected
int OpalAudioJitterBuffer::m_currentJitterDelay
protected
PSemaphore OpalAudioJitterBuffer::m_frameCount
protected
FrameMap OpalAudioJitterBuffer::m_frames
protected
unsigned OpalAudioJitterBuffer::m_frameTimeCount
protected
uint64_t OpalAudioJitterBuffer::m_frameTimeSum
protected
RTP_Timestamp OpalAudioJitterBuffer::m_jitterDriftPeriod
protected
int OpalAudioJitterBuffer::m_jitterGrowTime
protected

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

RTP_Timestamp OpalAudioJitterBuffer::m_jitterShrinkPeriod
protected

consistently filled before shrinking

Period (in timestamp units) over which buffer is

int OpalAudioJitterBuffer::m_jitterShrinkTime
protected

Amount to shrink jitter delay by if consistently filled.

int OpalAudioJitterBuffer::m_lastBufferSize
protected
PTimeInterval OpalAudioJitterBuffer::m_lastInsertTick
protected
RTP_SequenceNumber OpalAudioJitterBuffer::m_lastSequenceNum
protected
RTP_SyncSourceId OpalAudioJitterBuffer::m_lastSyncSource
protected
RTP_Timestamp OpalAudioJitterBuffer::m_lastTimestamp
protected
unsigned OpalAudioJitterBuffer::m_maxConsecutiveMarkerBits
protected
unsigned OpalAudioJitterBuffer::m_overrunFactor
protected
RTP_Timestamp OpalAudioJitterBuffer::m_packetTime
protected
RTP_Timestamp OpalAudioJitterBuffer::m_silenceShrinkPeriod
protected

Reduce jitter delay is silent for this long.

int OpalAudioJitterBuffer::m_silenceShrinkTime
protected

Amount to shrink jitter delay by if consistently silent.

enum { ... } OpalAudioJitterBuffer::m_synchronisationState
int OpalAudioJitterBuffer::m_timestampDelta
protected

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