PipeWire: impl-port.c File Reference

PipeWire 0.3.37

Data Structures | Macros | Functions
impl-port.c File Reference
Include dependency graph for impl-port.c:

## Data Structures
struct | result_port_params_data
struct | param_filter

## Macros
#define | NAME "port"

## Functions
void | pw_impl_port_update_state (struct pw_impl_port *port, enum pw_impl_port_state state, int res, char *error)
int | pw_impl_port_init_mix (struct pw_impl_port *port, struct pw_impl_port_mix *mix)
int | pw_impl_port_release_mix (struct pw_impl_port *port, struct pw_impl_port_mix *mix)
struct pw_impl_port * | pw_context_create_port (struct pw_context *context, enum pw_direction direction, uint32_t port_id, const struct spa_port_info *info, size_t user_data_size)
| Create a new port. More...
int | pw_impl_port_set_mix (struct pw_impl_port *port, struct spa_node *node, uint32_t flags)
enum pw_direction | pw_impl_port_get_direction (struct pw_impl_port *port)
| Get the port direction. More...
uint32_t | pw_impl_port_get_id (struct pw_impl_port *port)
| Get the port id. More...
const struct pw_properties * | pw_impl_port_get_properties (struct pw_impl_port *port)
| Get the port properties. More...
int | pw_impl_port_update_properties (struct pw_impl_port *port, const struct spa_dict *dict)
| Update the port properties. More...
void | pw_impl_port_update_info (struct pw_impl_port *port, const struct spa_port_info *info)
struct pw_impl_node * | pw_impl_port_get_node (struct pw_impl_port *port)
| Get the port parent node or NULL when not yet set. More...
void | pw_impl_port_add_listener (struct pw_impl_port *port, struct spa_hook *listener, const struct pw_impl_port_events *events, void *data)
| Add an event listener on the port. More...
const struct pw_port_info * | pw_impl_port_get_info (struct pw_impl_port *port)
| Get the port info. More...
void * | pw_impl_port_get_user_data (struct pw_impl_port *port)
int | pw_impl_port_register (struct pw_impl_port *port, struct pw_properties *properties)
int | pw_impl_port_add (struct pw_impl_port *port, struct pw_impl_node *node)
| Add a port to a node. More...
void | pw_impl_port_unlink (struct pw_impl_port *port)
void | pw_impl_port_destroy (struct pw_impl_port *port)
int | pw_impl_port_for_each_param (struct pw_impl_port *port, int seq, uint32_t param_id, uint32_t index, uint32_t max, const struct spa_pod *filter, int(*callback)(void *data, int seq, uint32_t id, uint32_t index, uint32_t next, struct spa_pod *param), void *data)
int | pw_impl_port_for_each_filtered_param (struct pw_impl_port *in_port, struct pw_impl_port *out_port, int seq, uint32_t in_param_id, uint32_t out_param_id, const struct spa_pod *filter, int(*callback)(void *data, int seq, uint32_t id, uint32_t index, uint32_t next, struct spa_pod *param), void *data)
int | pw_impl_port_for_each_link (struct pw_impl_port *port, int(*callback)(void *data, struct pw_impl_link *link), void *data)
int | pw_impl_port_recalc_latency (struct pw_impl_port *port)
int | pw_impl_port_is_linked (struct pw_impl_port *port)
| check is a port has links, return 0 if not, 1 if it is linked More...
int | pw_impl_port_set_param (struct pw_impl_port *port, uint32_t id, uint32_t flags, const struct spa_pod *param)
int | pw_impl_port_use_buffers (struct pw_impl_port *port, struct pw_impl_port_mix *mix, uint32_t flags, struct spa_buffer **buffers, uint32_t n_buffers)

## Macro Definition Documentation

## ◆ NAME

#define NAME "port"

## Function Documentation

## ◆ pw_impl_port_destroy()

void pw_impl_port_destroy | ( | struct pw_impl_port * | port | ) |

References NAME, pw_control_destroy(), pw_impl_port_unlink(), pw_log_debug, SPA_CONTAINER_OF, and spa_list_consume.

## ◆ pw_impl_port_for_each_filtered_param()

int pw_impl_port_for_each_filtered_param | ( | struct pw_impl_port * | in_port,
|  | struct pw_impl_port * | out_port,
|  | int | seq,
|  | uint32_t | in_param_id,
|  | uint32_t | out_param_id,
|  | const struct spa_pod * | filter,
|  | int(*)(void *data, int seq, uint32_t id, uint32_t index, uint32_t next, struct spa_pod *param) | callback,
|  | void * | data
| ) |  |

References param_filter::callback, param_filter::data, param_filter::in_param_id, param_filter::in_port, param_filter::out_param_id, param_filter::out_port, pw_impl_port_for_each_param(), and param_filter::seq.

## ◆ pw_impl_port_for_each_link()

int pw_impl_port_for_each_link | ( | struct pw_impl_port * | port,
|  | int(*)(void *data, struct pw_impl_link *link) | callback,
|  | void * | data
| ) |  |

References port::direction, PW_DIRECTION_OUTPUT, and spa_list_for_each_safe.

Referenced by pw_impl_port_unlink().

## ◆ pw_impl_port_for_each_param()

