51#ifdef DEBUGRINGBUFFERS
53 int lastHead, lastTail;
59 static void PrintDebugRBL(
void);
83 virtual void Clear(
void)
override;
87 int Read(
int FileHandle,
int Max = 0);
95 int Put(
const uchar *Data,
int Count);
147 virtual void Clear(
void)
override;
eFrameType Type(void) const
bool Independent(void) const
friend class cRingBufferFrame
cFrame(const uchar *Data, int Count, eFrameType=ftUnknown, int Index=-1, uint32_t Pts=0, bool independent=false)
Creates a new cFrame object.
bool Lock(int TimeoutMs=0, bool *TimedOut=NULL)
Returns true if the mutex was successfully locked.
virtual void Clear(void) override
virtual int Available(void) override
void Delete(cFrame *Frame)
cRingBufferFrame(int Size, bool Statistics=false)
cRingBufferLinear(int Size, int Margin=0, bool Statistics=false, const char *Description=NULL)
Creates a linear ring buffer.
void Del(int Count)
Deletes at most Count bytes from the ring buffer.
virtual void Clear(void) override
Immediately clears the ring buffer.
virtual int Free(void) override
int Put(const uchar *Data, int Count)
Puts at most Count bytes of Data into the ring buffer.
virtual int DataReady(const uchar *Data, int Count)
By default a ring buffer has data ready as soon as there are at least 'margin' bytes available.
uchar * Get(int &Count)
Gets data from the ring buffer.
int Read(int FileHandle, int Max=0)
Reads at most Max bytes from FileHandle and stores them in the ring buffer.
virtual int Available(void) override
void SetTimeouts(int PutTimeout, int GetTimeout)
time_t lastOverflowReport
cRingBuffer(int Size, bool Statistics=false)
void UpdatePercentage(int Fill)
std::atomic< tThreadId > getThreadTid
void ReportOverflow(int Bytes)
virtual void Clear(void)=0
virtual int Available(void)=0
cUnbufferedFile is used for large files that are mainly written or read in a streaming manner,...