Sound Open Firmware
Loading...
Searching...
No Matches
Audio Stream API

Data Structures

struct  audio_stream
 Audio stream is a circular buffer aware of audio format of the data in the buffer so provides API for reading and writing not only bytes, but also samples and frames. More...
struct  cir_buf_ptr

Macros

#define audio_stream_read_frag(buffer, idx, size)
 Retrieves readable address of a sample at specified index (see versions of this macro specialized for various sample types).
#define audio_stream_read_frag_s16(buffer, idx)
 Retrieves readable address of a signed 16-bit sample at specified index.
#define audio_stream_read_frag_s32(buffer, idx)
 Retrieves readable address of a signed 32-bit sample at specified index.
#define audio_stream_write_frag(buffer, idx, size)
 Retrieves writeable address of a sample at specified index (see versions of this macro specialized for various sample types).
#define audio_stream_write_frag_s16(buffer, idx)
 Retrieves writeable address of a signed 16-bit sample at specified index.
#define audio_stream_write_frag_s32(buffer, idx)
 Retrieves writeable address of a signed 32-bit sample at specified index.
#define audio_stream_get_frag(buffer, ptr, idx, sample_size)
 Retrieves address of sample (space for sample) at specified index within the buffer.

Functions

void audio_stream_recalc_align (struct audio_stream *stream)
static void * audio_stream_get_rptr (const struct audio_stream *buf)
static void * audio_stream_get_wptr (const struct audio_stream *buf)
static void * audio_stream_get_end_addr (const struct audio_stream *buf)
static void * audio_stream_get_addr (const struct audio_stream *buf)
static uint32_t audio_stream_get_size (const struct audio_stream *buf)
static uint32_t audio_stream_get_avail (const struct audio_stream *buf)
static uint32_t audio_stream_get_free (const struct audio_stream *buf)
static enum sof_ipc_frame audio_stream_get_frm_fmt (const struct audio_stream *buf)
static enum sof_ipc_frame audio_stream_get_valid_fmt (const struct audio_stream *buf)
static uint32_t audio_stream_get_rate (const struct audio_stream *buf)
static uint32_t audio_stream_get_channels (const struct audio_stream *buf)
static bool audio_stream_get_underrun (const struct audio_stream *buf)
static uint32_t audio_stream_get_buffer_fmt (const struct audio_stream *buf)
static bool audio_stream_get_overrun (const struct audio_stream *buf)
static void audio_stream_set_rptr (struct audio_stream *buf, void *val)
static void audio_stream_set_wptr (struct audio_stream *buf, void *val)
static void audio_stream_set_end_addr (struct audio_stream *buf, void *val)
static void audio_stream_set_addr (struct audio_stream *buf, void *val)
static void audio_stream_set_size (struct audio_stream *buf, uint32_t val)
static void audio_stream_set_avail (struct audio_stream *buf, uint32_t val)
static void audio_stream_set_free (struct audio_stream *buf, uint32_t val)
static void audio_stream_set_frm_fmt (struct audio_stream *buf, enum sof_ipc_frame val)
static void audio_stream_set_valid_fmt (struct audio_stream *buf, enum sof_ipc_frame val)
static void audio_stream_set_rate (struct audio_stream *buf, uint32_t val)
static void audio_stream_set_channels (struct audio_stream *buf, uint16_t val)
static void audio_stream_set_underrun (struct audio_stream *buf, bool underrun_permitted)
static void audio_stream_set_overrun (struct audio_stream *buf, bool overrun_permitted)
static void audio_stream_set_buffer_fmt (struct audio_stream *buf, uint32_t buffer_fmt)
static uint32_t audio_stream_frame_bytes (const struct audio_stream *buf)
 Calculates period size in bytes based on component stream's parameters.
static uint32_t audio_stream_sample_bytes (const struct audio_stream *buf)
 Calculates sample size in bytes based on component stream's parameters.
void audio_stream_set_align (const uint32_t byte_align, const uint32_t frame_align_req, struct audio_stream *stream)
 Set processing alignment requirements.
static int audio_stream_set_params (struct audio_stream *buffer, struct sof_ipc_stream_params *params)
 Applies parameters to the buffer.
