vdr-plugin-softhddevice-drm-gles 1.6.7
cSoftHdRingbuffer Class Reference

Ringbuffer (FIFO) Implementation. More...

#include <ringbuffer.h>

Public Member Functions

 cSoftHdRingbuffer (size_t)
 cSoftHdRingbuffer constructor
 
void Reset (void)
 Reset ring buffer pointers.
 
size_t Write (const void *, size_t)
 Write to a ring buffer.
 
size_t GetWritePointer (void **)
 Get write pointer and free bytes at this position of ring buffer.
 
size_t WriteAdvance (size_t)
 Advance write pointer in ring buffer.
 
size_t Read (void *, size_t)
 Read from a ring buffer.
 
size_t GetReadPointer (const void **)
 Get read pointer and used bytes at this position of ring buffer.
 
size_t ReadAdvance (size_t)
 Advance read pointer in ring buffer.
 
size_t FreeBytes (void)
 Get free bytes in ring buffer.
 
size_t UsedBytes (void)
 Get used bytes in ring buffer.
 

Private Attributes

std::vector< charm_buffer
 ring buffer data
 
charm_pBuffer
 pointer ring buffer data
 
size_t m_size
 bytes in buffer (for faster calc)
 
const charm_pBufferEnd
 end of buffer
 
const charm_pReadPointer
 only used by reader
 
charm_pWritePointer
 only used by writer
 
std::atomic< size_tm_filled
 how many of the buffer is used
 

Detailed Description

Ringbuffer (FIFO) Implementation.

Definition at line 25 of file ringbuffer.h.

Constructor & Destructor Documentation

◆ cSoftHdRingbuffer()

cSoftHdRingbuffer::cSoftHdRingbuffer ( size_t  size)

cSoftHdRingbuffer constructor

Init a new ring buffer

Parameters
sizeSize of the ring buffer

Definition at line 33 of file ringbuffer.cpp.

Member Function Documentation

◆ FreeBytes()

size_t cSoftHdRingbuffer::FreeBytes ( void  )

Get free bytes in ring buffer.

Returns
Number of bytes free in buffer

Definition at line 269 of file ringbuffer.cpp.

References m_filled, and m_size.

Referenced by cSoftHdAudio::IsBufferFull().

◆ GetReadPointer()

size_t cSoftHdRingbuffer::GetReadPointer ( const void **  rp)

Get read pointer and used bytes at this position of ring buffer.

Parameters
[out]rpRead pointer is placed here
Returns
The number of bytes that could be read from the ring buffer at the read pointer

Definition at line 244 of file ringbuffer.cpp.

References m_filled, m_pBufferEnd, and m_pReadPointer.

Referenced by cSoftHdAudio::SendAudio().

◆ GetWritePointer()

size_t cSoftHdRingbuffer::GetWritePointer ( void **  wp)

Get write pointer and free bytes at this position of ring buffer.

Parameters
[out]wpWrite pointer is placed here
Returns
The number of bytes that could be placed in the ring buffer at the write pointer.

Definition at line 139 of file ringbuffer.cpp.

References m_filled, m_pBufferEnd, m_pWritePointer, and m_size.

◆ Read()

size_t cSoftHdRingbuffer::Read ( void buf,
size_t  cnt 
)

Read from a ring buffer.

Parameters
bufbuffer of cnt bytes to be read
cntNumber of bytes to be read
Returns
Number of bytes that could be read from ring buffer

Definition at line 203 of file ringbuffer.cpp.

References m_filled, m_pBuffer, m_pBufferEnd, and m_pReadPointer.

◆ ReadAdvance()

size_t cSoftHdRingbuffer::ReadAdvance ( size_t  cnt)

Advance read pointer in ring buffer.

Parameters
cntNumber of bytes to be advanced
Returns
Number of bytes that could be advanced in ring buffer

Definition at line 166 of file ringbuffer.cpp.

References m_filled, m_pBuffer, m_pBufferEnd, and m_pReadPointer.

Referenced by cSoftHdAudio::DropSamplesOlderThanPtsMs(), and cSoftHdAudio::SendAudio().

◆ Reset()

void cSoftHdRingbuffer::Reset ( void  )

Reset ring buffer pointers.

Definition at line 47 of file ringbuffer.cpp.

References m_filled, m_pBuffer, m_pReadPointer, and m_pWritePointer.

Referenced by cSoftHdAudio::FlushBuffers().

◆ UsedBytes()

size_t cSoftHdRingbuffer::UsedBytes ( void  )

Get used bytes in ring buffer.

Returns
Number of bytes used in buffer.

Definition at line 279 of file ringbuffer.cpp.

References m_filled.

Referenced by cSoftHdAudio::DropSamplesOlderThanPtsMs(), cSoftHdAudio::GetOutputPtsMsInternal(), cSoftHdAudio::GetUsedRingbufferBytes(), and cSoftHdAudio::GetUsedRingbufferMs().

◆ Write()

size_t cSoftHdRingbuffer::Write ( const void buf,
size_t  cnt 
)

Write to a ring buffer.

Parameters
bufbuffer of cnt bytes to be written
cntNumber of bytes in buffer
Returns
The number of bytes that could be placed in the ring buffer

Definition at line 98 of file ringbuffer.cpp.

References m_filled, m_pBuffer, m_pBufferEnd, m_pWritePointer, and m_size.

Referenced by cSoftHdAudio::Enqueue().

◆ WriteAdvance()

size_t cSoftHdRingbuffer::WriteAdvance ( size_t  cnt)

Advance write pointer in ring buffer.

Parameters
cntNumber of bytes to be adavanced
Returns
Number of bytes that could be advanced in ring buffer

Definition at line 61 of file ringbuffer.cpp.

References m_filled, m_pBuffer, m_pBufferEnd, m_pWritePointer, and m_size.

Member Data Documentation

◆ m_buffer

std::vector<char> cSoftHdRingbuffer::m_buffer
private

ring buffer data

Definition at line 40 of file ringbuffer.h.

◆ m_filled

std::atomic<size_t> cSoftHdRingbuffer::m_filled
private

how many of the buffer is used

Definition at line 50 of file ringbuffer.h.

Referenced by FreeBytes(), GetReadPointer(), GetWritePointer(), Read(), ReadAdvance(), Reset(), UsedBytes(), Write(), and WriteAdvance().

◆ m_pBuffer

char* cSoftHdRingbuffer::m_pBuffer
private

pointer ring buffer data

Definition at line 41 of file ringbuffer.h.

Referenced by Read(), ReadAdvance(), Reset(), Write(), and WriteAdvance().

◆ m_pBufferEnd

const char* cSoftHdRingbuffer::m_pBufferEnd
private

end of buffer

Definition at line 45 of file ringbuffer.h.

Referenced by GetReadPointer(), GetWritePointer(), Read(), ReadAdvance(), Write(), and WriteAdvance().

◆ m_pReadPointer

const char* cSoftHdRingbuffer::m_pReadPointer
private

only used by reader

Definition at line 46 of file ringbuffer.h.

Referenced by GetReadPointer(), Read(), ReadAdvance(), and Reset().

◆ m_pWritePointer

char* cSoftHdRingbuffer::m_pWritePointer
private

only used by writer

Definition at line 47 of file ringbuffer.h.

Referenced by GetWritePointer(), Reset(), Write(), and WriteAdvance().

◆ m_size

size_t cSoftHdRingbuffer::m_size
private

bytes in buffer (for faster calc)

Definition at line 43 of file ringbuffer.h.

Referenced by FreeBytes(), GetWritePointer(), Write(), and WriteAdvance().


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