PipeWire  0.2.7
node.h File Reference
Include dependency graph for node.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  pw_node_events
 Node events, listen to them with pw_node_add_listener. More...
 

Macros

#define PW_TYPE__Node   PW_TYPE_OBJECT_BASE "Node"
 
#define PW_TYPE_NODE_BASE   PW_TYPE__Node ":"
 
#define PW_VERSION_NODE_EVENTS   0
 
#define PW_NODE_PROP_MEDIA   "pipewire.media"
 Media type of the node, Audio, Video, Midi. More...
 
#define PW_NODE_PROP_CATEGORY   "pipewire.category"
 Category: Playback, Capture, Duplex, Sink, Source. More...
 
#define PW_NODE_PROP_ROLE   "pipewire.role"
 Role: Movie, Music, Camera, Screen, Communication, Game, Notification, DSP, Production, Accessibility, Test. More...
 
#define PW_NODE_PROP_EXCLUSIVE   "pipewire.exclusive"
 exclusive access to device More...
 
#define PW_NODE_PROP_AUTOCONNECT   "pipewire.autoconnect"
 Automatically connect this node to a compatible node. More...
 
#define PW_NODE_PROP_TARGET_NODE   "pipewire.target.node"
 Try to connect the node to this node id. More...
 

Functions

int pw_node_register (struct pw_node *node, struct pw_client *owner, struct pw_global *parent, struct pw_properties *properties)
 Complete initialization of the node and register. More...
 
void pw_node_destroy (struct pw_node *node)
 Destroy a node. More...
 
const struct pw_node_infopw_node_get_info (struct pw_node *node)
 Get the node info. More...
 
void * pw_node_get_user_data (struct pw_node *node)
 Get node user_data. More...
 
struct pw_corepw_node_get_core (struct pw_node *node)
 Get the core of this node. More...
 
struct pw_globalpw_node_get_global (struct pw_node *node)
 Get the global of this node. More...
 
const struct pw_propertiespw_node_get_properties (struct pw_node *node)
 Get the node properties. More...
 
int pw_node_update_properties (struct pw_node *node, const struct spa_dict *dict)
 Update the node properties. More...
 
void pw_node_set_implementation (struct pw_node *node, struct spa_node *spa_node)
 Set the node implementation. More...
 
struct spa_node * pw_node_get_implementation (struct pw_node *node)
 Get the node implementation. More...
 
void pw_node_add_listener (struct pw_node *node, struct spa_hook *listener, const struct pw_node_events *events, void *data)
 Add an event listener. More...
 
int pw_node_for_each_port (struct pw_node *node, enum pw_direction direction, int(*callback)(void *data, struct pw_port *port), void *data)
 Iterate the ports in the given direction. More...
 
int pw_node_for_each_param (struct pw_node *node, uint32_t param_id, uint32_t index, uint32_t max, const struct spa_pod *filter, int(*callback)(void *data, uint32_t id, uint32_t index, uint32_t next, struct spa_pod *param), void *data)
 
struct pw_portpw_node_find_port (struct pw_node *node, enum pw_direction direction, uint32_t port_id)
 Find the port with direction and port_id or NULL when not found. More...
 
uint32_t pw_node_get_free_port_id (struct pw_node *node, enum pw_direction direction)
 Get a free unused port_id from the node. More...
 
struct pw_portpw_node_get_free_port (struct pw_node *node, enum pw_direction direction)
 Get a free unused port from the node, this can be an old unused existing port or a new port. More...
 
int pw_node_set_active (struct pw_node *node, bool active)
 Set a node active. More...
 
bool pw_node_is_active (struct pw_node *node)
 Check if a node is active. More...
 
int pw_node_set_enabled (struct pw_node *node, bool enabled)
 Set a node enabled. More...
 
bool pw_node_is_enabled (struct pw_node *node)
 Check if a node is enabled. More...
 

Macro Definition Documentation

#define PW_NODE_PROP_AUTOCONNECT   "pipewire.autoconnect"

Automatically connect this node to a compatible node.

Referenced by pw_stream_connect().

#define PW_NODE_PROP_CATEGORY   "pipewire.category"

