PipeWire 1.4.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Node

Files

file  command.h
 spa/node/command.h
 
file  event.h
 spa/node/event.h
 
file  io.h
 spa/node/io.h
 
file  keys.h
 spa/node/keys.h
 
file  node.h
 spa/node/node.h
 
file  type-info.h
 spa/node/type-info.h
 

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_io_async_buffers
 async buffers 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
 

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 , SPA_NODE_COMMAND_RequestProcess
}
 
enum  spa_node_event { SPA_NODE_EVENT_Error , SPA_NODE_EVENT_Buffering , SPA_NODE_EVENT_RequestRefresh , SPA_NODE_EVENT_RequestProcess }
 
enum  spa_event_node { SPA_EVENT_NODE_START }
 
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 , SPA_IO_AsyncBuffers
}
 IO areas. More...
 
enum  spa_io_position_state { SPA_IO_POSITION_STATE_STOPPED , SPA_IO_POSITION_STATE_STARTING , SPA_IO_POSITION_STATE_RUNNING }
 

Macros

#define SPA_NODE_COMMAND_ID(cmd)
 
#define SPA_NODE_COMMAND_INIT(id)
 
#define SPA_NODE_EVENT_ID(ev)
 
#define SPA_NODE_EVENT_INIT(id)
 
#define SPA_STATUS_OK   0
 
#define SPA_STATUS_NEED_DATA   (1<<0)
 
#define SPA_STATUS_HAVE_DATA   (1<<1)
 
#define SPA_STATUS_STOPPED   (1<<2)
 
#define SPA_STATUS_DRAINED   (1<<3)
 
#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_CLOCK_FLAG_FREEWHEEL   (1u<<0) /* graph is freewheeling */
 
#define SPA_IO_CLOCK_FLAG_XRUN_RECOVER   (1u<<1) /* recovering from xrun */
 
#define SPA_IO_CLOCK_FLAG_LAZY   (1u<<2) /* lazy scheduling */
 
#define SPA_IO_CLOCK_FLAG_NO_RATE
 
#define SPA_IO_VIDEO_SIZE_VALID   (1<<0)
 
#define SPA_IO_SEGMENT_BAR_FLAG_VALID   (1<<0)
 
#define SPA_IO_SEGMENT_VIDEO_FLAG_VALID   (1<<0)
 
#define SPA_IO_SEGMENT_VIDEO_FLAG_DROP_FRAME   (1<<1)
 
#define SPA_IO_SEGMENT_VIDEO_FLAG_PULL_DOWN   (1<<2)
 
#define SPA_IO_SEGMENT_VIDEO_FLAG_INTERLACED   (1<<3)
 
#define SPA_IO_SEGMENT_FLAG_LOOPING   (1<<0)
 after the duration, the segment repeats
 
#define SPA_IO_SEGMENT_FLAG_NO_POSITION   (1<<1)
 position is invalid.
 
#define SPA_IO_POSITION_MAX_SEGMENTS   8
 the maximum number of segments visible in the future
 
#define SPA_IO_RATE_MATCH_FLAG_ACTIVE   (1 << 0)
 
#define SPA_KEY_NODE_NAME   "node.name"
 node keys
 
#define SPA_KEY_NODE_DESCRIPTION   "node.description"
 localized human readable node one-line description.
 
#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_DRIVER   "node.driver"
 the node can be a driver
 
#define SPA_KEY_NODE_ALWAYS_PROCESS   "node.always-process"
 call the process function even if not linked.
 
#define SPA_KEY_NODE_PAUSE_ON_IDLE   "node.pause-on-idle"
 if the node should be paused immediately when idle.
 
#define SPA_KEY_NODE_MONITOR   "node.monitor"
 the node has monitor ports
 
#define SPA_KEY_PORT_NAME   "port.name"
 port keys
 
#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_IGNORE_LATENCY   "port.ignore-latency"
 latency ignored by peers
 
#define SPA_KEY_PORT_GROUP   "port.group"
 the port group this port belongs to
 
#define SPA_API_NODE   static inline
 
#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
 
#define SPA_NODE_FLAG_IN_DYNAMIC_PORTS   (1u<<1)
 input ports can be added/removed
 
#define SPA_NODE_FLAG_OUT_DYNAMIC_PORTS   (1u<<2)
 output ports can be added/removed
 
#define SPA_NODE_FLAG_IN_PORT_CONFIG   (1u<<3)
 input ports can be reconfigured with PortConfig parameter
 
