PipeWire  0.3.33
build-12683127/doc/spa/node/node.h File Reference

Go to the source code of this file.

Data Structures

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

Macros

#define SPA_TYPE_INTERFACE_Node   SPA_TYPE_INFO_INTERFACE_BASE "Node"
 
#define SPA_VERSION_NODE   0
 
#define SPA_NODE_CHANGE_MASK_FLAGS   (1u<<0)
 
#define SPA_NODE_CHANGE_MASK_PROPS   (1u<<1)
 
#define SPA_NODE_CHANGE_MASK_PARAMS   (1u<<2)
 
#define SPA_NODE_FLAG_RT   (1u<<0)
 node can do real-time processing More...
 
#define SPA_NODE_FLAG_IN_DYNAMIC_PORTS   (1u<<1)
 input ports can be added/removed More...
 
#define SPA_NODE_FLAG_OUT_DYNAMIC_PORTS   (1u<<2)
 output ports can be added/removed More...
 
#define SPA_NODE_FLAG_IN_PORT_CONFIG   (1u<<3)
 input ports can be reconfigured with PortConfig parameter More...
 
#define SPA_NODE_FLAG_OUT_PORT_CONFIG   (1u<<4)
 output ports can be reconfigured with PortConfig parameter More...
 
#define SPA_NODE_FLAG_NEED_CONFIGURE   (1u<<5)
 node needs configuration before it can be started. More...
 
#define SPA_NODE_FLAG_ASYNC   (1u<<6)
 the process function might not immediately produce or consume data but might offload the work to a worker thread. More...
 
#define SPA_NODE_INFO_INIT()   (struct spa_node_info) { 0, }
 
#define SPA_PORT_CHANGE_MASK_FLAGS   (1u<<0)
 
#define SPA_PORT_CHANGE_MASK_RATE   (1u<<1)
 
#define SPA_PORT_CHANGE_MASK_PROPS   (1u<<2)
 
#define SPA_PORT_CHANGE_MASK_PARAMS   (1u<<3)
 
#define SPA_PORT_FLAG_REMOVABLE   (1u<<0)
 port can be removed More...
 
#define SPA_PORT_FLAG_OPTIONAL   (1u<<1)
 processing on port is optional More...
 
#define SPA_PORT_FLAG_CAN_ALLOC_BUFFERS   (1u<<2)
 the port can allocate buffer data More...
 
#define SPA_PORT_FLAG_IN_PLACE   (1u<<3)
 the port can process data in-place and will need a writable input buffer More...
 
#define SPA_PORT_FLAG_NO_REF   (1u<<4)
 the port does not keep a ref on the buffer. More...
 
#define SPA_PORT_FLAG_LIVE   (1u<<5)
 output buffers from this port are timestamped against a live clock. More...
 
#define SPA_PORT_FLAG_PHYSICAL   (1u<<6)
 connects to some device More...
 
#define SPA_PORT_FLAG_TERMINAL   (1u<<7)
 data was not created from this port or will not be made available on another port More...
 
#define SPA_PORT_FLAG_DYNAMIC_DATA   (1u<<8)
 data pointer on buffers can be changed. More...
 
#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_VERSION_NODE_EVENTS   0
 
#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_VERSION_NODE_CALLBACKS   0
 
#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_VERSION_NODE_METHODS   0
 
#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)
 

Macro Definition Documentation

◆ SPA_NODE_CHANGE_MASK_FLAGS

#define SPA_NODE_CHANGE_MASK_FLAGS   (1u<<0)

◆ SPA_NODE_CHANGE_MASK_PARAMS

#define SPA_NODE_CHANGE_MASK_PARAMS   (1u<<2)

◆ SPA_NODE_CHANGE_MASK_PROPS

#define SPA_NODE_CHANGE_MASK_PROPS   (1u<<1)

◆ SPA_NODE_FLAG_ASYNC

#define SPA_NODE_FLAG_ASYNC   (1u<<6)