static uint32_t audio_stream_period_bytes (const struct audio_stream *buf, uint32_t frames)
 Calculates period size in bytes based on component stream's parameters.
static void * audio_stream_wrap (const struct audio_stream *buffer, void *ptr)
 Verifies the pointer and performs rollover when reached the end of the buffer.
static void * audio_stream_rewind_wrap (const struct audio_stream *buffer, void *ptr)
 Verifies the pointer and performs rollover when reached the end of the buffer.
static uint32_t audio_stream_get_avail_bytes (const struct audio_stream *stream)
 Calculates available data in bytes, handling underrun_permitted behaviour.
static uint32_t audio_stream_get_avail_samples (const struct audio_stream *stream)
 Calculates available data in samples, handling underrun_permitted behaviour.
static uint32_t audio_stream_get_avail_frames (const struct audio_stream *stream)
 Calculates available data in frames, handling underrun_permitted behaviour.
static uint32_t audio_stream_get_free_bytes (const struct audio_stream *stream)
 Calculates free space in bytes, handling overrun_permitted behaviour.
static uint32_t audio_stream_get_free_samples (const struct audio_stream *stream)
 Calculates free space in samples, handling overrun_permitted behaviour.
static uint32_t audio_stream_get_free_frames (const struct audio_stream *stream)
 Calculates free space in frames, handling overrun_permitted behaviour.
static int audio_stream_can_copy_bytes (const struct audio_stream *source, const struct audio_stream *sink, uint32_t bytes)
 Verifies whether specified number of bytes can be copied from source buffer to sink buffer.
static uint32_t audio_stream_get_copy_bytes (const struct audio_stream *source, const struct audio_stream *sink)
 Computes maximum number of bytes that can be copied from source buffer to sink buffer, verifying number of bytes available in source vs.
static uint32_t audio_stream_avail_frames (const struct audio_stream *source, const struct audio_stream *sink)
 Computes maximum number of frames that can be copied from source buffer to sink buffer, verifying number of available source frames vs.
static uint32_t audio_stream_align_frames_round_down (const struct audio_stream *stream, uint32_t frames)
 Rounds down a frame count to meet the alignment constraint of the stream.
static uint32_t audio_stream_align_frames_round_up (const struct audio_stream *stream, uint32_t frames)
 Rounds up a frame count to meet the alignment constraint of the stream.
static uint32_t audio_stream_align_frames_round_nearest (const struct audio_stream *stream, uint32_t frames)
 Rounds to nearest a frame count to meet the alignment constraint of the stream.
static uint32_t audio_stream_avail_frames_aligned (const struct audio_stream *source, const struct audio_stream *sink)
 Computes maximum number of frames aligned with source align criteria that can be copied from source buffer to sink buffer, verifying number of available source frames vs.
static void audio_stream_produce (struct audio_stream *buffer, uint32_t bytes)
 Updates the buffer state after writing to the buffer.
static void audio_stream_consume (struct audio_stream *buffer, uint32_t bytes)
 Updates the buffer state after reading from the buffer.
static void audio_stream_reset (struct audio_stream *buffer)
 Resets the buffer.
void audio_stream_init (struct audio_stream *audio_stream, void *buff_addr, uint32_t size)
 Initializes the buffer with specified memory block and size.
static void audio_stream_invalidate (struct audio_stream *buffer, uint32_t bytes)
 Invalidates (in DSP d-cache) the buffer in range [r_ptr, r_ptr+bytes], with rollover if necessary.
static void audio_stream_writeback (struct audio_stream *buffer, uint32_t bytes)
 Writes back (from DSP d-cache) the buffer in range [w_ptr, w_ptr+bytes], with rollover if necessary.
static int audio_stream_bytes_without_wrap (const struct audio_stream *source, const void *ptr)
 Calculates numbers of bytes to buffer wrap.
static int audio_stream_rewind_bytes_without_wrap (const struct audio_stream *source, const void *ptr)
 Calculates numbers of bytes to buffer wrap when reading stream backwards from current sample pointed by ptr towards begin.
