Sound Open Firmware
Loading...
Searching...
No Matches
interface.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause */
2/*
3 * Copyright(c) 2020 - 2023 Intel Corporation. All rights reserved.
4 *
5 * Author: Jaroslaw Stelter <jaroslaw.stelter@intel.com>
6 * Adrian Warecki <adrian.warecki@intel.com>
7 */
8
15#ifndef __MODULE_MODULE_INTERFACE__
16#define __MODULE_MODULE_INTERFACE__
17
18#include <stdint.h>
19#include <stdbool.h>
20
35
48
54 void *data; /* data stream buffer */
55 uint32_t size; /* size of data in the buffer */
56 uint32_t consumed; /* number of bytes consumed by the module */
57
58 /* Indicates end of stream condition has occurred on the input stream */
60};
61
67 void *data; /* data stream buffer */
68 uint32_t size; /* size of data in the buffer */
69};
70
72struct sof_source;
73struct sof_sink;
74struct bind_info;
75struct bind_info;
76
77/*
78 * This structure may be used by modules to carry short 16bit parameters.
79 */
81 uint32_t dw;
82 struct {
83 uint32_t data16 : 16; /* Input/Output small config data */
84 uint32_t id : 14; /* input parameter ID */
85 uint32_t _rsvd : 2;
86 } f;
87};
88
107 int (*init)(struct processing_module *mod);
108
113 int (*prepare)(struct processing_module *mod,
114 struct sof_source **sources, int num_of_sources,
115 struct sof_sink **sinks, int num_of_sinks);
116
133 struct sof_source **sources, int num_of_sources,
134 struct sof_sink **sinks, int num_of_sinks);
135
157 int (*process)(struct processing_module *mod,
158 struct sof_source **sources, int num_of_sources,
159 struct sof_sink **sinks, int num_of_sinks);
160
173 struct input_stream_buffer *input_buffers,
174 int num_input_buffers,
175 struct output_stream_buffer *output_buffers,
176 int num_output_buffers);
177
188 struct input_stream_buffer *input_buffers,
189 int num_input_buffers,
190 struct output_stream_buffer *output_buffers,
191 int num_output_buffers);
192
203 int (*set_config_param)(struct processing_module *mod, uint32_t param_id_data);
204
215 int (*get_config_param)(struct processing_module *mod, uint32_t *param_id_data);
216
228 uint32_t config_id,
229 enum module_cfg_fragment_position pos, uint32_t data_offset_size,
230 const uint8_t *fragment, size_t fragment_size, uint8_t *response,
231 size_t response_size);
232
244 uint32_t config_id, uint32_t *data_offset_size,
245 uint8_t *fragment, size_t fragment_size);
246
251 enum module_processing_mode mode);
252
257
264 int (*reset)(struct processing_module *mod);
265
271 int (*free)(struct processing_module *mod);
272
277 int (*bind)(struct processing_module *mod, const struct bind_info *bind_data);
278
283 int (*unbind)(struct processing_module *mod, const struct bind_info *unbind_data);
284
291 int (*trigger)(struct processing_module *mod, int cmd);
292
293 /*
294 * Ops relevant only for the endpoint devices such as the host copier or DAI copier.
295 * Other modules should not implement these.
296 *
297 * Below #ifdef is a temporary solution used until work on separating a common interface
298 * for loadable modules is completed.
299 */
300#ifdef SOF_MODULE_API_PRIVATE
301 const struct module_endpoint_ops *endpoint_ops;
302#endif /* SOF_MODULE_PRIVATE */
303};
304
305#endif /* __MODULE_MODULE_INTERFACE__ */
module_processing_mode
MODULE_PROCESSING_NORMAL: Indicates that module is expected to apply its custom processing on the inp...
Definition interface.h:44
@ MODULE_PROCESSING_BYPASS
Definition interface.h:46
@ MODULE_PROCESSING_NORMAL
Definition interface.h:45
module_cfg_fragment_position
Fragment position in config MODULE_CFG_FRAGMENT_FIRST: first fragment of the large configuration MODU...
Definition interface.h:29
@ MODULE_CFG_FRAGMENT_FIRST
Definition interface.h:31
@ MODULE_CFG_FRAGMENT_LAST
Definition interface.h:32
@ MODULE_CFG_FRAGMENT_MIDDLE
Definition interface.h:30
@ MODULE_CFG_FRAGMENT_SINGLE
Definition interface.h:33
Component module binding metadata and endpoint references.
Definition component.h:287
Input stream buffer.
Definition interface.h:53
uint32_t consumed
Definition interface.h:56
uint32_t size
Definition interface.h:55
void * data
Definition interface.h:54
bool end_of_stream
Definition interface.h:59
Ops relevant only for the endpoint devices such as the host copier or DAI copier.
Definition module_interface.h:34
3rd party processing module interface
Definition interface.h:102
int(* process_audio_stream)(struct processing_module *mod, struct input_stream_buffer *input_buffers, int num_input_buffers, struct output_stream_buffer *output_buffers, int num_output_buffers)
process_audio_stream (depreciated)
Definition interface.h:172
int(* set_processing_mode)(struct processing_module *mod, enum module_processing_mode mode)
(IADK) Set processing mode for the module
Definition interface.h:250
int(* set_configuration)(struct processing_module *mod, uint32_t config_id, enum module_cfg_fragment_position pos, uint32_t data_offset_size, const uint8_t *fragment, size_t fragment_size, uint8_t *response, size_t response_size)
(optional) Set module configuration for the given configuration ID
Definition interface.h:227
int(* unbind)(struct processing_module *mod, const struct bind_info *unbind_data)
(optional) Module specific unbind procedure, called when modules are disconnected from one another.
Definition interface.h:283
int(* process)(struct processing_module *mod, struct sof_source **sources, int num_of_sources, struct sof_sink **sinks, int num_of_sinks)
Module specific processing procedure This procedure is responsible to consume samples provided by the...
Definition interface.h:157
int(* reset)(struct processing_module *mod)
(optional) Module specific reset procedure, called as part of module_adapter component reset in ....
Definition interface.h:264
int(* process_raw_data)(struct processing_module *mod, struct input_stream_buffer *input_buffers, int num_input_buffers, struct output_stream_buffer *output_buffers, int num_output_buffers)
process_raw_data (depreciated)
Definition interface.h:187
int(* bind)(struct processing_module *mod, const struct bind_info *bind_data)
(optional) Module specific bind procedure, called when modules are bound with each other.
Definition interface.h:277
int(* trigger)(struct processing_module *mod, int cmd)
(optional) Module specific trigger procedure, called when modules are triggered.
Definition interface.h:291
int(* free)(struct processing_module *mod)
(optional) Module specific free procedure, called as part of module_adapter component free in ....
Definition interface.h:271
enum module_processing_mode(* get_processing_mode)(struct processing_module *mod)
(IADK) Get the current processing mode for the module
Definition interface.h:256
int(* get_config_param)(struct processing_module *mod, uint32_t *param_id_data)
(optional) Get module configuration parameter
Definition interface.h:215
int(* set_config_param)(struct processing_module *mod, uint32_t param_id_data)
(optional) Set module configuration parameter
Definition interface.h:203
int(* prepare)(struct processing_module *mod, struct sof_source **sources, int num_of_sources, struct sof_sink **sinks, int num_of_sinks)
(optional) Module specific prepare procedure, called as part of module_adapter component preparation ...
Definition interface.h:113
int(* init)(struct processing_module *mod)
Module specific initialization procedure, called as part of module_adapter component creation in ....
Definition interface.h:107
int(* get_configuration)(struct processing_module *mod, uint32_t config_id, uint32_t *data_offset_size, uint8_t *fragment, size_t fragment_size)
(optional) Get module runtime configuration for the given configuration ID
Definition interface.h:243
bool(* is_ready_to_process)(struct processing_module *mod, struct sof_source **sources, int num_of_sources, struct sof_sink **sinks, int num_of_sinks)
(optional) return true if the module is ready to process This procedure should check if the module is...
Definition interface.h:132
Output stream buffer.
Definition interface.h:66
void * data
Definition interface.h:67
uint32_t size
Definition interface.h:68
Definition base.h:103
internals of sink API.
Definition sink_api.h:141
internals of source API.
Definition source_api.h:137
Definition interface.h:80
struct config_param_id_data::@126 f
uint32_t data16
Definition interface.h:83
uint32_t _rsvd
Definition interface.h:85
uint32_t dw
Definition interface.h:81
uint32_t id
Definition interface.h:84