JackTrip
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
JitterBuffer Class Reference

#include <JitterBuffer.h>

Inheritance diagram for JitterBuffer:
Inheritance graph
[legend]
Collaboration diagram for JitterBuffer:
Collaboration graph
[legend]

Public Member Functions

 JitterBuffer (int buf_samples, int qlen, int sample_rate, int strategy, int bcast_qlen, int channels, int bit_res)
 
virtual ~JitterBuffer ()
 
virtual bool insertSlotNonBlocking (const int8_t *ptrToSlot, int len, int lostLen)
 Same as insertSlotBlocking but non-blocking (asynchronous) More...
 
virtual void readSlotNonBlocking (int8_t *ptrToReadSlot)
 Same as readSlotBlocking but non-blocking (asynchronous) More...
 
virtual void readBroadcastSlot (int8_t *ptrToReadSlot)
 
virtual bool getStats (IOStat *stat, bool reset)
 
- Public Member Functions inherited from RingBuffer
 RingBuffer (int SlotSize, int NumSlots)
 The class constructor. More...
 
virtual ~RingBuffer ()
 The class destructor. More...
 
void insertSlotBlocking (const int8_t *ptrToSlot)
 Insert a slot into the RingBuffer from ptrToSlot. This method will block until there's space in the buffer. More...
 
void readSlotBlocking (int8_t *ptrToReadSlot)
 Read a slot from the RingBuffer into ptrToReadSlot. This method will block until there's space in the buffer. More...
 

Protected Member Functions

void processPacketLoss (int lostLen)
 
double lastCorrFactor () const
 
- Protected Member Functions inherited from RingBuffer
virtual void setUnderrunReadSlot (int8_t *ptrToReadSlot)
 Sets the memory in the Read Slot when uderrun occurs. By default, this sets it to 0. Override this method in a subclass for a different behavior. More...
 
virtual void setMemoryInReadSlotWithLastReadSlot (int8_t *ptrToReadSlot)
 Uses the last read slot to set the memory in the Read Slot. More...
 
void underrunReset ()
 Resets the ring buffer for reads under-runs non-blocking. More...
 
void overflowReset ()
 Resets the ring buffer for writes over-flows non-blocking. More...
 
void debugDump () const
 Helper method to debug, prints member variables to terminal. More...
 
void updateReadStats ()
 

Protected Attributes

int mMaxLatency
 
int mNumChannels
 
int mAudioBitRes
 
int mMinStepSize
 
int mFPP
 
int mSampleRate
 
int mInSlotSize
 
bool mActive
 
uint32_t mBroadcastLatency
 
uint32_t mBroadcastPosition
 
double mBroadcastPositionCorr
 
double mUnderrunIncTolerance
 
double mCorrIncTolerance
 
double mOverflowDecTolerance
 
int mOverflowDropStep
 
uint32_t mLastCorrCounter
 
int mLastCorrDirection
 
double mMinLevelThreshold
 
int mAutoQueue
 
double mAutoQueueCorr
 
double mAutoQFactor
 
double mAutoQRate
 
double mAutoQRateMin
 
double mAutoQRateDecay
 
- Protected Attributes inherited from RingBuffer
int mSlotSize
 The size of one slot in byes. More...
 
int mNumSlots
 Number of Slots. More...
 
int mTotalSize
 Total size of the mRingBuffer = mSlotSize*mNumSlotss. More...
 
uint32_t mReadPosition
 Read Positions in the RingBuffer (Tail) More...
 
uint32_t mWritePosition
 Write Position in the RingBuffer (Head) More...
 
int mFullSlots
 Number of used (full) slots, in slot-size. More...
 
int8_tmRingBuffer
 8-bit array of data (1-byte) More...
 
int8_tmLastReadSlot
 Last slot read. More...
 
QMutex mMutex
 Mutex to protect read and write operations. More...
 
QWaitCondition mBufferIsNotFull
 Buffer not full condition to monitor threads. More...
 
QWaitCondition mBufferIsNotEmpty
 Buffer not empty condition to monitor threads. More...
 
int mStatUnit
 
uint32_t mUnderruns
 
uint32_t mOverflows
 
int32_t mSkewRaw
 
double mLevelCur
 
