50#ifdef DEBUGRINGBUFFERS
52 int lastHead, lastTail;
58 static void PrintDebugRBL(
void);
85 int Read(
int FileHandle,
int Max = 0);
eFrameType Type(void) const
bool Independent(void) const
cFrame(const uchar *Data, int Count, eFrameType=ftUnknown, int Index=-1, uint32_t Pts=0, bool independent=false)
Creates a new cFrame object.
virtual int Available(void)
void Delete(cFrame *Frame)
cRingBufferFrame(int Size, bool Statistics=false)
virtual ~cRingBufferFrame()
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 ~cRingBufferLinear()
int Read(cUnbufferedFile *File, int Max=0)
Like Read(int FileHandle, int Max), but reads from a cUnbufferedFile).
int Put(const uchar *Data, int Count)
Puts at most Count bytes of Data into the ring buffer.
virtual void Clear(void)
Immediately clears the ring buffer.
virtual int Available(void)
virtual int Available(void)
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.
void SetTimeouts(int PutTimeout, int GetTimeout)
time_t lastOverflowReport
cRingBuffer(int Size, bool Statistics=false)
void UpdatePercentage(int Fill)
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,...