static uint32_t * audio_stream_rewind_wptr_by_bytes (const struct audio_stream *source, const uint32_t bytes)
 Calculate position of write pointer to the position before the data was copied to source buffer.
static int audio_stream_samples_without_wrap_s16 (const struct audio_stream *source, const void *ptr)
 Calculates numbers of s16 samples to buffer wrap when buffer is read forward towards end address.
static int audio_stream_samples_without_wrap_s24 (const struct audio_stream *source, const void *ptr)
 Calculates numbers of s24 samples to buffer wrap when buffer is read forward towards end address.
static int audio_stream_samples_without_wrap_s32 (const struct audio_stream *source, const void *ptr)
 Calculates numbers of s32 samples to buffer wrap when buffer is read forward towards end address.
static int cir_buf_bytes_without_wrap (const void *ptr, const void *buf_end)
 Calculates numbers of bytes to buffer wrap when reading stream backwards from current sample pointed by ptr towards begin.
static uint32_t audio_stream_frames_without_wrap (const struct audio_stream *source, const void *ptr)
 Calculates numbers of frames to buffer wrap and return minimum of calculated value.
int audio_stream_copy (const struct audio_stream *source, uint32_t ioffset, struct audio_stream *sink, uint32_t ooffset, uint32_t samples)
 Copies data from source buffer to sink buffer.
void cir_buf_copy (const void *src, const void *src_addr, const void *src_end, void *dst, void *dst_addr, void *dst_end, size_t byte_size)
 Copies data from one circular buffer to another circular buffer.
void audio_stream_copy_from_linear (const void *linear_source, int ioffset, struct audio_stream *sink, int ooffset, unsigned int samples)
 Copies data from linear source buffer to circular sink buffer.
void audio_stream_copy_to_linear (const struct audio_stream *source, int ioffset, void *linear_sink, int ooffset, unsigned int samples)
 Copies data from circular source buffer to linear sink buffer.
static int audio_stream_set_zero (struct audio_stream *buffer, uint32_t bytes)
 Writes zeros in range [w_ptr, w_ptr+bytes], with rollover if necessary.
static void cir_buf_set_zero (void *ptr, void *buf_addr, void *buf_end, uint32_t bytes)
 Writes zeros to circular buffer in range [ptr, ptr+bytes] with rollover if necessary.
static int audio_stream_fmt_conversion (enum ipc4_bit_depth depth, enum ipc4_bit_depth valid, enum sof_ipc_frame *frame_fmt, enum sof_ipc_frame *valid_fmt, enum ipc4_sample_type type)

Detailed Description

Macro Definition Documentation

◆ audio_stream_get_frag

#define audio_stream_get_frag ( buffer,
ptr,
idx,
sample_size )
Value:
audio_stream_wrap(buffer, (char *)(ptr) + ((idx) * (sample_size)))
static void * audio_stream_wrap(const struct audio_stream *buffer, void *ptr)
Verifies the pointer and performs rollover when reached the end of the buffer.
Definition audio_stream.h:402

Retrieves address of sample (space for sample) at specified index within the buffer.

Index is interpreted as an offset relative to the specified pointer, rollover is ensured.

Parameters
bufferCircular buffer.
ptrPointer to start from, it may be either read or write pointer.
idxIndex of the sample.
sample_sizeSize of the sample in bytes.
Returns
Pointer to the sample.

◆ audio_stream_read_frag

#define audio_stream_read_frag ( buffer,
idx,
size )
Value:
audio_stream_get_frag(buffer, (buffer)->r_ptr, idx, size)
#define audio_stream_get_frag(buffer, ptr, idx, sample_size)
Retrieves address of sample (space for sample) at specified index within the buffer.
Definition audio_stream.h:323

Retrieves readable address of a sample at specified index (see versions of this macro specialized for various sample types).

Parameters
bufferBuffer.
idxIndex of sample.
sizeSize of sample in bytes.
Returns
Pointer to the sample.

Once the consumer finishes reading samples from the buffer, it should "commit" the operation and update the buffer state by calling audio_stream_consume().

Note
Components should call comp_update_buffer_consume().
See also
audio_stream_get_frag().
audio_stream_consume().
comp_update_buffer_consume().

