PipeWire: SPA Nodes

PipeWire 0.3.34

Data Structures | Macros | Enumerations | Functions | Variables
SPA Nodes

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__)

## Enumerations
enum | spa_node_command { SPA_NODE_COMMAND_Suspend , SPA_NODE_COMMAND_Pause , SPA_NODE_COMMAND_Start , SPA_NODE_COMMAND_Enable , SPA_NODE_COMMAND_Disable , SPA_NODE_COMMAND_Flush , SPA_NODE_COMMAND_Drain , SPA_NODE_COMMAND_Marker , SPA_NODE_COMMAND_ParamBegin , SPA_NODE_COMMAND_ParamEnd }
enum | spa_node_event { SPA_NODE_EVENT_Error , SPA_NODE_EVENT_Buffering , SPA_NODE_EVENT_RequestRefresh }
enum | spa_io_type { SPA_IO_Invalid , SPA_IO_Buffers , SPA_IO_Range , SPA_IO_Clock , SPA_IO_Latency , SPA_IO_Control , SPA_IO_Notify , SPA_IO_Position , SPA_IO_RateMatch , SPA_IO_Memory }
| IO areas. More...
enum | spa_io_position_state { SPA_IO_POSITION_STATE_STOPPED , SPA_IO_POSITION_STATE_STARTING , SPA_IO_POSITION_STATE_RUNNING }

## 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 []

## Detailed Description

A spa_node is a component that can consume and produce buffers.

## Macro Definition Documentation

## ◆ SPA_IO_BUFFERS_INIT

#define SPA_IO_BUFFERS_INIT (struct spa_io_buffers) { SPA_STATUS_OK, SPA_ID_INVALID, }

## ◆ SPA_IO_MEMORY_INIT

#define SPA_IO_MEMORY_INIT (struct spa_io_memory) { SPA_STATUS_OK, 0, NULL, }

## ◆ SPA_IO_POSITION_MAX_SEGMENTS

#define SPA_IO_POSITION_MAX_SEGMENTS 8

the maximum number of segments visible in the future

## ◆ SPA_KEY_NODE_ALWAYS_PROCESS

#define SPA_KEY_NODE_ALWAYS_PROCESS "node.always-process"

call the process function even if not linked.

## ◆ SPA_KEY_NODE_DRIVER

#define SPA_KEY_NODE_DRIVER "node.driver"

the node can be a driver

## ◆ SPA_KEY_NODE_LATENCY

#define SPA_KEY_NODE_LATENCY "node.latency"

the requested node latency

## ◆ SPA_KEY_NODE_MAX_LATENCY

#define SPA_KEY_NODE_MAX_LATENCY "node.max-latency"

maximum supported latency

## ◆ SPA_KEY_NODE_MONITOR

#define SPA_KEY_NODE_MONITOR "node.monitor"

the node has monitor ports

## ◆ SPA_KEY_NODE_NAME

#define SPA_KEY_NODE_NAME "node.name"

node keys

a node name

## ◆ SPA_KEY_NODE_PAUSE_ON_IDLE

#define SPA_KEY_NODE_PAUSE_ON_IDLE "node.pause-on-idle"

if the node should be paused immediately when idle.

## ◆ SPA_KEY_PORT_ALIAS

#define SPA_KEY_PORT_ALIAS "port.alias"

a port alias

## ◆ SPA_KEY_PORT_MONITOR

#define SPA_KEY_PORT_MONITOR "port.monitor"

this port is a monitor port

## ◆ SPA_KEY_PORT_NAME

#define SPA_KEY_PORT_NAME "port.name"

port keys

a port name

## ◆ spa_node_add_listener

#define spa_node_add_listener | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, add_listener, 0, __VA_ARGS__)

## ◆ spa_node_add_port

#define spa_node_add_port | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, add_port, 0, __VA_ARGS__)

## ◆ SPA_NODE_BUFFERS_FLAG_ALLOC

#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.

## ◆ spa_node_call

