PipeWire 1.4.1
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Ringbuffer

Ring buffer implementation More...

Files

file  ringbuffer.h
 spa/utils/ringbuffer.h
 

Data Structures

struct  spa_ringbuffer
 A ringbuffer type. More...
 

Macros

#define SPA_API_RINGBUFFER   static inline
 
#define SPA_RINGBUFFER_INIT()
 

Functions

SPA_API_RINGBUFFER void spa_ringbuffer_init (struct spa_ringbuffer *rbuf)
 Initialize a spa_ringbuffer with size.
 
SPA_API_RINGBUFFER void spa_ringbuffer_set_avail (struct spa_ringbuffer *rbuf, uint32_t size)
 Sets the pointers so that the ringbuffer contains size bytes.
 
SPA_API_RINGBUFFER int32_t spa_ringbuffer_get_read_index (struct spa_ringbuffer *rbuf, uint32_t *index)
 Get the read index and available bytes for reading.
 
SPA_API_RINGBUFFER 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.
 
SPA_API_RINGBUFFER void spa_ringbuffer_read_update (struct spa_ringbuffer *rbuf, int32_t index)
 Update the read pointer to index.
 
SPA_API_RINGBUFFER 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.
 
SPA_API_RINGBUFFER 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.
 
SPA_API_RINGBUFFER void spa_ringbuffer_write_update (struct spa_ringbuffer *rbuf, int32_t index)
 Update the write pointer to index.
 

Detailed Description

Ring buffer implementation

Macro Definition Documentation

◆ SPA_API_RINGBUFFER

#define SPA_API_RINGBUFFER   static inline

◆ SPA_RINGBUFFER_INIT

#define SPA_RINGBUFFER_INIT ( )
Value:
((struct spa_ringbuffer) { 0, 0 })
A ringbuffer type.
Definition ringbuffer.h:47

Function Documentation

◆ spa_ringbuffer_init()

SPA_API_RINGBUFFER void spa_ringbuffer_init ( struct spa_ringbuffer * rbuf)

Initialize a spa_ringbuffer with size.

Parameters
rbufa spa_ringbuffer
Examples
audio-src-ring.c, and audio-src-ring2.c.

◆ spa_ringbuffer_set_avail()

SPA_API_RINGBUFFER void spa_ringbuffer_set_avail ( struct spa_ringbuffer * rbuf,
uint32_t size )

Sets the pointers so that the ringbuffer contains size bytes.

Parameters
rbufa spa_ringbuffer
sizethe target size of rbuf

◆ spa_ringbuffer_get_read_index()

SPA_API_RINGBUFFER int32_t spa_ringbuffer_get_read_index ( struct spa_ringbuffer * rbuf,
uint32_t * index )

Get the read index and available bytes for reading.

Parameters
rbufa spa_ringbuffer
indexthe 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.
Examples
audio-src-ring.c, and audio-src-ring2.c.

◆ spa_ringbuffer_read_data()

SPA_API_RINGBUFFER 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.

offset must be taken modulo size and len should be smaller than size.

Parameters
rbufa struct Ringbuffer
buffermemory to read from
sizethe size of buffer
offsetoffset in buffer to read from
datadestination memory
lennumber of bytes to read
Examples
audio-src-ring.c, and audio-src-ring2.c.

◆ spa_ringbuffer_read_update()

SPA_API_RINGBUFFER void spa_ringbuffer_read_update ( struct spa_ringbuffer * rbuf,
int32_t index )

Update the read pointer to index.

Parameters
rbufa spa_ringbuffer
indexnew index
Examples
audio-src-ring.c, and audio-src-ring2.c.

◆ spa_ringbuffer_get_write_index()

SPA_API_RINGBUFFER 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.

Parameters
rbufa spa_ringbuffer
indexthe 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.
Examples
audio-src-ring.c, and audio-src-ring2.c.

◆ spa_ringbuffer_write_data()

SPA_API_RINGBUFFER 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.

offset must be taken modulo size and len should be smaller than size.

Parameters
rbufa spa_ringbuffer
buffermemory to write to
sizethe size of buffer
offsetoffset in buffer to write to
datasource memory
lennumber of bytes to write
Examples
audio-src-ring2.c.

◆ spa_ringbuffer_write_update()

SPA_API_RINGBUFFER void spa_ringbuffer_write_update ( struct spa_ringbuffer * rbuf,
int32_t index )

Update the write pointer to index.

Parameters
rbufa spa_ringbuffer
indexnew index
Examples
audio-src-ring.c, and audio-src-ring2.c.