int pw_impl_port_for_each_param | ( | struct pw_impl_port * | port,
|  | int | seq,
|  | uint32_t | param_id,
|  | uint32_t | index,
|  | uint32_t | max,
|  | const struct spa_pod * | filter,
|  | int(*)(void *data, int seq, uint32_t id, uint32_t index, uint32_t next, struct spa_pod *param) | callback,
|  | void * | data
| ) |  |

References result_port_params_data::callback, result_port_params_data::data, result_port_params_data::impl, port::node, result_port_params_data::seq, and SPA_CONTAINER_OF.

Referenced by pw_impl_port_for_each_filtered_param().

## ◆ pw_impl_port_get_user_data()

void * pw_impl_port_get_user_data | ( | struct pw_impl_port * | port | ) |

References port::user_data.

## ◆ pw_impl_port_init_mix()

int pw_impl_port_init_mix | ( | struct pw_impl_port * | port,
|  | struct pw_impl_port_mix * | mix
| ) |  |

## ◆ pw_impl_port_recalc_latency()

int pw_impl_port_recalc_latency | ( | struct pw_impl_port * | port | ) |

References spa_latency_info::direction, port::direction, port::info, port::latency, spa_latency_info::max_ns, spa_latency_info::max_quantum, spa_latency_info::max_rate, spa_latency_info::min_ns, spa_latency_info::min_quantum, spa_latency_info::min_rate, pw_direction_as_string(), PW_DIRECTION_OUTPUT, pw_impl_port_set_param(), pw_log_debug, SPA_DIRECTION_REVERSE, spa_latency_build(), SPA_LATENCY_INFO, spa_latency_info_combine(), spa_latency_info_compare(), spa_list_for_each, SPA_PARAM_Latency, and spa_pod_builder_init().

## ◆ pw_impl_port_register()

int pw_impl_port_register | ( | struct pw_impl_port * | port,
|  | struct pw_properties * | properties
| ) |  |

References port::node, pw_global_new(), PW_KEY_AUDIO_CHANNEL, PW_KEY_FORMAT_DSP, PW_KEY_NODE_ID, PW_KEY_OBJECT_PATH, PW_KEY_PORT_ALIAS, PW_KEY_PORT_CONTROL, PW_KEY_PORT_DIRECTION, PW_KEY_PORT_EXTRA, PW_KEY_PORT_ID, PW_KEY_PORT_MONITOR, PW_KEY_PORT_NAME, PW_KEY_PORT_PHYSICAL, PW_KEY_PORT_TERMINAL, PW_TYPE_INTERFACE_Port, and PW_VERSION_PORT.

## ◆ pw_impl_port_release_mix()

int pw_impl_port_release_mix | ( | struct pw_impl_port * | port,
|  | struct pw_impl_port_mix * | mix
| ) |  |

## ◆ pw_impl_port_set_mix()

int pw_impl_port_set_mix | ( | struct pw_impl_port * | port,
|  | struct spa_node * | node,
|  | uint32_t | flags
| ) |  |

References port::direction, port::io, NAME, port::port, pw_direction_reverse(), pw_log_debug, pw_unload_spa_handle(), SPA_CONTAINER_OF, SPA_IO_Buffers, spa_list_for_each, spa_node_add_port, spa_node_port_set_io, and spa_node_remove_port.

## ◆ pw_impl_port_set_param()

int pw_impl_port_set_param | ( | struct pw_impl_port * | port,
|  | uint32_t | id,
|  | uint32_t | flags,
|  | const struct spa_pod * | param
| ) |  |

References port::direction, port::flags, NAME, node::node, port::node, port::port_id, PW_DIRECTION_INPUT, pw_log_debug, spa_debug_type_find_name(), SPA_FLAG_IS_SET, spa_node_port_set_param, SPA_PARAM_Format, spa_strerror, and spa_type_param.

Referenced by pw_impl_port_recalc_latency().

## ◆ pw_impl_port_unlink()

void pw_impl_port_unlink | ( | struct pw_impl_port * | port | ) |

References pw_impl_port_for_each_link().

Referenced by pw_impl_port_destroy().

## ◆ pw_impl_port_update_info()

void pw_impl_port_update_info | ( | struct pw_impl_port * | port,
|  | const struct spa_port_info * | info
| ) |  |

## ◆ pw_impl_port_update_state()

void pw_impl_port_update_state | ( | struct pw_impl_port * | port,
|  | enum pw_impl_port_state | state,
|  | int | res,
|  | char * | error
| ) |  |

References NAME, PW_IMPL_PORT_STATE_ERROR, pw_log, SPA_LOG_LEVEL_DEBUG, and SPA_LOG_LEVEL_ERROR.

Referenced by pw_impl_port_use_buffers().

## ◆ pw_impl_port_use_buffers()

int pw_impl_port_use_buffers | ( | struct pw_impl_port * | port,
|  | struct pw_impl_port_mix * | mix,
|  | uint32_t | flags,
|  | struct spa_buffer ** | buffers,
|  | uint32_t | n_buffers
| ) |  |

References port::direction, NAME, port::port_id, PW_IMPL_PORT_STATE_READY, pw_impl_port_update_state(), and pw_log_debug.