#define spa_node_call | ( |  | callbacks,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
int _res = -ENOTSUP; \
spa_callbacks_call_res(callbacks, struct spa_node_callbacks, \
_res, method, version, ##__VA_ARGS__); \
_res; \
})
spa_node_callbacks
Node callbacks.
Definition: build/doc/spa/node/node.h:207

## ◆ spa_node_call_ready

#define spa_node_call_ready | ( |  | hook,
|  |  | ...
| ) |  | spa_node_call(hook, ready, 0, __VA_ARGS__)

## ◆ spa_node_call_reuse_buffer

#define spa_node_call_reuse_buffer | ( |  | hook,
|  |  | ...
| ) |  | spa_node_call(hook, reuse_buffer, 0, __VA_ARGS__)

## ◆ spa_node_call_xrun

#define spa_node_call_xrun | ( |  | hook,
|  |  | ...
| ) |  | spa_node_call(hook, xrun, 0, __VA_ARGS__)

## ◆ SPA_NODE_CALLBACK_NUM

#define SPA_NODE_CALLBACK_NUM 3

## ◆ SPA_NODE_CALLBACK_READY

#define SPA_NODE_CALLBACK_READY 0

## ◆ SPA_NODE_CALLBACK_REUSE_BUFFER

#define SPA_NODE_CALLBACK_REUSE_BUFFER 1

## ◆ SPA_NODE_CALLBACK_XRUN

#define SPA_NODE_CALLBACK_XRUN 2

## ◆ SPA_NODE_COMMAND_ID

#define SPA_NODE_COMMAND_ID | ( |  | cmd | ) | SPA_COMMAND_ID(cmd, SPA_TYPE_COMMAND_Node)

## ◆ SPA_NODE_COMMAND_INIT

#define SPA_NODE_COMMAND_INIT | ( |  | id | ) | SPA_COMMAND_INIT(SPA_TYPE_COMMAND_Node, id)

## ◆ spa_node_emit

#define spa_node_emit | ( |  | hooks,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
spa_hook_list_call_simple(hooks, struct spa_node_events, \
method, version, ##__VA_ARGS__)
spa_hook_list_call_simple
#define spa_hook_list_call_simple(l, type, method, vers,...)
Definition: hook.h:372
spa_node_events
events from the spa_node.
Definition: build/doc/spa/node/node.h:156

## ◆ spa_node_emit_event

#define spa_node_emit_event | ( |  | hooks,
|  |  | ...
| ) |  | spa_node_emit(hooks,event, 0, __VA_ARGS__)

## ◆ spa_node_emit_info

#define spa_node_emit_info | ( |  | hooks,
|  |  | ...
| ) |  | spa_node_emit(hooks,info, 0, __VA_ARGS__)

## ◆ spa_node_emit_port_info

#define spa_node_emit_port_info | ( |  | hooks,
|  |  | ...
| ) |  | spa_node_emit(hooks,port_info, 0, __VA_ARGS__)

## ◆ spa_node_emit_result

#define spa_node_emit_result | ( |  | hooks,
|  |  | ...
| ) |  | spa_node_emit(hooks,result, 0, __VA_ARGS__)

## ◆ spa_node_enum_params

#define spa_node_enum_params | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, enum_params, 0, __VA_ARGS__)

## ◆ SPA_NODE_EVENT_EVENT

#define SPA_NODE_EVENT_EVENT 3

## ◆ SPA_NODE_EVENT_ID

#define SPA_NODE_EVENT_ID | ( |  | ev | ) | SPA_EVENT_ID(ev, SPA_TYPE_EVENT_Node)

## ◆ SPA_NODE_EVENT_INFO

#define SPA_NODE_EVENT_INFO 0

## ◆ SPA_NODE_EVENT_INIT

#define SPA_NODE_EVENT_INIT | ( |  | id | ) | SPA_EVENT_INIT(SPA_TYPE_EVENT_Node, id)

## ◆ SPA_NODE_EVENT_NUM

#define SPA_NODE_EVENT_NUM 4

## ◆ SPA_NODE_EVENT_PORT_INFO

