PipeWire  0.1.4
port.h
Go to the documentation of this file.
1 /* PipeWire
2  * Copyright (C) 2015 Wim Taymans <wim.taymans@gmail.com>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef __PIPEWIRE_PORT_H__
21 #define __PIPEWIRE_PORT_H__
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #define PW_TYPE__Port "PipeWire:Object:Port"
28 #define PW_TYPE_PORT_BASE PW_TYPE__Port ":"
29 
30 #include <spa/hook.h>
31 #include <spa/node.h>
32 #include <spa/buffer.h>
33 
44 struct pw_port;
45 struct pw_link;
46 
47 #include <pipewire/core.h>
48 #include <pipewire/introspect.h>
49 #include <pipewire/node.h>
50 
58 };
59 
61 #define PW_VERSION_PORT_IMPLEMENTATION 0
62  uint32_t version;
63 
64  int (*set_io) (void *data, struct spa_port_io *io);
65 
66  int (*enum_formats) (void *data,
67  struct spa_format **format,
68  const struct spa_format *filter,
69  int32_t index);
70 
71  int (*set_format) (void *data, uint32_t flags, const struct spa_format *format);
72 
73  int (*get_format) (void *data, const struct spa_format **format);
74 
75  int (*get_info) (void *data, const struct spa_port_info **info);
76 
77  int (*enum_params) (void *data, uint32_t index, struct spa_param **param);
78 
79  int (*set_param) (void *data, struct spa_param *param);
80 
81  int (*use_buffers) (void *data, struct spa_buffer **buffers, uint32_t n_buffers);
82 
83  int (*alloc_buffers) (void *data,
84  struct spa_param **params, uint32_t n_params,
85  struct spa_buffer **buffers, uint32_t *n_buffers);
86  int (*reuse_buffer) (void *data, uint32_t buffer_id);
87 
88  int (*send_command) (void *data, struct spa_command *command);
89 };
90 
92 #define PW_VERSION_PORT_EVENTS 0
93  uint32_t version;
94 
95  void (*destroy) (void *data);
96 
97  void (*free) (void *data);
98 
99  void (*link_added) (void *data, struct pw_link *link);
100 
101  void (*link_removed) (void *data, struct pw_link *link);
102 
103  void (*state_changed) (void *data, enum pw_port_state state);
104 
105  void (*properties_changed) (void *data, const struct pw_properties *properties);
106 };
107 
110 struct pw_port *
112  uint32_t port_id,
113  struct pw_properties *properties,
114  size_t user_data_size);
115 
118 
119 const struct pw_properties *pw_port_get_properties(struct pw_port *port);
120 
121 void pw_port_update_properties(struct pw_port *port, const struct spa_dict *dict);
122 
124 uint32_t pw_port_get_id(struct pw_port *port);
125 
127 struct pw_node *pw_port_get_node(struct pw_port *port);
128 
130 void pw_port_add(struct pw_port *port, struct pw_node *node);
131 
132 void pw_port_set_implementation(struct pw_port *port,
134  void *data);
135 
136 void pw_port_add_listener(struct pw_port *port,
137  struct spa_hook *listener,
138  const struct pw_port_events *events,
139  void *data);
140 
142 void pw_port_destroy(struct pw_port *port);
143 
144 void * pw_port_get_user_data(struct pw_port *port);
145 
147 int pw_port_enum_formats(struct pw_port *port,
148  struct spa_format **format,
149  const struct spa_format *filter,
150  int32_t index);
151 
153 int pw_port_set_format(struct pw_port *port, uint32_t flags, const struct spa_format *format);
154 
156 int pw_port_get_format(struct pw_port *port, const struct spa_format **format);
157 
159 int pw_port_get_info(struct pw_port *port, const struct spa_port_info **info);
160 
162 int pw_port_enum_params(struct pw_port *port, uint32_t index, struct spa_param **param);
163 
165 int pw_port_set_param(struct pw_port *port, struct spa_param *param);
166 
168 int pw_port_use_buffers(struct pw_port *port, struct spa_buffer **buffers, uint32_t n_buffers);
169 
171 int pw_port_alloc_buffers(struct pw_port *port,
172  struct spa_param **params, uint32_t n_params,
173  struct spa_buffer **buffers, uint32_t *n_buffers);
174 
175 
176 #ifdef __cplusplus
177 }
178 #endif
179 
180 #endif /* __PIPEWIRE_PORT_H__ */
int(* get_format)(void *data, const struct spa_format **format)
Definition: port.h:73
A collection of key/value pairs.
Definition: properties.h:38
const struct pw_node_implementation * implementation
Implementation of core node functions.
Definition: private.h:221
void * pw_port_get_user_data(struct pw_port *port)
Definition: port.c:253
int(* get_info)(void *data, const struct spa_port_info **info)
Definition: port.h:75
uint32_t pw_port_get_id(struct pw_port *port)
Get the port id.
Definition: port.c:212
int(* send_command)(void *data, struct spa_command *command)
Definition: port.h:88
int pw_port_set_format(struct pw_port *port, uint32_t flags, const struct spa_format *format)
Definition: port.c:383
int(* enum_formats)(void *data, struct spa_format **format, const struct spa_format *filter, int32_t index)
Definition: port.h:66
int pw_port_use_buffers(struct pw_port *port, struct spa_buffer **buffers, uint32_t n_buffers)
Definition: port.c:452
int pw_port_get_format(struct pw_port *port, const struct spa_format **format)
Definition: port.c:412
struct pw_properties * properties
Definition: private.h:253
struct spa_dict dict
Definition: properties.h:39
int pw_port_alloc_buffers(struct pw_port *port, struct spa_param **params, uint32_t n_params, struct spa_buffer **buffers, uint32_t *n_buffers)
Definition: port.c:491
int pw_port_get_info(struct pw_port *port, const struct spa_port_info **info)
Definition: port.c:422
int pw_port_set_param(struct pw_port *port, struct spa_param *param)
Definition: port.c:442
Definition: port.h:54
struct pw_node_info info
introspectable node info
Definition: private.h:213
void pw_port_add(struct pw_port *port, struct pw_node *node)
Definition: port.c:271
void pw_port_add_listener(struct pw_port *port, struct spa_hook *listener, const struct pw_port_events *events, void *data)
Definition: port.c:245
void pw_port_destroy(struct pw_port *port)
Definition: port.c:318
uint32_t version
Definition: port.h:93
int pw_port_enum_formats(struct pw_port *port, struct spa_format **format, const struct spa_format *filter, int32_t index)
Definition: port.c:370
struct spa_graph_node node
Definition: private.h:240
PipeWire node class.
Definition: private.h:205
const struct pw_properties * pw_port_get_properties(struct pw_port *port)
Definition: port.c:217
int pw_port_enum_params(struct pw_port *port, uint32_t index, struct spa_param **param)
Definition: port.c:432
void pw_port_update_properties(struct pw_port *port, const struct spa_dict *dict)
Definition: port.c:222
uint32_t port_id
port id
Definition: private.h:252
Definition: port.h:91
Definition: port.h:52
int(* set_param)(void *data, struct spa_param *param)
Definition: port.h:79
int(* set_io)(void *data, struct spa_port_io *io)
Definition: port.h:64
int(* enum_params)(void *data, uint32_t index, struct spa_param **param)
Definition: port.h:77
pw_port_state
Definition: port.h:51
Definition: port.h:57
int(* use_buffers)(void *data, struct spa_buffer **buffers, uint32_t n_buffers)
Definition: port.h:81
Definition: port.h:56
struct pw_port * pw_port_new(enum pw_direction direction, uint32_t port_id, struct pw_properties *properties, size_t user_data_size)
Definition: port.c:143
Definition: port.h:55
int(* reuse_buffer)(void *data, uint32_t buffer_id)
Definition: port.h:86
uint32_t version
Definition: port.h:62
enum pw_direction pw_port_get_direction(struct pw_port *port)
Get the port direction.
Definition: port.c:207
enum pw_direction direction
port direction
Definition: private.h:251
Definition: port.h:60
struct spa_graph_port port
Definition: private.h:275
void pw_port_set_implementation(struct pw_port *port, const struct pw_port_implementation *implementation, void *data)
Definition: port.c:237
struct pw_node * pw_port_get_node(struct pw_port *port)
Get the port parent node or NULL when not yet set.
Definition: port.c:232
int(* alloc_buffers)(void *data, struct spa_param **params, uint32_t n_params, struct spa_buffer **buffers, uint32_t *n_buffers)
Definition: port.h:83
Definition: port.h:53
The port object.
Definition: private.h:246
int(* set_format)(void *data, uint32_t flags, const struct spa_format *format)
Definition: port.h:71
pw_direction
The direction of a port.
Definition: introspect.h:47