double mLevelDownRate
 
int32_t mLevel
 
uint32_t mBufDecOverflow
 
uint32_t mBufDecPktLoss
 
uint32_t mBufIncUnderrun
 
uint32_t mBufIncCompensate
 
uint32_t mReadsNew
 
uint32_t mUnderrunsNew
 
int32_t mSkew0
 
int32_t mBroadcastSkew
 
int32_t mBroadcastDelta
 

Constructor & Destructor Documentation

◆ JitterBuffer()

JitterBuffer::JitterBuffer ( int  buf_samples,
int  qlen,
int  sample_rate,
int  strategy,
int  bcast_qlen,
int  channels,
int  bit_res 
)

◆ ~JitterBuffer()

virtual JitterBuffer::~JitterBuffer ( )
inlinevirtual

Member Function Documentation

◆ getStats()

bool JitterBuffer::getStats ( RingBuffer::IOStat stat,
bool  reset 
)
virtual

Reimplemented from RingBuffer.

◆ insertSlotNonBlocking()

bool JitterBuffer::insertSlotNonBlocking ( const int8_t ptrToSlot,
int  len,
int  lostLen 
)
virtual

Same as insertSlotBlocking but non-blocking (asynchronous)

Parameters
ptrToSlotPointer to slot to insert into the RingBuffer
Todo:
It may be better here to insert the slot anyways, instead of not writing anything

Reimplemented from RingBuffer.

◆ lastCorrFactor()

double JitterBuffer::lastCorrFactor ( ) const
inlineprotected

◆ processPacketLoss()

void JitterBuffer::processPacketLoss ( int  lostLen)
protected

◆ readBroadcastSlot()

void JitterBuffer::readBroadcastSlot ( int8_t ptrToReadSlot)
virtual

Reimplemented from RingBuffer.

◆ readSlotNonBlocking()

void JitterBuffer::readSlotNonBlocking ( int8_t ptrToReadSlot)
virtual

Same as readSlotBlocking but non-blocking (asynchronous)

Parameters
ptrToReadSlotPointer to read slot from the RingBuffer

Reimplemented from RingBuffer.

Member Data Documentation

◆ mActive

bool JitterBuffer::mActive
protected

◆ mAudioBitRes

int JitterBuffer::mAudioBitRes
protected

◆ mAutoQFactor

double JitterBuffer::mAutoQFactor
protected

◆ mAutoQRate

double JitterBuffer::mAutoQRate
protected

◆ mAutoQRateDecay

double JitterBuffer::mAutoQRateDecay
protected

◆ mAutoQRateMin

double JitterBuffer::mAutoQRateMin
protected

◆ mAutoQueue

int JitterBuffer::mAutoQueue
protected

◆ mAutoQueueCorr

double JitterBuffer::mAutoQueueCorr
protected

◆ mBroadcastLatency

uint32_t JitterBuffer::mBroadcastLatency
protected

◆ mBroadcastPosition

uint32_t JitterBuffer::mBroadcastPosition
protected

◆ mBroadcastPositionCorr

double JitterBuffer::mBroadcastPositionCorr
protected

◆ mCorrIncTolerance

double JitterBuffer::mCorrIncTolerance
protected

◆ mFPP

int JitterBuffer::mFPP
protected

◆ mInSlotSize

int JitterBuffer::mInSlotSize
protected

◆ mLastCorrCounter

uint32_t JitterBuffer::mLastCorrCounter
protected

◆ mLastCorrDirection

int JitterBuffer::mLastCorrDirection
protected

◆ mMaxLatency

int JitterBuffer::mMaxLatency
protected

◆ mMinLevelThreshold

double JitterBuffer::mMinLevelThreshold
protected

◆ mMinStepSize

int JitterBuffer::mMinStepSize
protected

◆ mNumChannels

int JitterBuffer::mNumChannels
protected

◆ mOverflowDecTolerance

double JitterBuffer::mOverflowDecTolerance
protected

◆ mOverflowDropStep

int JitterBuffer::mOverflowDropStep
protected

◆ mSampleRate

int JitterBuffer::mSampleRate
protected

◆ mUnderrunIncTolerance

double JitterBuffer::mUnderrunIncTolerance
protected

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