Sound Open Firmware
Loading...
Searching...
No Matches

Audio pipeline management, graph scheduling, and execution control. More...

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

Go to the source code of this file.

Data Structures

struct  pipeline
 Audio pipeline structure representing a stream graph and execution context. More...
 
struct  pipeline_walk_context
 Pipeline traversal walk context for graph exploration and operations. More...
 
struct  pipeline_data
 Generic pipeline data used by pipeline_comp_* functions. More...
 
struct  pipeline_task
 Task type registered by pipelines. More...
 
struct  create_pipeline_params
 For storing IPC payload data during pipeline creation. More...
 

Macros

#define PPL_STATUS_PATH_STOP   1
 Pipeline status to stop execution of current path, but to keep the pipeline alive, when processing COMP_TRIGGER_STOP or COMP_TRIGGER_PAUSE.
 
#define PPL_STATUS_PATH_TERMINATE   2
 Pipeline status to stop execution of current path, and to terminate the pipeline, when processing COMP_TRIGGER_STOP or COMP_TRIGGER_PAUSE.
 
#define PPL_STATUS_SCHEDULED   2
 Pipeline scheduled in another thread other than IPC thread.
 
#define pipeline_task_get(t)   container_of(t, struct pipeline_task, task)
 Retrieves the enclosing pipeline_task structure from a task pointer.
 
Pipeline connection directions
#define PPL_CONN_DIR_COMP_TO_BUFFER   0
 Connection from component to buffer.
 
#define PPL_CONN_DIR_BUFFER_TO_COMP   1
 Connection from buffer to component.
 
Pipeline processing directions
#define PPL_DIR_DOWNSTREAM   0
 Downstream playback/processing direction.
 
#define PPL_DIR_UPSTREAM   1
 Upstream capture/processing direction.
 

Functions

struct pipeline * pipeline_new (struct k_heap *heap, uint32_t pipeline_id, uint32_t priority, uint32_t comp_id, struct create_pipeline_params *pparams)
 Creates a new pipeline.
 
int pipeline_free (struct pipeline *p)
 Frees a pipeline and its associated resources.
 
int pipeline_connect (struct comp_dev *comp, struct comp_buffer *buffer, int dir)
 Connect components in a pipeline.
 
void pipeline_disconnect (struct comp_dev *comp, struct comp_buffer *buffer, int dir)
 Disconnect components and buffers in a pipeline.
 
int pipeline_complete (struct pipeline *p, struct comp_dev *source, struct comp_dev *sink)
 Completes a pipeline setup by verifying connectivity between source and sink.
 
void pipeline_posn_init (struct sof *sof)
 Initializes pipeline position structure.
 
int pipeline_reset (struct pipeline *p, struct comp_dev *host_cd)
 Resets the pipeline and frees runtime resources.
 
void pipeline_set_eos (struct pipeline *p, bool eos)
 Sets End Of Stream state for all devices in the pipeline.
 
int pipeline_for_each_comp (struct comp_dev *current, struct pipeline_walk_context *ctx, int dir)
 Walks the pipeline graph for each component.
 
struct comp_dev * pipeline_get_dai_comp (uint32_t pipeline_id, int dir)
 Walks pipeline graph to find DAI component.
 
struct comp_dev * pipeline_get_dai_comp_latency (uint32_t pipeline_id, uint32_t *latency)
 Walks pipeline graph to find DAI component and latency.
 
static uint32_t pipeline_id (struct pipeline *p)
 Retrieves pipeline ID from pipeline structure.
 
int pipeline_params (struct pipeline *p, struct comp_dev *cd, struct sof_ipc_pcm_params *params)
 Sets pipeline runtime audio stream parameters.
 
int pipeline_prepare (struct pipeline *p, struct comp_dev *cd)
 Prepares pipeline for audio processing.
 
int pipeline_trigger (struct pipeline *p, struct comp_dev *host, int cmd)
 Trigger pipeline in IPC context.
 
int pipeline_trigger_run (struct pipeline *p, struct comp_dev *host, int cmd)
 Trigger pipeline in either IPC or pipeline task context.
 
int pipeline_copy (struct pipeline *p)
 Copy and process stream data along a pipeline.
 
void pipeline_get_timestamp (struct pipeline *p, struct comp_dev *host_dev, struct sof_ipc_stream_posn *posn)
 Get pipeline timestamps from host to DAI.
 
static bool pipeline_is_same_sched_comp (struct pipeline *current, struct pipeline *previous)
 Checks if two pipelines share the same scheduling component.
 
static bool pipeline_is_timer_driven (struct pipeline *p)
 Checks if pipeline is scheduled with timer.
 
static bool pipeline_is_this_cpu (struct pipeline *p)
 Checks if pipeline is scheduled on the current core.
 
int pipeline_comp_ll_task_init (struct pipeline *p)
 Initializes a low-latency (LL) task for a pipeline.
 
void pipeline_comp_ll_task_free (struct pipeline *p)
 Frees the low-latency (LL) tasks owned by a pipeline.
 
int pipeline_comp_dp_task_init (struct comp_dev *comp)
 Initializes a data processing (DP) task for a component.
 
void pipeline_schedule_copy (struct pipeline *p, uint64_t start)
 Schedules a pipeline copy operation to run after a delay.
 
void pipeline_comp_trigger_sched_comp (struct pipeline *p, struct comp_dev *comp, struct pipeline_walk_context *ctx)
 Triggers pipeline's scheduling component.
 
void pipeline_schedule_triggered (struct pipeline_walk_context *ctx, int cmd)
 Schedules all triggered pipelines collected during traversal.
 
void pipeline_schedule_config (struct pipeline *p, uint32_t sched_id, uint32_t core, uint32_t period, uint32_t period_mips, uint32_t frames_per_sched, uint32_t time_domain)
 Configures pipeline scheduling parameters.
 
int pipeline_xrun_recover (struct pipeline *p)
 Recovers the pipeline from an XRUN condition.
 
int pipeline_xrun_handle_trigger (struct pipeline *p, int cmd)
 Performs XRUN recovery trigger handling.
 
void pipeline_xrun (struct pipeline *p, struct comp_dev *dev, int32_t bytes)
 Notifies host and pipeline that an XRUN condition occurred.
 
int pipeline_xrun_set_limit (struct pipeline *p, uint32_t xrun_limit_usecs)
 Sets tolerance limit for pipeline XRUN handling.
 
void pipeline_comp_copy_error_notify (const struct comp_dev *component, int error_code)
 Sends an IPC notification that an error occurred in a module's processing function.
 

Detailed Description

Audio pipeline management, graph scheduling, and execution control.