◆ audio_stream_read_frag_s16

#define audio_stream_read_frag_s16 ( buffer,
idx )
Value:
audio_stream_get_frag(buffer, (buffer)->r_ptr, idx, sizeof(int16_t))

Retrieves readable address of a signed 16-bit sample at specified index.

Parameters
bufferBuffer.
idxIndex of sample.
Returns
Pointer to the sample.
See also
audio_stream_get_frag().

◆ audio_stream_read_frag_s32

#define audio_stream_read_frag_s32 ( buffer,
idx )
Value:
audio_stream_get_frag(buffer, (buffer)->r_ptr, idx, sizeof(int32_t))

Retrieves readable address of a signed 32-bit sample at specified index.

Parameters
bufferBuffer.
idxIndex of sample.
Returns
Pointer to the sample.
See also
audio_stream_get_frag().

◆ audio_stream_write_frag

#define audio_stream_write_frag ( buffer,
idx,
size )
Value:
audio_stream_get_frag(buffer, (buffer)->w_ptr, idx, size)
uint32_t w_ptr
Definition debug_stream_slot.h:1

Retrieves writeable address of a sample at specified index (see versions of this macro specialized for various sample types).

Parameters
bufferBuffer.
idxIndex of sample.
sizeSize of sample in bytes.
Returns
Pointer to the space for sample.

Once the producer finishes writing samples to the buffer, it should "commit" the operation and update the buffer state by calling audio_stream_produce().

Note
Components should call comp_update_buffer_produce().
See also
audio_stream_get_frag().
audio_stream_produce().
comp_update_buffer_produce().

◆ audio_stream_write_frag_s16

#define audio_stream_write_frag_s16 ( buffer,
idx )
Value:
audio_stream_get_frag(buffer, (buffer)->w_ptr, idx, sizeof(int16_t))

Retrieves writeable address of a signed 16-bit sample at specified index.

Parameters
bufferBuffer.
idxIndex of sample.
Returns
Pointer to the space for sample.
See also
audio_stream_get_frag().

◆ audio_stream_write_frag_s32

#define audio_stream_write_frag_s32 ( buffer,
idx )
Value:
audio_stream_get_frag(buffer, (buffer)->w_ptr, idx, sizeof(int32_t))

Retrieves writeable address of a signed 32-bit sample at specified index.

Parameters
bufferBuffer.
idxIndex of sample.
Returns
Pointer to the space for sample.
See also
audio_stream_get_frag().

Function Documentation

◆ audio_stream_align_frames_round_down()

uint32_t audio_stream_align_frames_round_down ( const struct audio_stream * stream,
uint32_t frames )
inlinestatic

Rounds down a frame count to meet the alignment constraint of the stream.

Parameters
streamAudio stream with alignment requirements set.
framesFrame count to round down.
Returns
Largest aligned frame count less than or equal to frames.

◆ audio_stream_align_frames_round_nearest()

uint32_t audio_stream_align_frames_round_nearest ( const struct audio_stream * stream,
uint32_t frames )
inlinestatic

Rounds to nearest a frame count to meet the alignment constraint of the stream.

Parameters
streamAudio stream with alignment requirements set.
framesFrame count to round to nearest.
Returns
Aligned frame count.

◆ audio_stream_align_frames_round_up()

uint32_t audio_stream_align_frames_round_up ( const struct audio_stream * stream,
uint32_t frames )
inlinestatic

Rounds up a frame count to meet the alignment constraint of the stream.

Parameters
streamAudio stream with alignment requirements set.
framesFrame count to round up.
Returns
Smallest aligned frame count greater than or equal to frames.

◆ audio_stream_avail_frames()

uint32_t audio_stream_avail_frames ( const struct audio_stream * source,
const struct audio_stream * sink )
inlinestatic

Computes maximum number of frames that can be copied from source buffer to sink buffer, verifying number of available source frames vs.

free space available in sink.

Parameters
sourceSource buffer.
sinkSink buffer.
Returns
Number of frames.

◆ audio_stream_avail_frames_aligned()

