38 #ifndef __RINGBUFFER_H__
39 #define __RINGBUFFER_H__
41 #include <QWaitCondition>
43 #include <QMutexLocker>
Provides a ring-buffer (or circular-buffer) that can be written to and read from asynchronously (bloc...
Definition: RingBuffer.h:60
uint32_t mBufIncCompensate
Definition: RingBuffer.h:174
double mLevelCur
Definition: RingBuffer.h:167
double mLevelDownRate
Definition: RingBuffer.h:168
uint32_t mOverflows
Definition: RingBuffer.h:165
int mNumSlots
Number of Slots.
Definition: RingBuffer.h:149
virtual ~RingBuffer()
The class destructor.
Definition: RingBuffer.cpp:112
void debugDump() const
Helper method to debug, prints member variables to terminal.
Definition: RingBuffer.cpp:299
uint32_t mReadPosition
Read Positions in the RingBuffer (Tail)
Definition: RingBuffer.h:151
int32_t mLevel
Definition: RingBuffer.h:169
virtual void readBroadcastSlot(int8_t *ptrToReadSlot)
Definition: RingBuffer.cpp:247
virtual void readSlotNonBlocking(int8_t *ptrToReadSlot)
Same as readSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:211
uint32_t mBufDecOverflow
Definition: RingBuffer.h:171
int8_t * mRingBuffer
8-bit array of data (1-byte)
Definition: RingBuffer.h:154
int32_t mBroadcastSkew
Definition: RingBuffer.h:182
RingBuffer(int SlotSize, int NumSlots)
The class constructor.
Definition: RingBuffer.cpp:52
virtual bool insertSlotNonBlocking(const int8_t *ptrToSlot, int len, int lostLen)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:173
void updateReadStats()
Definition: RingBuffer.cpp:342
int32_t mBroadcastDelta
Definition: RingBuffer.h:183
int mTotalSize
Total size of the mRingBuffer = mSlotSize*mNumSlotss.
Definition: RingBuffer.h:150
QWaitCondition mBufferIsNotFull
Buffer not full condition to monitor threads.
Definition: RingBuffer.h:159
uint32_t mUnderrunsNew
Definition: RingBuffer.h:178
void insertSlotBlocking(const int8_t *ptrToSlot)
Insert a slot into the RingBuffer from ptrToSlot. This method will block until there's space in the b...
Definition: RingBuffer.cpp:122
void readSlotBlocking(int8_t *ptrToReadSlot)
Read a slot from the RingBuffer into ptrToReadSlot. This method will block until there's space in the...
Definition: RingBuffer.cpp:145
int mSlotSize
The size of one slot in byes.
Definition: RingBuffer.h:148
virtual bool getStats(IOStat *stat, bool reset)
Definition: RingBuffer.cpp:308
uint32_t mReadsNew
Definition: RingBuffer.h:177
void underrunReset()
Resets the ring buffer for reads under-runs non-blocking.
Definition: RingBuffer.cpp:271
uint32_t mBufIncUnderrun
Definition: RingBuffer.h:173
virtual void setMemoryInReadSlotWithLastReadSlot(int8_t *ptrToReadSlot)
Uses the last read slot to set the memory in the Read Slot.
Definition: RingBuffer.cpp:261
uint32_t mWritePosition
Write Position in the RingBuffer (Head)
Definition: RingBuffer.h:152
int mFullSlots
Number of used (full) slots, in slot-size.
Definition: RingBuffer.h:153
int32_t mSkewRaw
Definition: RingBuffer.h:166
void overflowReset()
Resets the ring buffer for writes over-flows non-blocking.
Definition: RingBuffer.cpp:285
uint32_t mUnderruns
Definition: RingBuffer.h:164
int32_t mSkew0
Definition: RingBuffer.h:179
QWaitCondition mBufferIsNotEmpty
Buffer not empty condition to monitor threads.
Definition: RingBuffer.h:160
uint32_t mBufDecPktLoss
Definition: RingBuffer.h:172
virtual void setUnderrunReadSlot(int8_t *ptrToReadSlot)
Sets the memory in the Read Slot when uderrun occurs. By default, this sets it to 0....
Definition: RingBuffer.cpp:254
QMutex mMutex
Mutex to protect read and write operations.
Definition: RingBuffer.h:158
int8_t * mLastReadSlot
Last slot read.
Definition: RingBuffer.h:155
int mStatUnit
Definition: RingBuffer.h:163
qint32 int32_t
Typedef for signed int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:82
quint32 uint32_t
Typedef for unsigned int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:73
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:78
Definition: RingBuffer.h:106
uint32_t overflows
Definition: RingBuffer.h:108
int32_t skew_raw
Definition: RingBuffer.h:110
uint32_t buf_inc_compensate
Definition: RingBuffer.h:115
int32_t skew
Definition: RingBuffer.h:109
int32_t broadcast_delta
Definition: RingBuffer.h:117
int32_t autoq_corr
Definition: RingBuffer.h:119
uint32_t buf_dec_pktloss
Definition: RingBuffer.h:113
uint32_t underruns
Definition: RingBuffer.h:107
uint32_t buf_inc_underrun
Definition: RingBuffer.h:114
int32_t broadcast_skew
Definition: RingBuffer.h:116
int32_t autoq_rate
Definition: RingBuffer.h:120
uint32_t buf_dec_overflows
Definition: RingBuffer.h:112
int32_t level
Definition: RingBuffer.h:111