Sound Open Firmware
Loading...
Searching...
No Matches
audio_stream.h File Reference

Audio Stream API definition. More...

Include dependency graph for audio_stream.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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