uint32_t audio_stream_avail_frames_aligned ( const struct audio_stream * source,
const struct audio_stream * sink )
inlinestatic

Computes maximum number of frames aligned with source align criteria that can be copied from source buffer to sink buffer, verifying number of available source frames vs.

free space available in sink.

Parameters
sourceBuffer of source.
sinkBuffer of sink.
Returns
Number of frames.

◆ audio_stream_bytes_without_wrap()

int audio_stream_bytes_without_wrap ( const struct audio_stream * source,
const void * ptr )
inlinestatic

Calculates numbers of bytes to buffer wrap.

Parameters
sourceStream to get information from.
ptrRead or write pointer from source
Returns
Number of data samples to buffer wrap.

◆ audio_stream_can_copy_bytes()

int audio_stream_can_copy_bytes ( const struct audio_stream * source,
const struct audio_stream * sink,
uint32_t bytes )
inlinestatic

Verifies whether specified number of bytes can be copied from source buffer to sink buffer.

Parameters
sourceSource buffer.
sinkSink buffer.
bytesNumber of bytes to copy.
Returns
0 if there is enough data in source and enough free space in sink.
1 if there is not enough free space in sink.
-1 if there is not enough data in source.

◆ audio_stream_consume()

void audio_stream_consume ( struct audio_stream * buffer,
uint32_t bytes )
inlinestatic

Updates the buffer state after reading from the buffer.

Parameters
bufferBuffer to update.
bytesNumber of read bytes.

◆ audio_stream_copy()

int audio_stream_copy ( const struct audio_stream * source,
uint32_t ioffset,
struct audio_stream * sink,
uint32_t ooffset,
uint32_t samples )

Copies data from source buffer to sink buffer.

Parameters
sourceSource buffer.
ioffsetOffset (in samples) in source buffer to start reading from.
sinkSink buffer.
ooffsetOffset (in samples) in sink buffer to start writing to.
samplesNumber of samples to copy.
Returns
number of processed samples.

◆ audio_stream_copy_from_linear()

void audio_stream_copy_from_linear ( const void * linear_source,
int ioffset,
struct audio_stream * sink,
int ooffset,
unsigned int samples )

Copies data from linear source buffer to circular sink buffer.

Parameters
linear_sourceSource buffer.
ioffsetOffset (in samples) in source buffer to start reading from.
sinkSink buffer.
ooffsetOffset (in samples) in sink buffer to start writing to.
samplesNumber of samples to copy.

◆ audio_stream_copy_to_linear()

void audio_stream_copy_to_linear ( const struct audio_stream * source,
int ioffset,
void * linear_sink,
int ooffset,
unsigned int samples )

Copies data from circular source buffer to linear sink buffer.

Parameters
sourceSource buffer.
ioffsetOffset (in samples) in source buffer to start reading from.
linear_sinkSink buffer.
ooffsetOffset (in samples) in sink buffer to start writing to.
samplesNumber of samples to copy.

◆ audio_stream_fmt_conversion()

int audio_stream_fmt_conversion ( enum ipc4_bit_depth depth,
enum ipc4_bit_depth valid,
enum sof_ipc_frame * frame_fmt,
enum sof_ipc_frame * valid_fmt,
enum ipc4_sample_type type )
inlinestatic

◆ audio_stream_frame_bytes()

uint32_t audio_stream_frame_bytes ( const struct audio_stream * buf)
inlinestatic

Calculates period size in bytes based on component stream's parameters.

Parameters
bufComponent buffer.
Returns
Period size in bytes.

◆ audio_stream_frames_without_wrap()

uint32_t audio_stream_frames_without_wrap ( const struct audio_stream * source,
const void * ptr )
inlinestatic

Calculates numbers of frames to buffer wrap and return minimum of calculated value.

Parameters
sourceStream to get information from.
ptrRead or write pointer from source
Returns
Number of data frames to buffer wrap.

◆ audio_stream_get_addr()

void * audio_stream_get_addr ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_avail()

uint32_t audio_stream_get_avail ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_avail_bytes()

uint32_t audio_stream_get_avail_bytes ( const struct audio_stream * stream)
inlinestatic

Calculates available data in bytes, handling underrun_permitted behaviour.

