23 #include <spa/utils/defs.h>
24 #include <spa/utils/type.h>
25 #include <spa/utils/hook.h>
26 #include <spa/buffer/buffer.h>
27 #include <spa/node/event.h>
28 #include <spa/node/command.h>
31 #define SPA_TYPE_INTERFACE_Node SPA_TYPE_INFO_INTERFACE_BASE "Node"
33 #define SPA_VERSION_NODE 0
44 #define SPA_NODE_CHANGE_MASK_FLAGS (1u<<0)
45 #define SPA_NODE_CHANGE_MASK_PROPS (1u<<1)
46 #define SPA_NODE_CHANGE_MASK_PARAMS (1u<<2)
49 #define SPA_NODE_FLAG_RT (1u<<0)
50 #define SPA_NODE_FLAG_IN_DYNAMIC_PORTS (1u<<1)
51 #define SPA_NODE_FLAG_OUT_DYNAMIC_PORTS (1u<<2)
52 #define SPA_NODE_FLAG_IN_PORT_CONFIG (1u<<3)
54 #define SPA_NODE_FLAG_OUT_PORT_CONFIG (1u<<4)
56 #define SPA_NODE_FLAG_NEED_CONFIGURE (1u<<5)
58 #define SPA_NODE_FLAG_ASYNC (1u<<6)
68 #define SPA_NODE_INFO_INIT() ((struct spa_node_info) { 0, })
76 #define SPA_PORT_CHANGE_MASK_FLAGS (1u<<0)
77 #define SPA_PORT_CHANGE_MASK_RATE (1u<<1)
78 #define SPA_PORT_CHANGE_MASK_PROPS (1u<<2)
79 #define SPA_PORT_CHANGE_MASK_PARAMS (1u<<3)
82 #define SPA_PORT_FLAG_REMOVABLE (1u<<0)
83 #define SPA_PORT_FLAG_OPTIONAL (1u<<1)
84 #define SPA_PORT_FLAG_CAN_ALLOC_BUFFERS (1u<<2)
85 #define SPA_PORT_FLAG_IN_PLACE (1u<<3)
87 #define SPA_PORT_FLAG_NO_REF (1u<<4)
91 #define SPA_PORT_FLAG_LIVE (1u<<5)
93 #define SPA_PORT_FLAG_PHYSICAL (1u<<6)
94 #define SPA_PORT_FLAG_TERMINAL (1u<<7)
97 #define SPA_PORT_FLAG_DYNAMIC_DATA (1u<<8)
101 struct spa_fraction rate;
102 const struct spa_dict *props;
103 struct spa_param_info *params;
107 #define SPA_PORT_INFO_INIT() ((struct spa_port_info) { 0, })
109 #define SPA_RESULT_TYPE_NODE_ERROR 1
110 #define SPA_RESULT_TYPE_NODE_PARAMS 2
125 #define SPA_NODE_EVENT_INFO 0
126 #define SPA_NODE_EVENT_PORT_INFO 1
127 #define SPA_NODE_EVENT_RESULT 2
128 #define SPA_NODE_EVENT_EVENT 3
129 #define SPA_NODE_EVENT_NUM 4
138 #define SPA_VERSION_NODE_EVENTS 0
145 void (*port_info) (
void *data,
165 void (*result) (
void *data,
int seq,
int res,
166 uint32_t type,
const void *result);
175 void (*event) (
void *data,
const struct spa_event *event);
178 #define SPA_NODE_CALLBACK_READY 0
179 #define SPA_NODE_CALLBACK_REUSE_BUFFER 1
180 #define SPA_NODE_CALLBACK_XRUN 2
181 #define SPA_NODE_CALLBACK_NUM 3
189 #define SPA_VERSION_NODE_CALLBACKS 0
199 int (*ready) (
void *data,
int state);
211 int (*reuse_buffer) (
void *data,
225 int (*xrun) (
void *data, uint64_t trigger, uint64_t delay,
231 #define SPA_NODE_PARAM_FLAG_TEST_ONLY (1 << 0)
232 #define SPA_NODE_PARAM_FLAG_FIXATE (1 << 1)
233 #define SPA_NODE_PARAM_FLAG_NEAREST (1 << 2)
237 #define SPA_NODE_BUFFERS_FLAG_ALLOC (1 << 0)
242 #define SPA_NODE_METHOD_ADD_LISTENER 0
243 #define SPA_NODE_METHOD_SET_CALLBACKS 1
244 #define SPA_NODE_METHOD_SYNC 2
245 #define SPA_NODE_METHOD_ENUM_PARAMS 3
246 #define SPA_NODE_METHOD_SET_PARAM 4
247 #define SPA_NODE_METHOD_SET_IO 5
248 #define SPA_NODE_METHOD_SEND_COMMAND 6
249 #define SPA_NODE_METHOD_ADD_PORT 7
250 #define SPA_NODE_METHOD_REMOVE_PORT 8
251 #define SPA_NODE_METHOD_PORT_ENUM_PARAMS 9
252 #define SPA_NODE_METHOD_PORT_SET_PARAM 10
253 #define SPA_NODE_METHOD_PORT_USE_BUFFERS 11
254 #define SPA_NODE_METHOD_PORT_SET_IO 12
255 #define SPA_NODE_METHOD_PORT_REUSE_BUFFER 13
256 #define SPA_NODE_METHOD_PROCESS 14
257 #define SPA_NODE_METHOD_NUM 15
265 #define SPA_VERSION_NODE_METHODS 0
282 int (*add_listener) (
void *object,
299 int (*set_callbacks) (
void *object,
317 int (*sync) (
void *object,
int seq);
350 int (*enum_params) (
void *object,
int seq,
351 uint32_t id, uint32_t start, uint32_t max,
375 int (*set_param) (
void *object,
376 uint32_t id, uint32_t
flags,
397 int (*set_io) (
void *object,
398 uint32_t id,
void *data,
size_t size);
414 int (*send_command) (
void *object,
const struct spa_command *command);
432 int (*add_port) (
void *object,
446 int (*remove_port) (
void *object,
479 int (*port_enum_params) (
void *object,
int seq,
481 uint32_t id, uint32_t start, uint32_t max,
509 int (*port_set_param) (
void *object,
512 uint32_t id, uint32_t
flags,
556 int (*port_use_buffers) (
void *object,
588 int (*port_set_io) (
void *object,
592 void *data,
size_t size);
605 int (*port_reuse_buffer) (
void *object, uint32_t port_id, uint32_t buffer_id);
630 int (*process) (
void *object);
633 #define spa_node_method(o,method,version,...) \
635 int _res = -ENOTSUP; \
636 struct spa_node *_n = o; \
637 spa_interface_call_res(&_n->iface, \
638 struct spa_node_methods, _res, \
639 method, version, ##__VA_ARGS__); \
643 #define spa_node_method_fast(o,method,version,...) \
646 struct spa_node *_n = o; \
647 spa_interface_call_fast_res(&_n->iface, \
648 struct spa_node_methods, _res, \
649 method, version, ##__VA_ARGS__); \
653 #define spa_node_add_listener(n,...) spa_node_method(n, add_listener, 0, __VA_ARGS__)
654 #define spa_node_set_callbacks(n,...) spa_node_method(n, set_callbacks, 0, __VA_ARGS__)
655 #define spa_node_sync(n,...) spa_node_method(n, sync, 0, __VA_ARGS__)
656 #define spa_node_enum_params(n,...) spa_node_method(n, enum_params, 0, __VA_ARGS__)
657 #define spa_node_set_param(n,...) spa_node_method(n, set_param, 0, __VA_ARGS__)
658 #define spa_node_set_io(n,...) spa_node_method(n, set_io, 0, __VA_ARGS__)
659 #define spa_node_send_command(n,...) spa_node_method(n, send_command, 0, __VA_ARGS__)
660 #define spa_node_add_port(n,...) spa_node_method(n, add_port, 0, __VA_ARGS__)
661 #define spa_node_remove_port(n,...) spa_node_method(n, remove_port, 0, __VA_ARGS__)
662 #define spa_node_port_enum_params(n,...) spa_node_method(n, port_enum_params, 0, __VA_ARGS__)
663 #define spa_node_port_set_param(n,...) spa_node_method(n, port_set_param, 0, __VA_ARGS__)
664 #define spa_node_port_use_buffers(n,...) spa_node_method(n, port_use_buffers, 0, __VA_ARGS__)
665 #define spa_node_port_set_io(n,...) spa_node_method(n, port_set_io, 0, __VA_ARGS__)
667 #define spa_node_port_reuse_buffer(n,...) spa_node_method(n, port_reuse_buffer, 0, __VA_ARGS__)
668 #define spa_node_port_reuse_buffer_fast(n,...) spa_node_method_fast(n, port_reuse_buffer, 0, __VA_ARGS__)
669 #define spa_node_process(n) spa_node_method(n, process, 0)
670 #define spa_node_process_fast(n) spa_node_method_fast(n, process, 0)
uint64_t change_mask
Definition: node.h:108
Node information structure.
Definition: node.h:48
the result of enum_params or port_enum_params.
Definition: node.h:167
uint32_t n_params
number of items in params
Definition: node.h:88
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:350
struct spa_param_info * params
parameter information
Definition: node.h:87
an error result
Definition: node.h:162
Port information structure.
Definition: node.h:99
events from the spa_node.
Definition: node.h:191
struct spa_interface iface
Definition: node.h:41
information about a parameter
Definition: param.h:51
A Buffer.
Definition: buffer.h:92
uint64_t change_mask
Definition: node.h:57
Node methods.
Definition: node.h:345
uint32_t max_output_ports
Definition: node.h:50
uint64_t flags
port flags
Definition: node.h:146
uint32_t size
Definition: pod.h:44
Node callbacks.
Definition: node.h:247
spa_direction
Definition: defs.h:92
uint32_t max_input_ports
Definition: node.h:49