#define SPA_NODE_FLAG_OUT_PORT_CONFIG   (1u<<4)
 output ports can be reconfigured with PortConfig parameter
 
#define SPA_NODE_FLAG_NEED_CONFIGURE   (1u<<5)
 node needs configuration before it can be started.
 
#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.
 
#define SPA_NODE_INFO_INIT()
 
#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
 
#define SPA_PORT_FLAG_OPTIONAL   (1u<<1)
 processing on port is optional
 
#define SPA_PORT_FLAG_CAN_ALLOC_BUFFERS   (1u<<2)
 the port can allocate buffer data
 
#define SPA_PORT_FLAG_IN_PLACE   (1u<<3)
 the port can process data in-place and will need a writable input buffer
 
#define SPA_PORT_FLAG_NO_REF   (1u<<4)
 the port does not keep a ref on the buffer.
 
#define SPA_PORT_FLAG_LIVE   (1u<<5)
 output buffers from this port are timestamped against a live clock.
 
#define SPA_PORT_FLAG_PHYSICAL   (1u<<6)
 connects to some device
 
#define SPA_PORT_FLAG_TERMINAL   (1u<<7)
 data was not created from this port or will not be made available on another port
 
#define SPA_PORT_FLAG_DYNAMIC_DATA   (1u<<8)
 data pointer on buffers can be changed.
 
#define SPA_PORT_INFO_INIT()
 
#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
 
#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_BUFFERS_FLAG_ALLOC   (1 << 0)
 flags to pass to the use_buffers functions
 
#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_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_API_NODE_UTILS   static inline
 
#define spa_node_emit(hooks, method, version, ...)
 
#define spa_node_emit_info(hooks, ...)
 
#define spa_node_emit_port_info(hooks, ...)
 
#define spa_node_emit_result(hooks, ...)
 
#define spa_node_emit_event(hooks, ...)
 
#define spa_node_call(callbacks, method, version, ...)
 
#define spa_node_call_ready(hook, ...)
 
#define spa_node_call_reuse_buffer(hook, ...)
 
#define spa_node_call_xrun(hook, ...)
 

Functions

SPA_API_NODE int spa_node_add_listener (struct spa_node *object, struct spa_hook *listener, const struct spa_node_events *events, void *data)
 
SPA_API_NODE int spa_node_set_callbacks (struct spa_node *object, const struct spa_node_callbacks *callbacks, void *data)
 
SPA_API_NODE int spa_node_sync (struct spa_node *object, int seq)
 
SPA_API_NODE int spa_node_enum_params (struct spa_node *object, int seq, uint32_t id, uint32_t start, uint32_t max, const struct spa_pod *filter)
 
SPA_API_NODE int spa_node_set_param (struct spa_node *object, uint32_t id, uint32_t flags, const struct spa_pod *param)
 
SPA_API_NODE int spa_node_set_io (struct spa_node *object, uint32_t id, void *data, size_t size)
 
SPA_API_NODE int spa_node_send_command (struct spa_node *object, const struct spa_command *command)
 
SPA_API_NODE int spa_node_add_port (struct spa_node *object, enum spa_direction direction, uint32_t port_id, const struct spa_dict *props)
 
SPA_API_NODE int spa_node_remove_port (struct spa_node *object, enum spa_direction direction, uint32_t port_id)
 
SPA_API_NODE int spa_node_port_enum_params (struct spa_node *object, int seq, enum spa_direction direction, uint32_t port_id, uint32_t id, uint32_t start, uint32_t max, const struct spa_pod *filter)
 
SPA_API_NODE int spa_node_port_set_param (struct spa_node *object, enum spa_direction direction, uint32_t port_id, uint32_t id, uint32_t flags, const struct spa_pod *param)
 
SPA_API_NODE int spa_node_port_use_buffers (struct spa_node *object, enum spa_direction direction, uint32_t port_id, uint32_t flags, struct spa_buffer **buffers, uint32_t n_buffers)
 
SPA_API_NODE int spa_node_port_set_io (struct spa_node *object, enum spa_direction direction, uint32_t port_id, uint32_t id, void *data, size_t size)
 
SPA_API_NODE int spa_node_port_reuse_buffer (struct spa_node *object, uint32_t port_id, uint32_t buffer_id)
 
SPA_API_NODE int spa_node_port_reuse_buffer_fast (struct spa_node *object, uint32_t port_id, uint32_t buffer_id)
 