Parameters
streamStream pointer
Returns
amount of data available for processing in bytes

◆ audio_stream_get_avail_frames()

uint32_t audio_stream_get_avail_frames ( const struct audio_stream * stream)
inlinestatic

Calculates available data in frames, handling underrun_permitted behaviour.

Parameters
streamStream pointer
Returns
amount of data available for processing in frames

◆ audio_stream_get_avail_samples()

uint32_t audio_stream_get_avail_samples ( const struct audio_stream * stream)
inlinestatic

Calculates available data in samples, handling underrun_permitted behaviour.

Parameters
streamStream pointer
Returns
amount of data available for processing in samples

◆ audio_stream_get_buffer_fmt()

uint32_t audio_stream_get_buffer_fmt ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_channels()

uint32_t audio_stream_get_channels ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_copy_bytes()

uint32_t audio_stream_get_copy_bytes ( const struct audio_stream * source,
const struct audio_stream * sink )
inlinestatic

Computes maximum number of bytes that can be copied from source buffer to sink buffer, verifying number of bytes available in source vs.

free space available in sink.

Parameters
sourceSource buffer.
sinkSink buffer.
Returns
Number of bytes.

◆ audio_stream_get_end_addr()

void * audio_stream_get_end_addr ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_free()

uint32_t audio_stream_get_free ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_free_bytes()

uint32_t audio_stream_get_free_bytes ( const struct audio_stream * stream)
inlinestatic

Calculates free space in bytes, handling overrun_permitted behaviour.

Parameters
streamStream pointer
Returns
amount of space free in bytes

◆ audio_stream_get_free_frames()

uint32_t audio_stream_get_free_frames ( const struct audio_stream * stream)
inlinestatic

Calculates free space in frames, handling overrun_permitted behaviour.

Parameters
streamStream pointer
Returns
amount of space free in frames

◆ audio_stream_get_free_samples()

uint32_t audio_stream_get_free_samples ( const struct audio_stream * stream)
inlinestatic

Calculates free space in samples, handling overrun_permitted behaviour.

Parameters
streamStream pointer
Returns
amount of space free in samples

◆ audio_stream_get_frm_fmt()

enum sof_ipc_frame audio_stream_get_frm_fmt ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_overrun()

bool audio_stream_get_overrun ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_rate()

uint32_t audio_stream_get_rate ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_rptr()

void * audio_stream_get_rptr ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_size()

uint32_t audio_stream_get_size ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_underrun()

bool audio_stream_get_underrun ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_valid_fmt()

enum sof_ipc_frame audio_stream_get_valid_fmt ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_get_wptr()

void * audio_stream_get_wptr ( const struct audio_stream * buf)
inlinestatic

◆ audio_stream_init()

void audio_stream_init ( struct audio_stream * audio_stream,
void * buff_addr,
uint32_t size )

Initializes the buffer with specified memory block and size.

Parameters
audio_streamthe audio_stream a to initialize.
buff_addrAddress of the memory block to assign.
sizeSize of the memory block in bytes.

◆ audio_stream_invalidate()

void audio_stream_invalidate ( struct audio_stream * buffer,
uint32_t bytes )
inlinestatic

Invalidates (in DSP d-cache) the buffer in range [r_ptr, r_ptr+bytes], with rollover if necessary.

Parameters
bufferBuffer.
bytesSize of the fragment to invalidate.

◆ audio_stream_period_bytes()

uint32_t audio_stream_period_bytes ( const struct audio_stream * buf,
uint32_t frames )
inlinestatic

Calculates period size in bytes based on component stream's parameters.

Parameters
bufComponent buffer.
framesNumber of processing frames.
Returns
Period size in bytes.

◆ audio_stream_produce()

void audio_stream_produce ( struct audio_stream * buffer,
uint32_t bytes )
inlinestatic

Updates the buffer state after writing to the buffer.

Parameters
bufferBuffer to update.
bytesNumber of written bytes.

◆ audio_stream_recalc_align()

void audio_stream_recalc_align ( struct audio_stream * stream)

◆ audio_stream_reset()

