12#ifndef __SOF_AUDIO_BUFFER__
13#define __SOF_AUDIO_BUFFER__
16#include <ipc/topology.h>
28#define BUFFER_TYPE_LEGACY_BUFFER 1
29#define BUFFER_TYPE_RING_BUFFER 2
83 const uint32_t byte_align,
84 const uint32_t frame_align_req);
99#if CONFIG_PIPELINE_2_0
130#if CONFIG_PIPELINE_2_0
138int audio_buffer_attach_secondary_buffer(
struct sof_audio_buffer *buffer,
bool at_input,
147int audio_buffer_sync_secondary_buffer(
struct sof_audio_buffer *buffer,
size_t limit);
158 return buffer->secondary_buffer_sink ?
172 return buffer->secondary_buffer_source ?
174 &buffer->_source_api;
367#if CONFIG_PIPELINE_2_0
368 if (buffer->secondary_buffer_sink && buffer->secondary_buffer_sink->
ops->
reset)
369 buffer->secondary_buffer_sink->
ops->
reset(buffer->secondary_buffer_sink);
371 if (buffer->secondary_buffer_source && buffer->secondary_buffer_source->
ops->
reset)
372 buffer->secondary_buffer_source->
ops->
reset(buffer->secondary_buffer_source);
403 const uint32_t byte_align,
404 const uint32_t frame_align_req);
431 const uint32_t byte_align,
432 const uint32_t frame_align_req);
Cache-coherent multi-core shared memory access abstractions.
#define container_of(ptr, type, member)
Definition common.h:117
static void audio_buffer_set_hw_params_configured(struct sof_audio_buffer *buffer)
Mark buffer hardware parameters as configured (state set to READY).
Definition audio_buffer.h:229
static struct sof_sink * audio_buffer_get_sink(struct sof_audio_buffer *buffer)
Return pointer to sink interface of audio buffer.
Definition audio_buffer.h:185
static struct sof_audio_stream_params * audio_buffer_get_stream_params(struct sof_audio_buffer *buffer)
Retrieve pointer to runtime stream parameters.
Definition audio_buffer.h:303
static uint16_t audio_buffer_get_chmap(struct sof_audio_buffer *buffer, size_t index)
Retrieve channel map value for a given channel index.
Definition audio_buffer.h:280
static void audio_buffer_set_eos(struct sof_audio_buffer *buffer)
Mark buffer state as end-of-stream (EOS).
Definition audio_buffer.h:269
static bool audio_buffer_is_shared(struct sof_audio_buffer *buffer)
Check if audio buffer is shared across cores.
Definition audio_buffer.h:210
static void audio_buffer_reset(struct sof_audio_buffer *buffer)
Reset all buffer data and positions leaving configuration intact.
Definition audio_buffer.h:362
uint32_t audio_buffer_sink_get_lft(struct sof_sink *sink)
Get linear free time (LFT) duration in microseconds from sink interface wrapper.
int audio_buffer_source_set_ipc_params(struct sof_source *source, struct sof_ipc_stream_params *params, bool force_update)
Set IPC stream parameters via source interface wrapper.
static void audio_buffer_set_chmap(struct sof_audio_buffer *buffer, size_t index, uint16_t value)
Set channel map value for a given channel index.
Definition audio_buffer.h:291
static enum sof_audio_buffer_state audio_buffer_get_state(const struct sof_audio_buffer *buffer)
Retrieve current buffer state.
Definition audio_buffer.h:248
static struct sof_audio_buffer * sof_audio_buffer_from_sink(struct sof_sink *sink)
Retrieve enclosing sof_audio_buffer from sink interface pointer.
Definition audio_buffer.h:317
int audio_buffer_sink_set_ipc_params(struct sof_sink *sink, struct sof_ipc_stream_params *params, bool force_update)
Set IPC stream parameters via sink interface wrapper.
static struct sof_audio_buffer * sof_audio_buffer_from_source(struct sof_source *source)
Retrieve enclosing sof_audio_buffer from source interface pointer.
Definition audio_buffer.h:331
static bool audio_buffer_hw_params_configured(struct sof_audio_buffer *buffer)
Check if buffer hardware parameters are configured.
Definition audio_buffer.h:220
int audio_buffer_source_set_alignment_constants(struct sof_source *source, const uint32_t byte_align, const uint32_t frame_align_req)
Set alignment constraints via source interface wrapper.
static struct sof_source * audio_buffer_get_source(struct sof_audio_buffer *buffer)
Return pointer to source interface of audio buffer.
Definition audio_buffer.h:197
static void audio_buffer_set_state(struct sof_audio_buffer *buffer, enum sof_audio_buffer_state state)
Set buffer state.
Definition audio_buffer.h:259
int audio_buffer_source_on_audio_format_set(struct sof_source *source)
Audio format set callback via source interface wrapper.
int audio_buffer_sink_set_alignment_constants(struct sof_sink *sink, const uint32_t byte_align, const uint32_t frame_align_req)
Set alignment constraints via sink interface wrapper.
int audio_buffer_sink_on_audio_format_set(struct sof_sink *sink)
Audio format set callback via sink interface wrapper.
static void audio_buffer_reset_params(struct sof_audio_buffer *buffer)
Reset buffer parameters state to initial.
Definition audio_buffer.h:238
void audio_buffer_init(struct sof_audio_buffer *buffer, uint32_t buffer_type, bool is_shared, const struct source_ops *source_ops, const struct sink_ops *sink_ops, const struct audio_buffer_ops *audio_buffer_ops, struct sof_audio_stream_params *audio_stream_params)
Initialize audio buffer structure and virtual operation tables.
void audio_buffer_free(struct sof_audio_buffer *buffer)
Free audio buffer and all allocated resources.
#define CORE_CHECK_STRUCT(_c)
Definition coherent.h:121
sof_audio_buffer_state
Define states of an audio stream buffer connecting two components.
Definition audio_stream.h:35
@ AUDIOBUF_STATE_INITIAL
Definition audio_stream.h:36
@ AUDIOBUF_STATE_END_OF_STREAM
Definition audio_stream.h:38
@ AUDIOBUF_STATE_READY
Definition audio_stream.h:37
Audio sink API helpers and stream configuration.
Audio source API helpers and stream configuration.
Audio buffer virtual operations table.
Definition audio_buffer.h:38
void(* free)(struct sof_audio_buffer *buffer)
Free all structures allocated by buffer implementation and the buffer itself.
Definition audio_buffer.h:46
int(* audio_set_ipc_params)(struct sof_audio_buffer *buffer, struct sof_ipc_stream_params *params, bool force_update)
Configure IPC stream parameters on buffer.
Definition audio_buffer.h:72
int(* on_audio_format_set)(struct sof_audio_buffer *buffer)
Notification callback invoked on audio format modification.
Definition audio_buffer.h:63
int(* set_alignment_constants)(struct sof_audio_buffer *buffer, const uint32_t byte_align, const uint32_t frame_align_req)
Configure alignment constraints on buffer.
Definition audio_buffer.h:82
void(* reset)(struct sof_audio_buffer *buffer)
Clean all buffer data and reset positions to initial state, keeping configuration.
Definition audio_buffer.h:55
Module and pipeline allocation context aggregating a Zephyr heap and optional virtual region.
Definition alloc.h:251
this is a definition of internals of sink API
Definition sink_api.h:69
Base class for all audio buffers.
Definition audio_buffer.h:92
CORE_CHECK_STRUCT_FIELD
Definition audio_buffer.h:93
const struct audio_buffer_ops * ops
Virtual methods table.
Definition audio_buffer.h:123
bool walking
Indicates if the buffer is being walked in pipeline graph.
Definition audio_buffer.h:125
struct sof_source _source_api
Source API interface handler.
Definition audio_buffer.h:119
bool is_shared
Buffer structure is shared between 2 cores.
Definition audio_buffer.h:97
struct sof_audio_stream_params * audio_stream_params
Pointer to effective runtime stream parameters.
Definition audio_buffer.h:116
uint32_t buffer_type
Type of the buffer (BUFFER_TYPE_*)
Definition audio_buffer.h:95
struct mod_alloc_ctx * alloc
Allocation context.
Definition audio_buffer.h:127
struct sof_sink _sink_api
Sink API interface handler.
Definition audio_buffer.h:120
set of parameters describing audio stream this structure is shared between audio_stream....
Definition audio_stream.h:49
uint16_t chmap[SOF_IPC_MAX_CHANNELS]
channel map - SOF_CHMAP_
Definition audio_stream.h:82
enum sof_audio_buffer_state state
audio stream state
Definition audio_stream.h:84
internals of sink API.
Definition sink_api.h:141
internals of source API.
Definition source_api.h:137
this is a definition of internals of source API
Definition source_api.h:71