6#ifndef __SOF_AUDIO_BUFFER__
7#define __SOF_AUDIO_BUFFER__
10#include <ipc/topology.h>
15#define BUFFER_TYPE_LEGACY_BUFFER 1
16#define BUFFER_TYPE_RING_BUFFER 2
59 const uint32_t byte_align,
60 const uint32_t frame_align_req);
73#if CONFIG_PIPELINE_2_0
118#if CONFIG_PIPELINE_2_0
147int audio_buffer_attach_secondary_buffer(
struct sof_audio_buffer *buffer,
bool at_input,
159int audio_buffer_sync_secondary_buffer(
struct sof_audio_buffer *buffer,
size_t limit);
169 return buffer->secondary_buffer_sink ?
182 return buffer->secondary_buffer_source ?
184 &buffer->_source_api;
240 enum sof_audio_buffer_state state)
310 const struct source_ops *source_ops,
const struct sink_ops *sink_ops,
329#if CONFIG_PIPELINE_2_0
330 if (buffer->secondary_buffer_sink && buffer->secondary_buffer_sink->
ops->
reset)
331 buffer->secondary_buffer_sink->
ops->
reset(buffer->secondary_buffer_sink);
333 if (buffer->secondary_buffer_source && buffer->secondary_buffer_source->
ops->
reset)
334 buffer->secondary_buffer_source->
ops->
reset(buffer->secondary_buffer_source);
343 const uint32_t byte_align,
344 const uint32_t frame_align_req);
349 const uint32_t byte_align,
350 const uint32_t frame_align_req);
static void audio_buffer_set_hw_params_configured(struct sof_audio_buffer *buffer)
Definition audio_buffer.h:223
static struct sof_sink * audio_buffer_get_sink(struct sof_audio_buffer *buffer)
return a handler to sink API of audio_buffer.
Definition audio_buffer.h:194
static struct sof_audio_stream_params * audio_buffer_get_stream_params(struct sof_audio_buffer *buffer)
return a handler to stream params structure
Definition audio_buffer.h:265
static uint16_t audio_buffer_get_chmap(struct sof_audio_buffer *buffer, size_t index)
Definition audio_buffer.h:250
static void audio_buffer_set_eos(struct sof_audio_buffer *buffer)
Definition audio_buffer.h:245
static bool audio_buffer_is_shared(struct sof_audio_buffer *buffer)
Definition audio_buffer.h:213
static void audio_buffer_reset(struct sof_audio_buffer *buffer)
clean all buffer data, set buffer positions to initial, leaving config as is the procedure is to be c...
Definition audio_buffer.h:324
uint32_t audio_buffer_sink_get_lft(struct sof_sink *sink)
int audio_buffer_source_set_ipc_params(struct sof_source *source, struct sof_ipc_stream_params *params, bool force_update)
static void audio_buffer_set_chmap(struct sof_audio_buffer *buffer, size_t index, uint16_t value)
Definition audio_buffer.h:255
static enum sof_audio_buffer_state audio_buffer_get_state(const struct sof_audio_buffer *buffer)
Definition audio_buffer.h:233
static struct sof_audio_buffer * sof_audio_buffer_from_sink(struct sof_sink *sink)
return a pointer to struct sof_audio_buffer from sink pointer NOTE!
Definition audio_buffer.h:275
int audio_buffer_sink_set_ipc_params(struct sof_sink *sink, struct sof_ipc_stream_params *params, bool force_update)
static struct sof_audio_buffer * sof_audio_buffer_from_source(struct sof_source *source)
return a pointer to struct sof_audio_buffer from source pointer NOTE!
Definition audio_buffer.h:285
static bool audio_buffer_hw_params_configured(struct sof_audio_buffer *buffer)
Definition audio_buffer.h:218
int audio_buffer_source_set_alignment_constants(struct sof_source *source, const uint32_t byte_align, const uint32_t frame_align_req)
static struct sof_source * audio_buffer_get_source(struct sof_audio_buffer *buffer)
return a handler to source API of audio_buffer the handler may be used by helper functions defined in...
Definition audio_buffer.h:205
static void audio_buffer_set_state(struct sof_audio_buffer *buffer, enum sof_audio_buffer_state state)
Definition audio_buffer.h:239
int audio_buffer_source_on_audio_format_set(struct sof_source *source)
int audio_buffer_sink_set_alignment_constants(struct sof_sink *sink, const uint32_t byte_align, const uint32_t frame_align_req)
int audio_buffer_sink_on_audio_format_set(struct sof_sink *sink)
static void audio_buffer_reset_params(struct sof_audio_buffer *buffer)
Definition audio_buffer.h:228
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 structures
void audio_buffer_free(struct sof_audio_buffer *buffer)
free buffer and all allocated resources
#define CORE_CHECK_STRUCT(_c)
Definition coherent.h:104
#define container_of(ptr, type, member)
Definition common.h:119
Definition audio_buffer.h:21
void(* free)(struct sof_audio_buffer *buffer)
this method must free all structures allocated by buffer implementation and the buffer itself OBLIGAT...
Definition audio_buffer.h:27
int(* audio_set_ipc_params)(struct sof_audio_buffer *buffer, struct sof_ipc_stream_params *params, bool force_update)
OPTIONAL see sink_set_params comments.
Definition audio_buffer.h:51
int(* on_audio_format_set)(struct sof_audio_buffer *buffer)
OPTIONAL: Notification to the sink implementation about changes in audio format.
Definition audio_buffer.h:45
int(* set_alignment_constants)(struct sof_audio_buffer *buffer, const uint32_t byte_align, const uint32_t frame_align_req)
OPTIONAL see comment for sink_set_alignment_constants.
Definition audio_buffer.h:58
void(* reset)(struct sof_audio_buffer *buffer)
clean all buffer data, set buffer positions to initial, leaving config as is the procedure is to be c...
Definition audio_buffer.h:34
Definition audio_buffer.h:65
CORE_CHECK_STRUCT_FIELD
Definition audio_buffer.h:66
const struct audio_buffer_ops * ops
Definition audio_buffer.h:107
bool walking
indicates if the buffer is being walked
Definition audio_buffer.h:113
struct sof_source _source_api
src api handler
Definition audio_buffer.h:103
bool is_shared
Definition audio_buffer.h:71
struct sof_audio_stream_params * audio_stream_params
Definition audio_buffer.h:99
uint32_t buffer_type
Definition audio_buffer.h:69
struct mod_alloc_ctx * alloc
Definition audio_buffer.h:115
struct sof_sink _sink_api
sink api handler
Definition audio_buffer.h:104
char value[]
Definition tlv.h:2