#define SPA_NODE_EVENT_PORT_INFO 1

## ◆ SPA_NODE_EVENT_RESULT

#define SPA_NODE_EVENT_RESULT 2

## ◆ SPA_NODE_INFO_INIT

#define SPA_NODE_INFO_INIT | ( |  | ) | (struct spa_node_info) { 0, }

## ◆ spa_node_method

#define spa_node_method | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
int _res = -ENOTSUP; \
struct spa_node *_n = o; \
spa_interface_call_res(&_n->iface, \
struct spa_node_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_node_methods
Node methods.
Definition: build/doc/spa/node/node.h:281
spa_node
Definition: build/doc/spa/node/node.h:53

## ◆ SPA_NODE_METHOD_ADD_LISTENER

#define SPA_NODE_METHOD_ADD_LISTENER 0

## ◆ SPA_NODE_METHOD_ADD_PORT

#define SPA_NODE_METHOD_ADD_PORT 7

## ◆ SPA_NODE_METHOD_ENUM_PARAMS

#define SPA_NODE_METHOD_ENUM_PARAMS 3

## ◆ SPA_NODE_METHOD_NUM

#define SPA_NODE_METHOD_NUM 15

## ◆ SPA_NODE_METHOD_PORT_ENUM_PARAMS

#define SPA_NODE_METHOD_PORT_ENUM_PARAMS 9

## ◆ SPA_NODE_METHOD_PORT_REUSE_BUFFER

#define SPA_NODE_METHOD_PORT_REUSE_BUFFER 13

## ◆ SPA_NODE_METHOD_PORT_SET_IO

#define SPA_NODE_METHOD_PORT_SET_IO 12

## ◆ SPA_NODE_METHOD_PORT_SET_PARAM

#define SPA_NODE_METHOD_PORT_SET_PARAM 10

## ◆ SPA_NODE_METHOD_PORT_USE_BUFFERS

#define SPA_NODE_METHOD_PORT_USE_BUFFERS 11

## ◆ SPA_NODE_METHOD_PROCESS

#define SPA_NODE_METHOD_PROCESS 14

## ◆ SPA_NODE_METHOD_REMOVE_PORT

#define SPA_NODE_METHOD_REMOVE_PORT 8

## ◆ SPA_NODE_METHOD_SEND_COMMAND

#define SPA_NODE_METHOD_SEND_COMMAND 6

## ◆ SPA_NODE_METHOD_SET_CALLBACKS

#define SPA_NODE_METHOD_SET_CALLBACKS 1

## ◆ SPA_NODE_METHOD_SET_IO

#define SPA_NODE_METHOD_SET_IO 5

## ◆ SPA_NODE_METHOD_SET_PARAM

#define SPA_NODE_METHOD_SET_PARAM 4

## ◆ SPA_NODE_METHOD_SYNC

#define SPA_NODE_METHOD_SYNC 2

## ◆ SPA_NODE_PARAM_FLAG_FIXATE

#define SPA_NODE_PARAM_FLAG_FIXATE (1 << 1)

Fixate the non-optional unset fields.

## ◆ SPA_NODE_PARAM_FLAG_NEAREST

#define SPA_NODE_PARAM_FLAG_NEAREST (1 << 2)

Allow set fields to be rounded to the nearest allowed field value.

## ◆ SPA_NODE_PARAM_FLAG_TEST_ONLY

#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

## ◆ spa_node_port_enum_params

#define spa_node_port_enum_params | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, port_enum_params, 0, __VA_ARGS__)

## ◆ spa_node_port_reuse_buffer

#define spa_node_port_reuse_buffer | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, port_reuse_buffer, 0, __VA_ARGS__)

## ◆ spa_node_port_set_io

#define spa_node_port_set_io | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, port_set_io, 0, __VA_ARGS__)

## ◆ spa_node_port_set_param

#define spa_node_port_set_param | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, port_set_param, 0, __VA_ARGS__)

## ◆ spa_node_port_use_buffers

#define spa_node_port_use_buffers | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, port_use_buffers, 0, __VA_ARGS__)

## ◆ spa_node_process

#define spa_node_process | ( |  | n | ) | spa_node_method(n, process, 0)

## ◆ spa_node_remove_port

#define spa_node_remove_port | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, remove_port, 0, __VA_ARGS__)

## ◆ spa_node_send_command

#define spa_node_send_command | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, send_command, 0, __VA_ARGS__)

## ◆ spa_node_set_callbacks

#define spa_node_set_callbacks | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, set_callbacks, 0, __VA_ARGS__)

## ◆ spa_node_set_io

#define spa_node_set_io | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, set_io, 0, __VA_ARGS__)

## ◆ spa_node_set_param

#define spa_node_set_param | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, set_param, 0, __VA_ARGS__)

## ◆ spa_node_sync

#define spa_node_sync | ( |  | n,
|  |  | ...
| ) |  | spa_node_method(n, sync, 0, __VA_ARGS__)