SPA_API_NODE int spa_node_process (struct spa_node *object)
 
SPA_API_NODE int spa_node_process_fast (struct spa_node *object)
 
SPA_API_NODE_UTILS void spa_result_func_node_params (void *data, int seq, int res 1, uint32_t type 1, const void *result)
 
SPA_API_NODE_UTILS 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)
 
SPA_API_NODE_UTILS 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

static const struct spa_type_info spa_type_io []
 
static const struct spa_type_info spa_type_node_event_id []
 
static const struct spa_type_info spa_type_node_event []
 
static const struct spa_type_info spa_type_node_command_id []
 
static const struct spa_type_info spa_type_node_command []
 

Detailed Description

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

Enumeration Type Documentation

◆ 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_COMMAND_RequestProcess 

Sent to a driver when some other node emitted the RequestProcess event.

◆ spa_node_event

Enumerator
SPA_NODE_EVENT_Error 
SPA_NODE_EVENT_Buffering 
SPA_NODE_EVENT_RequestRefresh 
SPA_NODE_EVENT_RequestProcess 

◆ spa_event_node

Enumerator
SPA_EVENT_NODE_START 

◆ 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 (currently not used in PipeWire)

SPA_IO_Clock 

area to update clock information, struct spa_io_clock

SPA_IO_Latency 

latency reporting, struct spa_io_latency (currently not used in PipeWire).

See also
spa_param_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 (currently not used in PipeWire)

SPA_IO_AsyncBuffers 

async area to exchange buffers, struct spa_io_async_buffers

◆ spa_io_position_state

Enumerator
SPA_IO_POSITION_STATE_STOPPED 
SPA_IO_POSITION_STATE_STARTING 
SPA_IO_POSITION_STATE_RUNNING 

Macro Definition Documentation

◆ SPA_NODE_COMMAND_ID

#define SPA_NODE_COMMAND_ID ( cmd)
Value:
#define SPA_COMMAND_ID(cmd, type)
Definition command.h:36
@ SPA_TYPE_COMMAND_Node
Definition type.h:80
Examples
video-play-pull.c.

◆ SPA_NODE_COMMAND_INIT

◆ SPA_NODE_EVENT_ID

#define SPA_NODE_EVENT_ID ( ev)
Value:
#define SPA_EVENT_ID(ev, type)
Definition event.h:35
@ SPA_TYPE_EVENT_Node
Definition type.h:74

◆ SPA_NODE_EVENT_INIT

#define SPA_NODE_EVENT_INIT ( id)
Value:
#define SPA_EVENT_INIT(type, id)
Definition event.h:42

◆ SPA_STATUS_OK

#define SPA_STATUS_OK   0

◆ SPA_STATUS_NEED_DATA

◆ SPA_STATUS_HAVE_DATA

◆ SPA_STATUS_STOPPED

#define SPA_STATUS_STOPPED   (1<<2)

◆ SPA_STATUS_DRAINED

#define SPA_STATUS_DRAINED   (1<<3)

◆ SPA_IO_BUFFERS_INIT

◆ SPA_IO_MEMORY_INIT

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

◆ SPA_IO_CLOCK_FLAG_FREEWHEEL

#define SPA_IO_CLOCK_FLAG_FREEWHEEL   (1u<<0) /* graph is freewheeling */

◆ SPA_IO_CLOCK_FLAG_XRUN_RECOVER

#define SPA_IO_CLOCK_FLAG_XRUN_RECOVER   (1u<<1) /* recovering from xrun */

◆ SPA_IO_CLOCK_FLAG_LAZY

#define SPA_IO_CLOCK_FLAG_LAZY   (1u<<2) /* lazy scheduling */

◆ SPA_IO_CLOCK_FLAG_NO_RATE

#define SPA_IO_CLOCK_FLAG_NO_RATE

◆ SPA_IO_VIDEO_SIZE_VALID

#define SPA_IO_VIDEO_SIZE_VALID   (1<<0)

◆ SPA_IO_SEGMENT_BAR_FLAG_VALID

#define SPA_IO_SEGMENT_BAR_FLAG_VALID   (1<<0)

◆ SPA_IO_SEGMENT_VIDEO_FLAG_VALID

#define SPA_IO_SEGMENT_VIDEO_FLAG_VALID   (1<<0)

◆ SPA_IO_SEGMENT_VIDEO_FLAG_DROP_FRAME

#define SPA_IO_SEGMENT_VIDEO_FLAG_DROP_FRAME   (1<<1)

