Ring buffer implementation.
More...
|
static void | spa_ringbuffer_init (struct spa_ringbuffer *rbuf) |
| Initialize a spa_ringbuffer with size.
|
|
static void | spa_ringbuffer_set_avail (struct spa_ringbuffer *rbuf, uint32_t size) |
| Sets the pointers so that the ringbuffer contains size bytes.
|
|
static int32_t | spa_ringbuffer_get_read_index (struct spa_ringbuffer *rbuf, uint32_t *index) |
| Get the read index and available bytes for reading.
|
|
static void | spa_ringbuffer_read_data (struct spa_ringbuffer *rbuf, const void *buffer, uint32_t size, uint32_t offset, void *data, uint32_t len) |
| Read len bytes from rbuf starting offset.
|
|
static void | spa_ringbuffer_read_update (struct spa_ringbuffer *rbuf, int32_t index) |
| Update the read pointer to index.
|
|
static int32_t | spa_ringbuffer_get_write_index (struct spa_ringbuffer *rbuf, uint32_t *index) |
| Get the write index and the number of bytes inside the ringbuffer.
|
|
static void | spa_ringbuffer_write_data (struct spa_ringbuffer *rbuf, void *buffer, uint32_t size, uint32_t offset, const void *data, uint32_t len) |
| Write len bytes to buffer starting offset.
|
|
static void | spa_ringbuffer_write_update (struct spa_ringbuffer *rbuf, int32_t index) |
| Update the write pointer to index.
|
|
Ring buffer implementation.
◆ SPA_RINGBUFFER_INIT
◆ spa_ringbuffer_init()
◆ spa_ringbuffer_set_avail()
static void spa_ringbuffer_set_avail |
( |
struct spa_ringbuffer * |
rbuf, |
|
|
uint32_t |
size |
|
) |
| |
|
inlinestatic |
Sets the pointers so that the ringbuffer contains size bytes.
- Parameters
-
◆ spa_ringbuffer_get_read_index()
static int32_t spa_ringbuffer_get_read_index |
( |
struct spa_ringbuffer * |
rbuf, |
|
|
uint32_t * |
index |
|
) |
| |
|
inlinestatic |
Get the read index and available bytes for reading.
- Parameters
-
rbuf | a spa_ringbuffer |
index | the value of readindex, should be taken modulo the size of the ringbuffer memory to get the offset in the ringbuffer memory |
- Returns
- number of available bytes to read. values < 0 mean there was an underrun. values > rbuf->size means there was an overrun.
◆ spa_ringbuffer_read_data()
static void spa_ringbuffer_read_data |
( |
struct spa_ringbuffer * |
rbuf, |
|
|
const void * |
buffer, |
|
|
uint32_t |
size, |
|
|
uint32_t |
offset, |
|
|
void * |
data, |
|
|
uint32_t |
len |
|
) |
| |
|
inlinestatic |
Read len bytes from rbuf starting offset.
offset must be taken modulo size and len should be smaller than size.
- Parameters
-
rbuf | a struct Ringbuffer |
buffer | memory to read from |
size | the size of buffer |
offset | offset in buffer to read from |
data | destination memory |
len | number of bytes to read |
◆ spa_ringbuffer_read_update()
static void spa_ringbuffer_read_update |
( |
struct spa_ringbuffer * |
rbuf, |
|
|
int32_t |
index |
|
) |
| |
|
inlinestatic |
Update the read pointer to index.
- Parameters
-
◆ spa_ringbuffer_get_write_index()
static int32_t spa_ringbuffer_get_write_index |
( |
struct spa_ringbuffer * |
rbuf, |
|
|
uint32_t * |
index |
|
) |
| |
|
inlinestatic |
Get the write index and the number of bytes inside the ringbuffer.
- Parameters
-
rbuf | a spa_ringbuffer |
index | the value of writeindex, should be taken modulo the size of the ringbuffer memory to get the offset in the ringbuffer memory |
- Returns
- the fill level of rbuf. values < 0 mean there was an underrun. values > rbuf->size means there was an overrun. Subtract from the buffer size to get the number of bytes available for writing.
◆ spa_ringbuffer_write_data()
static void spa_ringbuffer_write_data |
( |
struct spa_ringbuffer * |
rbuf, |
|
|
void * |
buffer, |
|
|
uint32_t |
size, |
|
|
uint32_t |
offset, |
|
|
const void * |
data, |
|
|
uint32_t |
len |
|
) |
| |
|
inlinestatic |
Write len bytes to buffer starting offset.
offset must be taken modulo size and len should be smaller than size.
- Parameters
-
rbuf | a spa_ringbuffer |
buffer | memory to write to |
size | the size of buffer |
offset | offset in buffer to write to |
data | source memory |
len | number of bytes to write |
◆ spa_ringbuffer_write_update()
static void spa_ringbuffer_write_update |
( |
struct spa_ringbuffer * |
rbuf, |
|
|
int32_t |
index |
|
) |
| |
|
inlinestatic |
Update the write pointer to index.
- Parameters
-