the process function might not immediately produce or consume data but might offload the work to a worker thread.

◆ SPA_NODE_FLAG_IN_DYNAMIC_PORTS

#define SPA_NODE_FLAG_IN_DYNAMIC_PORTS   (1u<<1)

input ports can be added/removed

◆ SPA_NODE_FLAG_IN_PORT_CONFIG

#define SPA_NODE_FLAG_IN_PORT_CONFIG   (1u<<3)

input ports can be reconfigured with PortConfig parameter

◆ SPA_NODE_FLAG_NEED_CONFIGURE

#define SPA_NODE_FLAG_NEED_CONFIGURE   (1u<<5)

node needs configuration before it can be started.

◆ SPA_NODE_FLAG_OUT_DYNAMIC_PORTS

#define SPA_NODE_FLAG_OUT_DYNAMIC_PORTS   (1u<<2)

output ports can be added/removed

◆ SPA_NODE_FLAG_OUT_PORT_CONFIG

#define SPA_NODE_FLAG_OUT_PORT_CONFIG   (1u<<4)

output ports can be reconfigured with PortConfig parameter

◆ SPA_NODE_FLAG_RT

#define SPA_NODE_FLAG_RT   (1u<<0)

node can do real-time processing

◆ SPA_PORT_CHANGE_MASK_FLAGS

#define SPA_PORT_CHANGE_MASK_FLAGS   (1u<<0)

◆ SPA_PORT_CHANGE_MASK_PARAMS

#define SPA_PORT_CHANGE_MASK_PARAMS   (1u<<3)

◆ SPA_PORT_CHANGE_MASK_PROPS

#define SPA_PORT_CHANGE_MASK_PROPS   (1u<<2)

◆ SPA_PORT_CHANGE_MASK_RATE

#define SPA_PORT_CHANGE_MASK_RATE   (1u<<1)

◆ SPA_PORT_FLAG_CAN_ALLOC_BUFFERS

#define SPA_PORT_FLAG_CAN_ALLOC_BUFFERS   (1u<<2)

the port can allocate buffer data

◆ SPA_PORT_FLAG_DYNAMIC_DATA

#define SPA_PORT_FLAG_DYNAMIC_DATA   (1u<<8)

data pointer on buffers can be changed.

Only the buffer data marked as DYNAMIC can be changed.

◆ SPA_PORT_FLAG_IN_PLACE

#define SPA_PORT_FLAG_IN_PLACE   (1u<<3)

the port can process data in-place and will need a writable input buffer

◆ SPA_PORT_FLAG_LIVE

#define SPA_PORT_FLAG_LIVE   (1u<<5)

output buffers from this port are timestamped against a live clock.

◆ SPA_PORT_FLAG_NO_REF

#define SPA_PORT_FLAG_NO_REF   (1u<<4)

the port does not keep a ref on the buffer.

This means the node will always completely consume the input buffer and it will be recycled after process.

◆ SPA_PORT_FLAG_OPTIONAL

#define SPA_PORT_FLAG_OPTIONAL   (1u<<1)

processing on port is optional

◆ SPA_PORT_FLAG_PHYSICAL

#define SPA_PORT_FLAG_PHYSICAL   (1u<<6)

connects to some device

◆ SPA_PORT_FLAG_REMOVABLE

#define SPA_PORT_FLAG_REMOVABLE   (1u<<0)

port can be removed

◆ SPA_PORT_FLAG_TERMINAL

#define SPA_PORT_FLAG_TERMINAL   (1u<<7)

data was not created from this port or will not be made available on another port

◆ SPA_VERSION_NODE_CALLBACKS

#define SPA_VERSION_NODE_CALLBACKS   0

◆ SPA_VERSION_NODE_EVENTS

#define SPA_VERSION_NODE_EVENTS   0

◆ SPA_VERSION_NODE_METHODS

#define SPA_VERSION_NODE_METHODS   0