◆ SPA_IO_SEGMENT_VIDEO_FLAG_PULL_DOWN

#define SPA_IO_SEGMENT_VIDEO_FLAG_PULL_DOWN   (1<<2)

◆ SPA_IO_SEGMENT_VIDEO_FLAG_INTERLACED

#define SPA_IO_SEGMENT_VIDEO_FLAG_INTERLACED   (1<<3)

◆ SPA_IO_SEGMENT_FLAG_LOOPING

#define SPA_IO_SEGMENT_FLAG_LOOPING   (1<<0)

after the duration, the segment repeats

◆ SPA_IO_SEGMENT_FLAG_NO_POSITION

#define SPA_IO_SEGMENT_FLAG_NO_POSITION   (1<<1)

position is invalid.

The position can be invalid after a seek, for example, when the exact mapping of the extra segment info (bar, video, ...) to position has not been determined yet

◆ SPA_IO_POSITION_MAX_SEGMENTS

#define SPA_IO_POSITION_MAX_SEGMENTS   8

the maximum number of segments visible in the future

◆ SPA_IO_RATE_MATCH_FLAG_ACTIVE

#define SPA_IO_RATE_MATCH_FLAG_ACTIVE   (1 << 0)

◆ SPA_KEY_NODE_NAME

#define SPA_KEY_NODE_NAME   "node.name"

node keys

a node name

◆ SPA_KEY_NODE_DESCRIPTION

#define SPA_KEY_NODE_DESCRIPTION   "node.description"

localized human readable node one-line description.

Ex. "Foobar USB Headset"

◆ 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_DRIVER

#define SPA_KEY_NODE_DRIVER   "node.driver"

the node can be a driver

◆ 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_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_NODE_MONITOR

#define SPA_KEY_NODE_MONITOR   "node.monitor"

the node has monitor ports

◆ SPA_KEY_PORT_NAME

#define SPA_KEY_PORT_NAME   "port.name"

port keys

a port name

◆ 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_IGNORE_LATENCY

#define SPA_KEY_PORT_IGNORE_LATENCY   "port.ignore-latency"

latency ignored by peers

◆ SPA_KEY_PORT_GROUP

#define SPA_KEY_PORT_GROUP   "port.group"

the port group this port belongs to

◆ SPA_API_NODE

#define SPA_API_NODE   static inline

◆ SPA_TYPE_INTERFACE_Node

◆ SPA_VERSION_NODE

#define SPA_VERSION_NODE   0

◆ SPA_NODE_CHANGE_MASK_FLAGS

#define SPA_NODE_CHANGE_MASK_FLAGS   (1u<<0)

◆ SPA_NODE_CHANGE_MASK_PROPS

#define SPA_NODE_CHANGE_MASK_PROPS   (1u<<1)

◆ SPA_NODE_CHANGE_MASK_PARAMS

#define SPA_NODE_CHANGE_MASK_PARAMS   (1u<<2)

◆ SPA_NODE_FLAG_RT

#define SPA_NODE_FLAG_RT   (1u<<0)

node can do real-time processing

◆ SPA_NODE_FLAG_IN_DYNAMIC_PORTS

#define SPA_NODE_FLAG_IN_DYNAMIC_PORTS   (1u<<1)

input ports can be added/removed

◆ SPA_NODE_FLAG_OUT_DYNAMIC_PORTS

#define SPA_NODE_FLAG_OUT_DYNAMIC_PORTS   (1u<<2)

output 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_OUT_PORT_CONFIG

#define SPA_NODE_FLAG_OUT_PORT_CONFIG   (1u<<4)

output 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_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_INFO_INIT

#define SPA_NODE_INFO_INIT ( )
Value:
((struct spa_node_info) { 0, })
Node information structure.
Definition node.h:58

◆ SPA_PORT_CHANGE_MASK_FLAGS

#define SPA_PORT_CHANGE_MASK_FLAGS   (1u<<0)

◆ SPA_PORT_CHANGE_MASK_RATE

#define SPA_PORT_CHANGE_MASK_RATE   (1u<<1)

◆ SPA_PORT_CHANGE_MASK_PROPS

#define SPA_PORT_CHANGE_MASK_PROPS   (1u<<2)
Examples
export-source.c.

◆ SPA_PORT_CHANGE_MASK_PARAMS

#define SPA_PORT_CHANGE_MASK_PARAMS   (1u<<3)