## ◆ SPA_PORT_INFO_INIT

#define SPA_PORT_INFO_INIT | ( |  | ) | (struct spa_port_info) { 0, }

## ◆ SPA_RESULT_TYPE_NODE_ERROR

#define SPA_RESULT_TYPE_NODE_ERROR 1

## ◆ SPA_RESULT_TYPE_NODE_PARAMS

#define SPA_RESULT_TYPE_NODE_PARAMS 2

## ◆ SPA_TYPE_INFO_IO

#define SPA_TYPE_INFO_IO SPA_TYPE_INFO_ENUM_BASE "IO"

## ◆ SPA_TYPE_INFO_IO_BASE

#define SPA_TYPE_INFO_IO_BASE SPA_TYPE_INFO_IO ":"

## ◆ SPA_TYPE_INFO_NODE_COMMAND_BASE

#define SPA_TYPE_INFO_NODE_COMMAND_BASE SPA_TYPE_INFO_NodeCommand ":"

## ◆ SPA_TYPE_INFO_NODE_EVENT_BASE

#define SPA_TYPE_INFO_NODE_EVENT_BASE SPA_TYPE_INFO_NodeEvent ":"

## ◆ SPA_TYPE_INFO_NodeCommand

#define SPA_TYPE_INFO_NodeCommand SPA_TYPE_INFO_COMMAND_BASE "Node"

## ◆ SPA_TYPE_INFO_NodeEvent

#define SPA_TYPE_INFO_NodeEvent SPA_TYPE_INFO_EVENT_BASE "Node"

## ◆ SPA_TYPE_INTERFACE_Node

#define SPA_TYPE_INTERFACE_Node SPA_TYPE_INFO_INTERFACE_BASE "Node"

## ◆ SPA_VERSION_NODE

#define SPA_VERSION_NODE 0

## Enumeration Type Documentation

## ◆ spa_io_position_state

enum spa_io_position_state

Enumerator
SPA_IO_POSITION_STATE_STOPPED |
SPA_IO_POSITION_STATE_STARTING |
SPA_IO_POSITION_STATE_RUNNING |

## ◆ spa_io_type

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

## ◆ spa_node_command

enum spa_node_command

Enumerator
SPA_NODE_COMMAND_Suspend | suspend a node, this removes all configured formats and closes any devices
SPA_NODE_COMMAND_Pause | pause a node. this makes it stop emitting scheduling events
SPA_NODE_COMMAND_Start | start a node, this makes it start emitting scheduling events
SPA_NODE_COMMAND_Enable |
SPA_NODE_COMMAND_Disable |
SPA_NODE_COMMAND_Flush |
SPA_NODE_COMMAND_Drain |
SPA_NODE_COMMAND_Marker |
SPA_NODE_COMMAND_ParamBegin | begin a set of parameter enumerations or configuration that require the device to remain opened, like query formats and then set a format
SPA_NODE_COMMAND_ParamEnd | end a transaction

## ◆ spa_node_event

enum spa_node_event

Enumerator
SPA_NODE_EVENT_Error |
SPA_NODE_EVENT_Buffering |
SPA_NODE_EVENT_RequestRefresh |

