|
vdr-plugin-softhddevice-drm-gles 1.6.7
|
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< char > | m_buffer |
| ring buffer data | |
| char * | m_pBuffer |
| pointer ring buffer data | |
| size_t | m_size |
| bytes in buffer (for faster calc) | |
| const char * | m_pBufferEnd |
| end of buffer | |
| const char * | m_pReadPointer |
| only used by reader | |
| char * | m_pWritePointer |
| only used by writer | |
| std::atomic< size_t > | m_filled |
| how many of the buffer is used | |
Ringbuffer (FIFO) Implementation.
Definition at line 25 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 33 of file ringbuffer.cpp.
Get free bytes in ring buffer.
Definition at line 269 of file ringbuffer.cpp.
References 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 244 of file ringbuffer.cpp.
References 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 139 of file ringbuffer.cpp.
References 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 203 of file ringbuffer.cpp.
References 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 166 of file ringbuffer.cpp.
References m_filled, m_pBuffer, m_pBufferEnd, and m_pReadPointer.
Referenced by cSoftHdAudio::DropSamplesOlderThanPtsMs(), and cSoftHdAudio::SendAudio().
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().
Get used bytes in ring buffer.
Definition at line 279 of file ringbuffer.cpp.
References m_filled.
Referenced by cSoftHdAudio::DropSamplesOlderThanPtsMs(), cSoftHdAudio::GetOutputPtsMsInternal(), cSoftHdAudio::GetUsedRingbufferBytes(), and cSoftHdAudio::GetUsedRingbufferMs().
Write to a ring buffer.
| buf | buffer of cnt bytes to be written |
| cnt | Number of bytes in 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().
Advance write pointer in ring buffer.
| cnt | Number of bytes to be adavanced |
Definition at line 61 of file ringbuffer.cpp.
References m_filled, m_pBuffer, m_pBufferEnd, m_pWritePointer, and m_size.
|
private |
ring buffer data
Definition at line 40 of file ringbuffer.h.
|
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().
|
private |
pointer ring buffer data
Definition at line 41 of file ringbuffer.h.
Referenced by Read(), ReadAdvance(), Reset(), Write(), and WriteAdvance().
end of buffer
Definition at line 45 of file ringbuffer.h.
Referenced by GetReadPointer(), GetWritePointer(), Read(), ReadAdvance(), Write(), and WriteAdvance().
only used by reader
Definition at line 46 of file ringbuffer.h.
Referenced by GetReadPointer(), Read(), ReadAdvance(), and Reset().
|
private |
only used by writer
Definition at line 47 of file ringbuffer.h.
Referenced by GetWritePointer(), Reset(), Write(), and WriteAdvance().
|
private |
bytes in buffer (for faster calc)
Definition at line 43 of file ringbuffer.h.
Referenced by FreeBytes(), GetWritePointer(), Write(), and WriteAdvance().