◆ SPA_PORT_FLAG_REMOVABLE

#define SPA_PORT_FLAG_REMOVABLE   (1u<<0)

port can be removed

◆ SPA_PORT_FLAG_OPTIONAL

#define SPA_PORT_FLAG_OPTIONAL   (1u<<1)

processing on port is optional

◆ SPA_PORT_FLAG_CAN_ALLOC_BUFFERS

#define SPA_PORT_FLAG_CAN_ALLOC_BUFFERS   (1u<<2)

the port can allocate buffer data

◆ 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_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_LIVE

#define SPA_PORT_FLAG_LIVE   (1u<<5)

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

◆ SPA_PORT_FLAG_PHYSICAL

#define SPA_PORT_FLAG_PHYSICAL   (1u<<6)

connects to some device

◆ 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_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_INFO_INIT

#define SPA_PORT_INFO_INIT ( )
Value:
((struct spa_port_info) { 0, })
Port information structure.
Definition node.h:103
Examples
export-sink.c, and export-source.c.

◆ 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_NODE_EVENT_INFO

#define SPA_NODE_EVENT_INFO   0

◆ SPA_NODE_EVENT_PORT_INFO

#define SPA_NODE_EVENT_PORT_INFO   1

◆ SPA_NODE_EVENT_RESULT

#define SPA_NODE_EVENT_RESULT   2

◆ SPA_NODE_EVENT_EVENT

#define SPA_NODE_EVENT_EVENT   3

◆ SPA_NODE_EVENT_NUM

#define SPA_NODE_EVENT_NUM   4

◆ SPA_VERSION_NODE_EVENTS

#define SPA_VERSION_NODE_EVENTS   0

◆ 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_CALLBACK_NUM

#define SPA_NODE_CALLBACK_NUM   3

◆ SPA_VERSION_NODE_CALLBACKS

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

Examples
local-v4l2.c, spa/examples/local-libcamera.c, spa/examples/local-v4l2.c, and spa/examples/local-videotestsrc.c.

◆ SPA_NODE_METHOD_ADD_LISTENER

#define SPA_NODE_METHOD_ADD_LISTENER   0

◆ SPA_NODE_METHOD_SET_CALLBACKS

#define SPA_NODE_METHOD_SET_CALLBACKS   1

◆ SPA_NODE_METHOD_SYNC

#define SPA_NODE_METHOD_SYNC   2

◆ SPA_NODE_METHOD_ENUM_PARAMS

#define SPA_NODE_METHOD_ENUM_PARAMS   3

◆ SPA_NODE_METHOD_SET_PARAM

#define SPA_NODE_METHOD_SET_PARAM   4

◆ SPA_NODE_METHOD_SET_IO

#define SPA_NODE_METHOD_SET_IO   5

◆ SPA_NODE_METHOD_SEND_COMMAND

#define SPA_NODE_METHOD_SEND_COMMAND   6

◆ SPA_NODE_METHOD_ADD_PORT

#define SPA_NODE_METHOD_ADD_PORT   7

◆ SPA_NODE_METHOD_REMOVE_PORT

#define SPA_NODE_METHOD_REMOVE_PORT   8

◆ SPA_NODE_METHOD_PORT_ENUM_PARAMS

#define SPA_NODE_METHOD_PORT_ENUM_PARAMS   9

◆ 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_PORT_SET_IO

#define SPA_NODE_METHOD_PORT_SET_IO   12

◆ SPA_NODE_METHOD_PORT_REUSE_BUFFER

#define SPA_NODE_METHOD_PORT_REUSE_BUFFER   13

◆ SPA_NODE_METHOD_PROCESS

#define SPA_NODE_METHOD_PROCESS   14

◆ SPA_NODE_METHOD_NUM

#define SPA_NODE_METHOD_NUM   15

◆ SPA_VERSION_NODE_METHODS

#define SPA_VERSION_NODE_METHODS   0

◆ 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_NodeEvent

#define SPA_TYPE_INFO_NodeEvent   SPA_TYPE_INFO_EVENT_BASE "Node"

◆ 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_NODE_COMMAND_BASE

#define SPA_TYPE_INFO_NODE_COMMAND_BASE   SPA_TYPE_INFO_NodeCommand ":"

◆ SPA_API_NODE_UTILS

#define SPA_API_NODE_UTILS   static inline

◆ spa_node_emit

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

◆ spa_node_emit_info