void audio_stream_reset ( struct audio_stream * buffer)
inlinestatic

Resets the buffer.

Parameters
bufferBuffer to reset.

◆ audio_stream_rewind_bytes_without_wrap()

int audio_stream_rewind_bytes_without_wrap ( const struct audio_stream * source,
const void * ptr )
inlinestatic

Calculates numbers of bytes to buffer wrap when reading stream backwards from current sample pointed by ptr towards begin.

Parameters
sourceStream to get information from.
ptrRead or write pointer from source
Returns
Number of bytes to buffer wrap. For number of samples calculate need to add size of sample to returned bytes count.

◆ audio_stream_rewind_wptr_by_bytes()

uint32_t * audio_stream_rewind_wptr_by_bytes ( const struct audio_stream * source,
const uint32_t bytes )
inlinestatic

Calculate position of write pointer to the position before the data was copied to source buffer.

Parameters
sourceStream to get information from.
bytesNumber of bytes copied to source buffer.
Returns
Previous position of the write pointer.

◆ audio_stream_rewind_wrap()

void * audio_stream_rewind_wrap ( const struct audio_stream * buffer,
void * ptr )
inlinestatic

Verifies the pointer and performs rollover when reached the end of the buffer.

Parameters
bufferBuffer accessed by the pointer.
ptrPointer
Returns
Pointer, adjusted if necessary.

◆ audio_stream_sample_bytes()

uint32_t audio_stream_sample_bytes ( const struct audio_stream * buf)
inlinestatic

Calculates sample size in bytes based on component stream's parameters.

Parameters
bufComponent buffer.
Returns
Size of sample in bytes.

◆ audio_stream_samples_without_wrap_s16()

int audio_stream_samples_without_wrap_s16 ( const struct audio_stream * source,
const void * ptr )
inlinestatic

Calculates numbers of s16 samples to buffer wrap when buffer is read forward towards end address.

Parameters
sourceStream to get information from.
ptrRead or write pointer from source
Returns
Number of data s16 samples until circular wrap need at end

◆ audio_stream_samples_without_wrap_s24()

int audio_stream_samples_without_wrap_s24 ( const struct audio_stream * source,
const void * ptr )
inlinestatic

Calculates numbers of s24 samples to buffer wrap when buffer is read forward towards end address.

Parameters
sourceStream to get information from.
ptrRead or write pointer from source
Returns
Number of data s24 samples until circular wrap need at end

◆ audio_stream_samples_without_wrap_s32()

int audio_stream_samples_without_wrap_s32 ( const struct audio_stream * source,
const void * ptr )
inlinestatic

Calculates numbers of s32 samples to buffer wrap when buffer is read forward towards end address.

Parameters
sourceStream to get information from.
ptrRead or write pointer from source
Returns
Number of data s32 samples until circular wrap need at end

◆ audio_stream_set_addr()

void audio_stream_set_addr ( struct audio_stream * buf,
void * val )
inlinestatic

◆ audio_stream_set_align()

void audio_stream_set_align ( const uint32_t byte_align,
const uint32_t frame_align_req,
struct audio_stream * stream )

Set processing alignment requirements.

Sets the sample byte alignment and aligned frame count required for processing done on this stream. This function may be called at any time, the internal constants are recalculated if the frame/sample size changes.

See also
audio_stream_avail_frames_aligned().
Parameters
byte_alignProcessing byte alignment requirement.
frame_align_reqProcessing frames alignment requirement.
streamSink or source stream structure which to be set.

◆ audio_stream_set_avail()

void audio_stream_set_avail ( struct audio_stream * buf,
uint32_t val )
inlinestatic

◆ audio_stream_set_buffer_fmt()

void audio_stream_set_buffer_fmt ( struct audio_stream * buf,
uint32_t buffer_fmt )
inlinestatic

◆ audio_stream_set_channels()

void audio_stream_set_channels ( struct audio_stream * buf,
uint16_t val )
inlinestatic

◆ audio_stream_set_end_addr()

void audio_stream_set_end_addr ( struct audio_stream * buf,
void * val )
inlinestatic

◆ audio_stream_set_free()

