|
vdr-plugin-softhddevice-drm-gles 1.6.4-d0291bb
|
Ringbuffer (FIFO) Implementation. More...
#include <ringbuffer.h>
Public Member Functions | |
| cSoftHdRingbuffer (size_t) | |
| cSoftHdRingbuffer constructor | |
| ~cSoftHdRingbuffer (void) | |
| cSoftHdRingbuffer destructor | |
| 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 | |
| char * | m_pBuffer |
| ring buffer data | |
| const char * | m_pBufferEnd |
| end of buffer | |
| size_t | m_size |
| bytes in buffer (for faster calc) | |
| const char * | m_pReadPointer |
| only used by reader | |
| char * | m_pWritePointer |
| only used by writer | |
| atomic_t | m_filled |
| how many of the buffer is used | |
Ringbuffer (FIFO) Implementation.
Definition at line 42 of file ringbuffer.h.
| cSoftHdRingbuffer::cSoftHdRingbuffer | ( | size_t | size | ) |
cSoftHdRingbuffer constructor
Init a new ring buffer
| size | Size of the ring buffer |
Definition at line 31 of file ringbuffer.cpp.
References atomic_set, LOGFATAL, m_filled, m_pBuffer, m_pBufferEnd, m_pReadPointer, and m_pWritePointer.
| cSoftHdRingbuffer::~cSoftHdRingbuffer | ( | void | ) |
Get free bytes in ring buffer.
Definition at line 276 of file ringbuffer.cpp.
References atomic_read, m_filled, and m_size.
Referenced by cSoftHdAudio::IsBufferFull().
Get read pointer and used bytes at this position of ring buffer.
| [out] | rp | Read pointer is placed here |
Definition at line 251 of file ringbuffer.cpp.
References atomic_read, m_filled, m_pBufferEnd, and m_pReadPointer.
Referenced by cSoftHdAudio::SendAudio().
Get write pointer and free bytes at this position of ring buffer.
| [out] | wp | Write pointer is placed here |
Definition at line 146 of file ringbuffer.cpp.
References atomic_read, m_filled, m_pBufferEnd, m_pWritePointer, and m_size.
Read from a ring buffer.
| buf | buffer of cnt bytes to be read |
| cnt | Number of bytes to be read |
Definition at line 210 of file ringbuffer.cpp.
References atomic_read, atomic_sub, m_filled, m_pBuffer, m_pBufferEnd, and m_pReadPointer.
Advance read pointer in ring buffer.
| cnt | Number of bytes to be advanced |
Definition at line 173 of file ringbuffer.cpp.
References atomic_read, atomic_sub, m_filled, m_pBuffer, m_pBufferEnd, and m_pReadPointer.
Referenced by cSoftHdAudio::DropSamplesOlderThanPtsMs(), and cSoftHdAudio::SendAudio().
Reset ring buffer pointers.
Definition at line 54 of file ringbuffer.cpp.
References atomic_set, m_filled, m_pBuffer, m_pReadPointer, and m_pWritePointer.
Referenced by cSoftHdAudio::FlushBuffers().
Get used bytes in ring buffer.
Definition at line 286 of file ringbuffer.cpp.
References atomic_read, and m_filled.
Referenced by cSoftHdAudio::DropSamplesOlderThanPtsMs(), cSoftHdAudio::GetOutputPtsMsInternal(), and cSoftHdAudio::GetUsedBytes().
Write to a ring buffer.
| buf | buffer of cnt bytes to be written |
| cnt | Number of bytes in buffer |
Definition at line 105 of file ringbuffer.cpp.
References atomic_add, atomic_read, m_filled, m_pBuffer, m_pBufferEnd, m_pWritePointer, and m_size.
Referenced by cSoftHdAudio::Enqueue().
Advance write pointer in ring buffer.
| cnt | Number of bytes to be adavanced |
Definition at line 68 of file ringbuffer.cpp.
References atomic_add, atomic_read, m_filled, m_pBuffer, m_pBufferEnd, m_pWritePointer, and m_size.
|
private |
how many of the buffer is used
Definition at line 64 of file ringbuffer.h.
Referenced by cSoftHdRingbuffer(), FreeBytes(), GetReadPointer(), GetWritePointer(), Read(), ReadAdvance(), Reset(), UsedBytes(), Write(), and WriteAdvance().
|
private |
ring buffer data
Definition at line 57 of file ringbuffer.h.
Referenced by cSoftHdRingbuffer(), Read(), ReadAdvance(), Reset(), Write(), WriteAdvance(), and ~cSoftHdRingbuffer().
end of buffer
Definition at line 58 of file ringbuffer.h.
Referenced by cSoftHdRingbuffer(), GetReadPointer(), GetWritePointer(), Read(), ReadAdvance(), Write(), and WriteAdvance().
only used by reader
Definition at line 60 of file ringbuffer.h.
Referenced by cSoftHdRingbuffer(), GetReadPointer(), Read(), ReadAdvance(), and Reset().
|
private |
only used by writer
Definition at line 61 of file ringbuffer.h.
Referenced by cSoftHdRingbuffer(), GetWritePointer(), Reset(), Write(), and WriteAdvance().
|
private |
bytes in buffer (for faster calc)
Definition at line 59 of file ringbuffer.h.
Referenced by FreeBytes(), GetWritePointer(), Write(), and WriteAdvance().