#define spa_node_emit_info ( hooks,
... )
Value:
spa_node_emit(hooks,info, 0, __VA_ARGS__)
#define spa_node_emit(hooks, method, version,...)
Definition utils.h:123

◆ spa_node_emit_port_info

#define spa_node_emit_port_info ( hooks,
... )
Value:
spa_node_emit(hooks,port_info, 0, __VA_ARGS__)
Examples
export-sink.c, and export-source.c.

◆ spa_node_emit_result

#define spa_node_emit_result ( hooks,
... )
Value:
spa_node_emit(hooks,result, 0, __VA_ARGS__)
Examples
export-sink.c, and export-source.c.

◆ spa_node_emit_event

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

◆ spa_node_call

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

◆ spa_node_call_ready

#define spa_node_call_ready ( hook,
... )
Value:
spa_node_call(hook, ready, 0, __VA_ARGS__)
#define spa_node_call(callbacks, method, version,...)
Definition utils.h:133

◆ spa_node_call_reuse_buffer

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

◆ spa_node_call_xrun

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

Function Documentation

◆ spa_node_add_listener()

SPA_API_NODE int spa_node_add_listener ( struct spa_node * object,
struct spa_hook * listener,
const struct spa_node_events * events,
void * data )

◆ spa_node_set_callbacks()

◆ spa_node_sync()

SPA_API_NODE int spa_node_sync ( struct spa_node * object,
int seq )

◆ spa_node_enum_params()

SPA_API_NODE int spa_node_enum_params ( struct spa_node * object,
int seq,
uint32_t id,
uint32_t start,
uint32_t max,
const struct spa_pod * filter )

◆ spa_node_set_param()

◆ spa_node_set_io()

SPA_API_NODE int spa_node_set_io ( struct spa_node * object,
uint32_t id,
void * data,
size_t size )

◆ spa_node_send_command()

◆ spa_node_add_port()

SPA_API_NODE int spa_node_add_port ( struct spa_node * object,
enum spa_direction direction,
uint32_t port_id,
const struct spa_dict * props )

◆ spa_node_remove_port()

SPA_API_NODE int spa_node_remove_port ( struct spa_node * object,
enum spa_direction direction,
uint32_t port_id )

◆ spa_node_port_enum_params()

SPA_API_NODE int spa_node_port_enum_params ( struct spa_node * object,
int seq,
enum spa_direction direction,
uint32_t port_id,
uint32_t id,
uint32_t start,
uint32_t max,
const struct spa_pod * filter )

◆ spa_node_port_set_param()

SPA_API_NODE int spa_node_port_set_param ( struct spa_node * object,
enum spa_direction direction,
uint32_t port_id,
uint32_t id,
uint32_t flags,
const struct spa_pod * param )

◆ spa_node_port_use_buffers()

SPA_API_NODE int spa_node_port_use_buffers ( struct spa_node * object,
enum spa_direction direction,
uint32_t port_id,
uint32_t flags,
struct spa_buffer ** buffers,
uint32_t n_buffers )

◆ spa_node_port_set_io()

SPA_API_NODE int spa_node_port_set_io ( struct spa_node * object,
enum spa_direction direction,
uint32_t port_id,
uint32_t id,
void * data,
size_t size )

◆ spa_node_port_reuse_buffer()

SPA_API_NODE int spa_node_port_reuse_buffer ( struct spa_node * object,
uint32_t port_id,
uint32_t buffer_id )

◆ spa_node_port_reuse_buffer_fast()

SPA_API_NODE int spa_node_port_reuse_buffer_fast ( struct spa_node * object,
uint32_t port_id,
uint32_t buffer_id )

◆ spa_node_process()

◆ spa_node_process_fast()

SPA_API_NODE int spa_node_process_fast ( struct spa_node * object)

◆ spa_result_func_node_params()

SPA_API_NODE_UTILS void spa_result_func_node_params ( void * data,
int seq,
int res 1,
uint32_t type 1,
const void * result )

◆ spa_node_enum_params_sync()

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

◆ spa_node_port_enum_params_sync()

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

Variable Documentation

◆ spa_type_io

const struct spa_type_info spa_type_io[]
static

◆ spa_type_node_event_id

const struct spa_type_info spa_type_node_event_id[]
static

◆ spa_type_node_event

const struct spa_type_info spa_type_node_event[]
static

◆ spa_type_node_command_id

const struct spa_type_info spa_type_node_command_id[]
static

◆ spa_type_node_command

const struct spa_type_info spa_type_node_command[]
static