void audio_stream_set_free ( struct audio_stream * buf,
uint32_t val )
inlinestatic

◆ audio_stream_set_frm_fmt()

void audio_stream_set_frm_fmt ( struct audio_stream * buf,
enum sof_ipc_frame val )
inlinestatic

◆ audio_stream_set_overrun()

void audio_stream_set_overrun ( struct audio_stream * buf,
bool overrun_permitted )
inlinestatic

◆ audio_stream_set_params()

int audio_stream_set_params ( struct audio_stream * buffer,
struct sof_ipc_stream_params * params )
inlinestatic

Applies parameters to the buffer.

Parameters
bufferAudio stream buffer.
paramsParameters (frame format, rate, number of channels).
Returns
0 if succeeded, error code otherwise.

◆ audio_stream_set_rate()

void audio_stream_set_rate ( struct audio_stream * buf,
uint32_t val )
inlinestatic

◆ audio_stream_set_rptr()

void audio_stream_set_rptr ( struct audio_stream * buf,
void * val )
inlinestatic

◆ audio_stream_set_size()

void audio_stream_set_size ( struct audio_stream * buf,
uint32_t val )
inlinestatic

◆ audio_stream_set_underrun()

void audio_stream_set_underrun ( struct audio_stream * buf,
bool underrun_permitted )
inlinestatic

◆ audio_stream_set_valid_fmt()

void audio_stream_set_valid_fmt ( struct audio_stream * buf,
enum sof_ipc_frame val )
inlinestatic

◆ audio_stream_set_wptr()

void audio_stream_set_wptr ( struct audio_stream * buf,
void * val )
inlinestatic

◆ audio_stream_set_zero()

int audio_stream_set_zero ( struct audio_stream * buffer,
uint32_t bytes )
inlinestatic

Writes zeros in range [w_ptr, w_ptr+bytes], with rollover if necessary.

Parameters
bufferBuffer.
bytesSize of the fragment to write zero.
Returns
0 if there is enough free space in buffer.
1 if there is not enough free space in buffer.

◆ audio_stream_wrap()

void * audio_stream_wrap ( const struct audio_stream * buffer,
void * ptr )
inlinestatic

Verifies the pointer and performs rollover when reached the end of the buffer.

Parameters
bufferBuffer accessed by the pointer.
ptrPointer
Returns
Pointer, adjusted if necessary.

◆ audio_stream_writeback()

void audio_stream_writeback ( struct audio_stream * buffer,
uint32_t bytes )
inlinestatic

Writes back (from DSP d-cache) the buffer in range [w_ptr, w_ptr+bytes], with rollover if necessary.

Parameters
bufferBuffer.
bytesSize of the fragment to write back.

◆ cir_buf_bytes_without_wrap()

int cir_buf_bytes_without_wrap ( const void * ptr,
const void * buf_end )
inlinestatic

Calculates numbers of bytes to buffer wrap when reading stream backwards from current sample pointed by ptr towards begin.

Parameters
ptrRead or write pointer og circular buffer.
buf_endEnd address of circular buffer.
Returns
Number of bytes to buffer wrap. For number of samples calculate need to add size of sample to returned bytes count.

◆ cir_buf_copy()

void cir_buf_copy ( const void * src,
const void * src_addr,
const void * src_end,
void * dst,
void * dst_addr,
void * dst_end,
size_t byte_size )

Copies data from one circular buffer to another circular buffer.

Parameters
srcSource pointer of source circular buffer.
src_addrStart address of source circular buffer.
src_endEnd address of source circular buffer.
dstSink pointer of source circular buffer.
dst_addrStart address of sink circular buffer
dst_endEnd address of sink circular buffer.
byte_sizeNumber of bytes to copy.

◆ cir_buf_set_zero()

void cir_buf_set_zero ( void * ptr,
void * buf_addr,
void * buf_end,
uint32_t bytes )
inlinestatic

Writes zeros to circular buffer in range [ptr, ptr+bytes] with rollover if necessary.

Parameters
ptrPointer inside circular biffer to start writing from.
buf_addrStart of the circular buffer.
buf_endEnd of the circular buffer.
bytesSize of the fragment to write zeros.