## Function Documentation

## ◆ spa_node_enum_params_sync()

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
| ) |  |
| inline

References spa_result_node_params_data::builder.

## ◆ spa_node_port_enum_params_sync()

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
| ) |  |
| inline

References spa_result_node_params_data::builder.

Referenced by pw_context_debug_port_params(), and pw_context_find_format().

## ◆ spa_result_func_node_params()

void spa_result_func_node_params | ( | void * | data,
|  | int | seq,
|  | int | res,
|  | uint32_t | type,
|  | const void * | result
| ) |  |
| inline

References spa_result_node_params_data::builder, spa_result_node_params_data::data, spa_pod_builder::data, spa_result_node_params::next, spa_pod_builder_state::offset, spa_result_node_params::param, spa_pod_builder_raw_padded(), SPA_POD_SIZE, SPA_PTROFF, and spa_pod_builder::state.

## Variable Documentation

## ◆ spa_type_io

const struct spa_type_info spa_type_io[]

Initial value:
= {
{ SPA_IO_Invalid, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Invalid", NULL },
{ SPA_IO_Buffers, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Buffers", NULL },
{ SPA_IO_Range, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Range", NULL },
{ SPA_IO_Clock, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Clock", NULL },
{ SPA_IO_Latency, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Latency", NULL },
{ SPA_IO_Control, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Control", NULL },
{ SPA_IO_Notify, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Notify", NULL },
{ SPA_IO_Position, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Position", NULL },
{ SPA_IO_RateMatch, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "RateMatch", NULL },
{ SPA_IO_Memory, SPA_TYPE_Int, SPA_TYPE_INFO_IO_BASE "Memory", NULL },
{ 0, 0, NULL, NULL },
}
SPA_TYPE_INFO_IO_BASE
#define SPA_TYPE_INFO_IO_BASE
Definition: node/type-info.h:44
SPA_IO_Notify
@ SPA_IO_Notify
area for notify messages, struct spa_io_sequence
Definition: io.h:58
SPA_IO_Memory
@ SPA_IO_Memory
memory pointer, struct spa_io_memory
Definition: io.h:61
SPA_IO_Clock
@ SPA_IO_Clock
area to update clock information, struct spa_io_clock
Definition: io.h:55
SPA_IO_Control
@ SPA_IO_Control
area for control messages, struct spa_io_sequence
Definition: io.h:57
SPA_IO_Latency
@ SPA_IO_Latency
latency reporting, struct spa_io_latency
Definition: io.h:56
SPA_IO_Range
@ SPA_IO_Range
expected byte range, struct spa_io_range
Definition: io.h:54
SPA_IO_Invalid
@ SPA_IO_Invalid
Definition: io.h:52
SPA_IO_Position
@ SPA_IO_Position
position information in the graph, struct spa_io_position
Definition: io.h:59
SPA_IO_Buffers
@ SPA_IO_Buffers
area to exchange buffers, struct spa_io_buffers
Definition: io.h:53
SPA_IO_RateMatch
@ SPA_IO_RateMatch
rate matching between nodes, struct spa_io_rate_match
Definition: io.h:60
SPA_TYPE_Int
@ SPA_TYPE_Int
Definition: build/doc/spa/utils/type.h:48

Referenced by pw_control_add_link(), and pw_control_new().

## ◆ spa_type_node_command

const struct spa_type_info spa_type_node_command[]

Initial value:
= {
{ 0, SPA_TYPE_Id, SPA_TYPE_INFO_NODE_COMMAND_BASE, spa_type_node_command_id },
{ 0, 0, NULL, NULL },
}
spa_type_node_command_id
const struct spa_type_info spa_type_node_command_id[]
Definition: node/type-info.h:78
SPA_TYPE_INFO_NODE_COMMAND_BASE
#define SPA_TYPE_INFO_NODE_COMMAND_BASE
Definition: node/type-info.h:76
SPA_TYPE_Id
@ SPA_TYPE_Id
Definition: build/doc/spa/utils/type.h:47

## ◆ spa_type_node_command_id

const struct spa_type_info spa_type_node_command_id[]

Initial value:
= {
{ SPA_NODE_COMMAND_Suspend, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Suspend", NULL },
{ SPA_NODE_COMMAND_Pause, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Pause", NULL },
{ SPA_NODE_COMMAND_Start, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Start", NULL },
{ SPA_NODE_COMMAND_Enable, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Enable", NULL },
{ SPA_NODE_COMMAND_Disable, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Disable", NULL },
{ SPA_NODE_COMMAND_Flush, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Flush", NULL },
{ SPA_NODE_COMMAND_Drain, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Drain", NULL },
{ SPA_NODE_COMMAND_Marker, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "Marker", NULL },
{ SPA_NODE_COMMAND_ParamBegin, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "ParamBegin", NULL },
{ SPA_NODE_COMMAND_ParamEnd, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_COMMAND_BASE "ParamEnd", NULL },
{ 0, 0, NULL, NULL },
}
SPA_NODE_COMMAND_Disable
@ SPA_NODE_COMMAND_Disable
Definition: node/command.h:48
SPA_NODE_COMMAND_Flush
@ SPA_NODE_COMMAND_Flush
Definition: node/command.h:49
SPA_NODE_COMMAND_Enable
@ SPA_NODE_COMMAND_Enable
Definition: node/command.h:47
SPA_NODE_COMMAND_Suspend
@ SPA_NODE_COMMAND_Suspend
suspend a node, this removes all configured formats and closes any devices
Definition: node/command.h:41
SPA_NODE_COMMAND_Pause
@ SPA_NODE_COMMAND_Pause
pause a node.
Definition: node/command.h:43
SPA_NODE_COMMAND_Drain
@ SPA_NODE_COMMAND_Drain
Definition: node/command.h:50
SPA_NODE_COMMAND_Marker
@ SPA_NODE_COMMAND_Marker
Definition: node/command.h:51
SPA_NODE_COMMAND_ParamBegin
@ SPA_NODE_COMMAND_ParamBegin
begin a set of parameter enumerations or configuration that require the device to remain opened,...
Definition: node/command.h:52
SPA_NODE_COMMAND_Start
@ SPA_NODE_COMMAND_Start
start a node, this makes it start emitting scheduling events
Definition: node/command.h:45
SPA_NODE_COMMAND_ParamEnd
@ SPA_NODE_COMMAND_ParamEnd
end a transaction
Definition: node/command.h:56

## ◆ spa_type_node_event

const struct spa_type_info spa_type_node_event[]

Initial value:
= {
{ 0, SPA_TYPE_Id, SPA_TYPE_INFO_NODE_EVENT_BASE, spa_type_node_event_id },
{ 0, 0, NULL, NULL },
}
SPA_TYPE_INFO_NODE_EVENT_BASE
#define SPA_TYPE_INFO_NODE_EVENT_BASE
Definition: node/type-info.h:61
spa_type_node_event_id
const struct spa_type_info spa_type_node_event_id[]
Definition: node/type-info.h:63

## ◆ spa_type_node_event_id

const struct spa_type_info spa_type_node_event_id[]

Initial value:
= {
{ SPA_NODE_EVENT_Error, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_EVENT_BASE "Error", NULL },
{ SPA_NODE_EVENT_Buffering, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_EVENT_BASE "Buffering", NULL },
{ SPA_NODE_EVENT_RequestRefresh, SPA_TYPE_Int, SPA_TYPE_INFO_NODE_EVENT_BASE "RequestRefresh", NULL },
{ 0, 0, NULL, NULL },
}
SPA_NODE_EVENT_Error
@ SPA_NODE_EVENT_Error
Definition: node/event.h:41
SPA_NODE_EVENT_Buffering
@ SPA_NODE_EVENT_Buffering
Definition: node/event.h:42
SPA_NODE_EVENT_RequestRefresh
@ SPA_NODE_EVENT_RequestRefresh
Definition: node/event.h:43