| 
    PipeWire
    0.3.33
    
   | 
 
A spa_node is a component that can consume and produce buffers. More...
Data Structures | |
| struct | spa_io_buffers | 
| IO area to exchange buffers.  More... | |
| struct | spa_io_memory | 
| IO area to exchange a memory region.  More... | |
| struct | spa_io_range | 
| A range, suitable for input ports that can suggest a range to output ports.  More... | |
| struct | spa_io_clock | 
| Absolute time reporting.  More... | |
| struct | spa_io_video_size | 
| struct | spa_io_latency | 
| latency reporting  More... | |
| struct | spa_io_sequence | 
| control stream, io area for SPA_IO_Control and SPA_IO_Notify  More... | |
| struct | spa_io_segment_bar | 
| bar and beat segment  More... | |
| struct | spa_io_segment_video | 
| video frame segment  More... | |
| struct | spa_io_segment | 
| A segment converts a running time to a segment (stream) position.  More... | |
| struct | spa_io_position | 
| The position information adds extra meaning to the raw clock times.  More... | |
| struct | spa_io_rate_match | 
| rate matching  More... | |
| struct | spa_node | 
| struct | spa_node_info | 
| Node information structure.  More... | |
| struct | spa_port_info | 
| Port information structure.  More... | |
| struct | spa_result_node_error | 
| an error result  More... | |
| struct | spa_result_node_params | 
| the result of enum_params or port_enum_params.  More... | |
| struct | spa_node_events | 
| events from the spa_node.  More... | |
| struct | spa_node_callbacks | 
| Node callbacks.  More... | |
| struct | spa_node_methods | 
| Node methods.  More... | |
| struct | spa_result_node_params_data | 
Macros | |
| #define | SPA_NODE_COMMAND_ID(cmd) SPA_COMMAND_ID(cmd, SPA_TYPE_COMMAND_Node) | 
| #define | SPA_NODE_COMMAND_INIT(id) SPA_COMMAND_INIT(SPA_TYPE_COMMAND_Node, id) | 
| #define | SPA_NODE_EVENT_ID(ev) SPA_EVENT_ID(ev, SPA_TYPE_EVENT_Node) | 
| #define | SPA_NODE_EVENT_INIT(id) SPA_EVENT_INIT(SPA_TYPE_EVENT_Node, id) | 
| #define | SPA_IO_BUFFERS_INIT (struct spa_io_buffers) { SPA_STATUS_OK, SPA_ID_INVALID, } | 
| #define | SPA_IO_MEMORY_INIT (struct spa_io_memory) { SPA_STATUS_OK, 0, NULL, } | 
| #define | SPA_IO_POSITION_MAX_SEGMENTS 8 | 
| the maximum number of segments visible in the future  More... | |
| #define | SPA_KEY_NODE_NAME "node.name" | 
| node keys  More... | |
| #define | SPA_KEY_NODE_LATENCY "node.latency" | 
| the requested node latency  More... | |
| #define | SPA_KEY_NODE_MAX_LATENCY "node.max-latency" | 
| maximum supported latency  More... | |
| #define | SPA_KEY_NODE_DRIVER "node.driver" | 
| the node can be a driver  More... | |
| #define | SPA_KEY_NODE_ALWAYS_PROCESS "node.always-process" | 
| call the process function even if not linked.  More... | |
| #define | SPA_KEY_NODE_PAUSE_ON_IDLE "node.pause-on-idle" | 
| if the node should be paused immediately when idle.  More... | |
| #define | SPA_KEY_NODE_MONITOR "node.monitor" | 
| the node has monitor ports  More... | |
| #define | SPA_KEY_PORT_NAME "port.name" | 
| port keys  More... | |
| #define | SPA_KEY_PORT_ALIAS "port.alias" | 
| a port alias  More... | |
| #define | SPA_KEY_PORT_MONITOR "port.monitor" | 
| this port is a monitor port  More... | |
| #define | SPA_TYPE_INTERFACE_Node SPA_TYPE_INFO_INTERFACE_BASE "Node" | 
| #define | SPA_VERSION_NODE 0 | 
| #define | SPA_NODE_INFO_INIT() (struct spa_node_info) { 0, } | 
| #define | SPA_PORT_INFO_INIT() (struct spa_port_info) { 0, } | 
| #define | SPA_RESULT_TYPE_NODE_ERROR 1 | 
| #define | SPA_RESULT_TYPE_NODE_PARAMS 2 | 
| #define | SPA_NODE_EVENT_INFO 0 | 
| #define | SPA_NODE_EVENT_PORT_INFO 1 | 
| #define | SPA_NODE_EVENT_RESULT 2 | 
| #define | SPA_NODE_EVENT_EVENT 3 | 
| #define | SPA_NODE_EVENT_NUM 4 | 
| #define | SPA_NODE_CALLBACK_READY 0 | 
| #define | SPA_NODE_CALLBACK_REUSE_BUFFER 1 | 
| #define | SPA_NODE_CALLBACK_XRUN 2 | 
| #define | SPA_NODE_CALLBACK_NUM 3 | 
| #define | SPA_NODE_PARAM_FLAG_TEST_ONLY (1 << 0) | 
| flags that can be passed to set_param and port_set_param functions  More... | |
| #define | SPA_NODE_PARAM_FLAG_FIXATE (1 << 1) | 
| Fixate the non-optional unset fields.  More... | |
| #define | SPA_NODE_PARAM_FLAG_NEAREST (1 << 2) | 
| Allow set fields to be rounded to the nearest allowed field value.  More... | |
| #define | SPA_NODE_BUFFERS_FLAG_ALLOC (1 << 0) | 
| flags to pass to the use_buffers functions  More... | |
| #define | SPA_NODE_METHOD_ADD_LISTENER 0 | 
| #define | SPA_NODE_METHOD_SET_CALLBACKS 1 | 
| #define | SPA_NODE_METHOD_SYNC 2 | 
| #define | SPA_NODE_METHOD_ENUM_PARAMS 3 | 
| #define | SPA_NODE_METHOD_SET_PARAM 4 | 
| #define | SPA_NODE_METHOD_SET_IO 5 | 
| #define | SPA_NODE_METHOD_SEND_COMMAND 6 | 
| #define | SPA_NODE_METHOD_ADD_PORT 7 | 
| #define | SPA_NODE_METHOD_REMOVE_PORT 8 | 
| #define | SPA_NODE_METHOD_PORT_ENUM_PARAMS 9 | 
| #define | SPA_NODE_METHOD_PORT_SET_PARAM 10 | 
| #define | SPA_NODE_METHOD_PORT_USE_BUFFERS 11 | 
| #define | SPA_NODE_METHOD_PORT_SET_IO 12 | 
| #define | SPA_NODE_METHOD_PORT_REUSE_BUFFER 13 | 
| #define | SPA_NODE_METHOD_PROCESS 14 | 
| #define | SPA_NODE_METHOD_NUM 15 | 
| #define | spa_node_method(o, method, version, ...) | 
| #define | spa_node_add_listener(n, ...) spa_node_method(n, add_listener, 0, __VA_ARGS__) | 
| #define | spa_node_set_callbacks(n, ...) spa_node_method(n, set_callbacks, 0, __VA_ARGS__) | 
| #define | spa_node_sync(n, ...) spa_node_method(n, sync, 0, __VA_ARGS__) | 
| #define | spa_node_enum_params(n, ...) spa_node_method(n, enum_params, 0, __VA_ARGS__) | 
| #define | spa_node_set_param(n, ...) spa_node_method(n, set_param, 0, __VA_ARGS__) | 
| #define | spa_node_set_io(n, ...) spa_node_method(n, set_io, 0, __VA_ARGS__) | 
| #define | spa_node_send_command(n, ...) spa_node_method(n, send_command, 0, __VA_ARGS__) | 
| #define | spa_node_add_port(n, ...) spa_node_method(n, add_port, 0, __VA_ARGS__) | 
| #define | spa_node_remove_port(n, ...) spa_node_method(n, remove_port, 0, __VA_ARGS__) | 
| #define | spa_node_port_enum_params(n, ...) spa_node_method(n, port_enum_params, 0, __VA_ARGS__) | 
| #define | spa_node_port_set_param(n, ...) spa_node_method(n, port_set_param, 0, __VA_ARGS__) | 
| #define | spa_node_port_use_buffers(n, ...) spa_node_method(n, port_use_buffers, 0, __VA_ARGS__) | 
| #define | spa_node_port_set_io(n, ...) spa_node_method(n, port_set_io, 0, __VA_ARGS__) | 
| #define | spa_node_port_reuse_buffer(n, ...) spa_node_method(n, port_reuse_buffer, 0, __VA_ARGS__) | 
| #define | spa_node_process(n) spa_node_method(n, process, 0) | 
| #define | SPA_TYPE_INFO_IO SPA_TYPE_INFO_ENUM_BASE "IO" | 
| #define | SPA_TYPE_INFO_IO_BASE SPA_TYPE_INFO_IO ":" | 
| #define | SPA_TYPE_INFO_NodeEvent SPA_TYPE_INFO_EVENT_BASE "Node" | 
| #define | SPA_TYPE_INFO_NODE_EVENT_BASE SPA_TYPE_INFO_NodeEvent ":" | 
| #define | SPA_TYPE_INFO_NodeCommand SPA_TYPE_INFO_COMMAND_BASE "Node" | 
| #define | SPA_TYPE_INFO_NODE_COMMAND_BASE SPA_TYPE_INFO_NodeCommand ":" | 
| #define | spa_node_emit(hooks, method, version, ...) | 
| #define | spa_node_emit_info(hooks, ...) spa_node_emit(hooks,info, 0, __VA_ARGS__) | 
| #define | spa_node_emit_port_info(hooks, ...) spa_node_emit(hooks,port_info, 0, __VA_ARGS__) | 
| #define | spa_node_emit_result(hooks, ...) spa_node_emit(hooks,result, 0, __VA_ARGS__) | 
| #define | spa_node_emit_event(hooks, ...) spa_node_emit(hooks,event, 0, __VA_ARGS__) | 
| #define | spa_node_call(callbacks, method, version, ...) | 
| #define | spa_node_call_ready(hook, ...) spa_node_call(hook, ready, 0, __VA_ARGS__) | 
| #define | spa_node_call_reuse_buffer(hook, ...) spa_node_call(hook, reuse_buffer, 0, __VA_ARGS__) | 
| #define | spa_node_call_xrun(hook, ...) spa_node_call(hook, xrun, 0, __VA_ARGS__) | 
Functions | |
| void | spa_result_func_node_params (void *data, int seq, int res, uint32_t type, const void *result) | 
| int | spa_node_enum_params_sync (struct spa_node *node, uint32_t id, uint32_t *index, const struct spa_pod *filter, struct spa_pod **param, struct spa_pod_builder *builder) | 
| int | spa_node_port_enum_params_sync (struct spa_node *node, enum spa_direction direction, uint32_t port_id, uint32_t id, uint32_t *index, const struct spa_pod *filter, struct spa_pod **param, struct spa_pod_builder *builder) | 
Variables | |
| const struct spa_type_info | spa_type_io [] | 
| const struct spa_type_info | spa_type_node_event_id [] | 
| const struct spa_type_info | spa_type_node_event [] | 
| const struct spa_type_info | spa_type_node_command_id [] | 
| const struct spa_type_info | spa_type_node_command [] | 
A spa_node is a component that can consume and produce buffers.
| #define SPA_IO_BUFFERS_INIT (struct spa_io_buffers) { SPA_STATUS_OK, SPA_ID_INVALID, } | 
| #define SPA_IO_MEMORY_INIT (struct spa_io_memory) { SPA_STATUS_OK, 0, NULL, } | 
| #define SPA_IO_POSITION_MAX_SEGMENTS 8 | 
the maximum number of segments visible in the future
| #define SPA_KEY_NODE_ALWAYS_PROCESS "node.always-process" | 
call the process function even if not linked.
| #define SPA_KEY_NODE_DRIVER "node.driver" | 
the node can be a driver
| #define SPA_KEY_NODE_LATENCY "node.latency" | 
the requested node latency
| #define SPA_KEY_NODE_MAX_LATENCY "node.max-latency" | 
maximum supported latency
| #define SPA_KEY_NODE_MONITOR "node.monitor" | 
the node has monitor ports
| #define SPA_KEY_NODE_NAME "node.name" | 
node keys
a node name
| #define SPA_KEY_NODE_PAUSE_ON_IDLE "node.pause-on-idle" | 
if the node should be paused immediately when idle.
| #define SPA_KEY_PORT_ALIAS "port.alias" | 
a port alias
| #define SPA_KEY_PORT_MONITOR "port.monitor" | 
this port is a monitor port
| #define SPA_KEY_PORT_NAME "port.name" | 
port keys
a port name
| #define spa_node_add_listener | ( | n, | |
| ... | |||
| ) | spa_node_method(n, add_listener, 0, __VA_ARGS__) | 
| #define spa_node_add_port | ( | n, | |
| ... | |||
| ) | spa_node_method(n, add_port, 0, __VA_ARGS__) | 
| #define SPA_NODE_BUFFERS_FLAG_ALLOC (1 << 0) | 
flags to pass to the use_buffers functions
Allocate memory for the buffers. This flag is ignored when the port does not have the SPA_PORT_FLAG_CAN_ALLOC_BUFFERS set.
| #define spa_node_call | ( | callbacks, | |
| method, | |||
| version, | |||
| ... | |||
| ) | 
| #define spa_node_call_ready | ( | hook, | |
| ... | |||
| ) | spa_node_call(hook, ready, 0, __VA_ARGS__) | 
| #define spa_node_call_reuse_buffer | ( | hook, | |
| ... | |||
| ) | spa_node_call(hook, reuse_buffer, 0, __VA_ARGS__) | 
| #define spa_node_call_xrun | ( | hook, | |
| ... | |||
| ) | spa_node_call(hook, xrun, 0, __VA_ARGS__) | 
| #define SPA_NODE_CALLBACK_NUM 3 | 
| #define SPA_NODE_CALLBACK_READY 0 | 
| #define SPA_NODE_CALLBACK_REUSE_BUFFER 1 | 
| #define SPA_NODE_CALLBACK_XRUN 2 | 
| #define SPA_NODE_COMMAND_ID | ( | cmd | ) | SPA_COMMAND_ID(cmd, SPA_TYPE_COMMAND_Node) | 
| #define SPA_NODE_COMMAND_INIT | ( | id | ) | SPA_COMMAND_INIT(SPA_TYPE_COMMAND_Node, id) | 
| #define spa_node_emit | ( | hooks, | |
| method, | |||
| version, | |||
| ... | |||
| ) | 
| #define spa_node_emit_event | ( | hooks, | |
| ... | |||
| ) | spa_node_emit(hooks,event, 0, __VA_ARGS__) | 
| #define spa_node_emit_info | ( | hooks, | |
| ... | |||
| ) | spa_node_emit(hooks,info, 0, __VA_ARGS__) | 
| #define spa_node_emit_port_info | ( | hooks, | |
| ... | |||
| ) | spa_node_emit(hooks,port_info, 0, __VA_ARGS__) | 
| #define spa_node_emit_result | ( | hooks, | |
| ... | |||
| ) | spa_node_emit(hooks,result, 0, __VA_ARGS__) | 
| #define spa_node_enum_params | ( | n, | |
| ... | |||
| ) | spa_node_method(n, enum_params, 0, __VA_ARGS__) | 
| #define SPA_NODE_EVENT_EVENT 3 | 
| #define SPA_NODE_EVENT_ID | ( | ev | ) | SPA_EVENT_ID(ev, SPA_TYPE_EVENT_Node) | 
| #define SPA_NODE_EVENT_INFO 0 | 
| #define SPA_NODE_EVENT_INIT | ( | id | ) | SPA_EVENT_INIT(SPA_TYPE_EVENT_Node, id) | 
| #define SPA_NODE_EVENT_NUM 4 | 
| #define SPA_NODE_EVENT_PORT_INFO 1 | 
| #define SPA_NODE_EVENT_RESULT 2 | 
| #define SPA_NODE_INFO_INIT | ( | ) | (struct spa_node_info) { 0, } | 
| #define spa_node_method | ( | o, | |
| method, | |||
| version, | |||
| ... | |||
| ) | 
| #define SPA_NODE_METHOD_ADD_LISTENER 0 | 
| #define SPA_NODE_METHOD_ADD_PORT 7 | 
| #define SPA_NODE_METHOD_ENUM_PARAMS 3 | 
| #define SPA_NODE_METHOD_NUM 15 | 
| #define SPA_NODE_METHOD_PORT_ENUM_PARAMS 9 | 
| #define SPA_NODE_METHOD_PORT_REUSE_BUFFER 13 | 
| #define SPA_NODE_METHOD_PORT_SET_IO 12 | 
| #define SPA_NODE_METHOD_PORT_SET_PARAM 10 | 
| #define SPA_NODE_METHOD_PORT_USE_BUFFERS 11 | 
| #define SPA_NODE_METHOD_PROCESS 14 | 
| #define SPA_NODE_METHOD_REMOVE_PORT 8 | 
| #define SPA_NODE_METHOD_SEND_COMMAND 6 | 
| #define SPA_NODE_METHOD_SET_CALLBACKS 1 | 
| #define SPA_NODE_METHOD_SET_IO 5 | 
| #define SPA_NODE_METHOD_SET_PARAM 4 | 
| #define SPA_NODE_METHOD_SYNC 2 | 
| #define SPA_NODE_PARAM_FLAG_FIXATE (1 << 1) | 
Fixate the non-optional unset fields.
| #define SPA_NODE_PARAM_FLAG_NEAREST (1 << 2) | 
Allow set fields to be rounded to the nearest allowed field value.
| #define SPA_NODE_PARAM_FLAG_TEST_ONLY (1 << 0) | 
flags that can be passed to set_param and port_set_param functions
Just check if the param is accepted
| #define spa_node_port_enum_params | ( | n, | |
| ... | |||
| ) | spa_node_method(n, port_enum_params, 0, __VA_ARGS__) | 
| #define spa_node_port_reuse_buffer | ( | n, | |
| ... | |||
| ) | spa_node_method(n, port_reuse_buffer, 0, __VA_ARGS__) | 
| #define spa_node_port_set_io | ( | n, | |
| ... | |||
| ) | spa_node_method(n, port_set_io, 0, __VA_ARGS__) | 
| #define spa_node_port_set_param | ( | n, | |
| ... | |||
| ) | spa_node_method(n, port_set_param, 0, __VA_ARGS__) | 
| #define spa_node_port_use_buffers | ( | n, | |
| ... | |||
| ) | spa_node_method(n, port_use_buffers, 0, __VA_ARGS__) | 
| #define spa_node_process | ( | n | ) | spa_node_method(n, process, 0) | 
| #define spa_node_remove_port | ( | n, | |
| ... | |||
| ) | spa_node_method(n, remove_port, 0, __VA_ARGS__) | 
| #define spa_node_send_command | ( | n, | |
| ... | |||
| ) | spa_node_method(n, send_command, 0, __VA_ARGS__) | 
| #define spa_node_set_callbacks | ( | n, | |
| ... | |||
| ) | spa_node_method(n, set_callbacks, 0, __VA_ARGS__) | 
| #define spa_node_set_io | ( | n, | |
| ... | |||
| ) | spa_node_method(n, set_io, 0, __VA_ARGS__) | 
| #define spa_node_set_param | ( | n, | |
| ... | |||
| ) | spa_node_method(n, set_param, 0, __VA_ARGS__) | 
| #define spa_node_sync | ( | n, | |
| ... | |||
| ) | spa_node_method(n, sync, 0, __VA_ARGS__) | 
| #define SPA_PORT_INFO_INIT | ( | ) | (struct spa_port_info) { 0, } | 
| #define SPA_RESULT_TYPE_NODE_ERROR 1 | 
| #define SPA_RESULT_TYPE_NODE_PARAMS 2 | 
| #define SPA_TYPE_INFO_IO SPA_TYPE_INFO_ENUM_BASE "IO" | 
| #define SPA_TYPE_INFO_IO_BASE SPA_TYPE_INFO_IO ":" | 
| #define SPA_TYPE_INFO_NODE_COMMAND_BASE SPA_TYPE_INFO_NodeCommand ":" | 
| #define SPA_TYPE_INFO_NODE_EVENT_BASE SPA_TYPE_INFO_NodeEvent ":" | 
| #define SPA_TYPE_INFO_NodeCommand SPA_TYPE_INFO_COMMAND_BASE "Node" | 
| #define SPA_TYPE_INFO_NodeEvent SPA_TYPE_INFO_EVENT_BASE "Node" | 
| #define SPA_TYPE_INTERFACE_Node SPA_TYPE_INFO_INTERFACE_BASE "Node" | 
| #define SPA_VERSION_NODE 0 | 
| enum spa_io_type | 
IO areas.
IO information for a port on a node. This is allocated by the host and configured on a node or all ports for which IO is requested.
The plugin will communicate with the host through the IO areas. Different IO area types
| Enumerator | |
|---|---|
| SPA_IO_Invalid | |
| SPA_IO_Buffers | area to exchange buffers, struct spa_io_buffers  | 
| SPA_IO_Range | expected byte range, struct spa_io_range  | 
| SPA_IO_Clock | area to update clock information, struct spa_io_clock  | 
| SPA_IO_Latency | latency reporting, struct spa_io_latency  | 
| SPA_IO_Control | area for control messages, struct spa_io_sequence  | 
| SPA_IO_Notify | area for notify messages, struct spa_io_sequence  | 
| SPA_IO_Position | position information in the graph, struct spa_io_position  | 
| SPA_IO_RateMatch | rate matching between nodes, struct spa_io_rate_match  | 
| SPA_IO_Memory | memory pointer, struct spa_io_memory  | 
| enum spa_node_command | 
| enum spa_node_event | 
      
  | 
  inline | 
References spa_result_node_params_data::builder.
      
  | 
  inline | 
References spa_result_node_params_data::builder.
Referenced by pw_context_debug_port_params(), and pw_context_find_format().
      
  | 
  inline | 
| const struct spa_type_info spa_type_io[] | 
Referenced by pw_control_add_link(), and pw_control_new().
| const struct spa_type_info spa_type_node_command[] | 
| const struct spa_type_info spa_type_node_command_id[] | 
| const struct spa_type_info spa_type_node_event[] | 
| const struct spa_type_info spa_type_node_event_id[] |