Category: Playback, Capture, Duplex, Sink, Source.

#define PW_NODE_PROP_EXCLUSIVE   "pipewire.exclusive"

exclusive access to device

#define PW_NODE_PROP_MEDIA   "pipewire.media"

Media type of the node, Audio, Video, Midi.

#define PW_NODE_PROP_ROLE   "pipewire.role"

Role: Movie, Music, Camera, Screen, Communication, Game, Notification, DSP, Production, Accessibility, Test.

#define PW_NODE_PROP_TARGET_NODE   "pipewire.target.node"

Try to connect the node to this node id.

Referenced by pw_stream_connect().

#define PW_TYPE__Node   PW_TYPE_OBJECT_BASE "Node"
#define PW_TYPE_NODE_BASE   PW_TYPE__Node ":"
#define PW_VERSION_NODE_EVENTS   0

Function Documentation

void pw_node_add_listener ( struct pw_node node,
struct spa_hook *  listener,
const struct pw_node_events events,
void *  data 
)

Add an event listener.

Referenced by pw_link_new(), and pw_remote_export().

void pw_node_destroy ( struct pw_node node)

Destroy a node.

struct pw_port* pw_node_find_port ( struct pw_node node,
enum pw_direction  direction,
uint32_t  port_id 
)

Find the port with direction and port_id or NULL when not found.

References PW_DIRECTION_INPUT, and pw_map::pw_map_lookup().

int pw_node_for_each_param ( struct pw_node node,
uint32_t  param_id,
uint32_t  index,
uint32_t  max,
const struct spa_pod *  filter,
int(*)(void *data, uint32_t id, uint32_t index, uint32_t next, struct spa_pod *param)  callback,
void *  data 
)
int pw_node_for_each_port ( struct pw_node node,
enum pw_direction  direction,
int(*)(void *data, struct pw_port *port)  callback,
void *  data 
)

Iterate the ports in the given direction.

The callback should return 0 to fetch the next item, any other value stops the iteration and returns the value. When all callbacks return 0, this function returns 0 when all items are iterated.

References PW_DIRECTION_INPUT.

struct pw_core* pw_node_get_core ( struct pw_node node)

Get the core of this node.

Referenced by pw_remote_export().

struct pw_port* pw_node_get_free_port ( struct pw_node node,
enum pw_direction  direction 
)

Get a free unused port from the node, this can be an old unused existing port or a new port.

uint32_t pw_node_get_free_port_id ( struct pw_node node,
enum pw_direction  direction 
)

Get a free unused port_id from the node.

References PW_DIRECTION_INPUT, and pw_map::pw_map_insert_new().

struct pw_global* pw_node_get_global ( struct pw_node node)

Get the global of this node.

struct spa_node* pw_node_get_implementation ( struct pw_node node)

Get the node implementation.

const struct pw_node_info* pw_node_get_info ( struct pw_node node)

Get the node info.

const struct pw_properties* pw_node_get_properties ( struct pw_node node)

Get the node properties.

void* pw_node_get_user_data ( struct pw_node node)

Get node user_data.

The size of the memory was given in pw_node_new

bool pw_node_is_active ( struct pw_node node)

Check if a node is active.

bool pw_node_is_enabled ( struct pw_node node)

Check if a node is enabled.

int pw_node_register ( struct pw_node node,
struct pw_client owner,
struct pw_global parent,
struct pw_properties properties 
)
int pw_node_set_active ( struct pw_node node,
bool  active 
)

Set a node active.

This will start negotiation with all linked active nodes and start data transport

References pw_log::pw_log_debug(), pw_node::pw_node_set_state(), and PW_NODE_STATE_IDLE.

int pw_node_set_enabled ( struct pw_node node,
bool  enabled 
)

Set a node enabled.

The node will be able to be activated

References pw_log::pw_log_debug(), pw_node::pw_node_set_state(), and PW_NODE_STATE_SUSPENDED.

void pw_node_set_implementation ( struct pw_node node,
struct spa_node *  spa_node 
)

Set the node implementation.

References pw_node_update_properties().

int pw_node_update_properties ( struct pw_node node,
const struct spa_dict *  dict 
)