20 #ifndef __PIPEWIRE_INTERFACES_H__ 21 #define __PIPEWIRE_INTERFACES_H__ 28 #include <spa/props.h> 29 #include <spa/format.h> 30 #include <spa/param-alloc.h> 37 struct pw_registry_proxy;
38 struct pw_module_proxy;
40 struct pw_factory_proxy;
41 struct pw_client_proxy;
62 #define PW_TYPE_INTERFACE__Core PW_TYPE_INTERFACE_BASE "Core" 63 #define PW_TYPE_INTERFACE__Registry PW_TYPE_INTERFACE_BASE "Registry" 64 #define PW_TYPE_INTERFACE__Module PW_TYPE_INTERFACE_BASE "Module" 65 #define PW_TYPE_INTERFACE__Node PW_TYPE_INTERFACE_BASE "Node" 66 #define PW_TYPE_INTERFACE__Client PW_TYPE_INTERFACE_BASE "Client" 67 #define PW_TYPE_INTERFACE__Link PW_TYPE_INTERFACE_BASE "Link" 69 #define PW_VERSION_CORE 0 71 #define PW_CORE_PROXY_METHOD_UPDATE_TYPES 0 72 #define PW_CORE_PROXY_METHOD_SYNC 1 73 #define PW_CORE_PROXY_METHOD_GET_REGISTRY 2 74 #define PW_CORE_PROXY_METHOD_CLIENT_UPDATE 3 75 #define PW_CORE_PROXY_METHOD_CREATE_OBJECT 4 76 #define PW_CORE_PROXY_METHOD_CREATE_LINK 5 77 #define PW_CORE_PROXY_METHOD_NUM 6 88 #define PW_VERSION_CORE_PROXY_METHODS 0 112 void (*
sync) (
void *object, uint32_t seq);
139 const char *factory_name,
142 const struct spa_dict *props,
156 uint32_t output_node_id,
157 uint32_t output_port_id,
158 uint32_t input_node_id,
159 uint32_t input_port_id,
160 const struct spa_format *filter,
161 const struct spa_dict *props,
166 pw_core_proxy_update_types(
struct pw_core_proxy *core, uint32_t first_id, uint32_t n_types,
const char **types)
172 pw_core_proxy_sync(
struct pw_core_proxy *core, uint32_t seq)
177 static inline struct pw_registry_proxy *
178 pw_core_proxy_get_registry(
struct pw_core_proxy *core, uint32_t type, uint32_t
version,
size_t user_data_size)
182 return (
struct pw_registry_proxy *) p;
186 pw_core_proxy_client_update(
struct pw_core_proxy *core,
const struct spa_dict *props)
192 pw_core_proxy_create_object(
struct pw_core_proxy *core,
193 const char *factory_name,
196 const struct spa_dict *props,
197 size_t user_data_size)
205 static inline struct pw_link_proxy *
206 pw_core_proxy_create_link(
struct pw_core_proxy *core,
208 uint32_t output_node_id,
209 uint32_t output_port_id,
210 uint32_t input_node_id,
211 uint32_t input_port_id,
212 const struct spa_format *filter,
213 const struct spa_dict *prop,
214 size_t user_data_size)
219 return (
struct pw_link_proxy*) p;
223 #define PW_CORE_PROXY_EVENT_UPDATE_TYPES 0 224 #define PW_CORE_PROXY_EVENT_DONE 1 225 #define PW_CORE_PROXY_EVENT_ERROR 2 226 #define PW_CORE_PROXY_EVENT_REMOVE_ID 3 227 #define PW_CORE_PROXY_EVENT_INFO 4 228 #define PW_CORE_PROXY_EVENT_NUM 5 235 #define PW_VERSION_CORE_PROXY_EVENTS 0 257 void (*done) (
void *object, uint32_t seq);
270 void (*error) (
void *object, uint32_t id,
int res,
const char *
error, ...);
281 void (*remove_id) (
void *object, uint32_t id);
291 pw_core_proxy_add_listener(
struct pw_core_proxy *core,
292 struct spa_hook *listener,
300 #define pw_core_resource_update_types(r,...) pw_resource_notify(r,struct pw_core_proxy_events,update_types,__VA_ARGS__) 301 #define pw_core_resource_done(r,...) pw_resource_notify(r,struct pw_core_proxy_events,done,__VA_ARGS__) 302 #define pw_core_resource_error(r,...) pw_resource_notify(r,struct pw_core_proxy_events,error,__VA_ARGS__) 303 #define pw_core_resource_remove_id(r,...) pw_resource_notify(r,struct pw_core_proxy_events,remove_id,__VA_ARGS__) 304 #define pw_core_resource_info(r,...) pw_resource_notify(r,struct pw_core_proxy_events,info,__VA_ARGS__) 307 #define PW_VERSION_REGISTRY 0 335 #define PW_REGISTRY_PROXY_METHOD_BIND 0 336 #define PW_REGISTRY_PROXY_METHOD_NUM 1 340 #define PW_VERSION_REGISTRY_PROXY_METHODS 0 354 void (*bind) (
void *object, uint32_t id, uint32_t type, uint32_t
version, uint32_t new_id);
359 pw_registry_proxy_bind(
struct pw_registry_proxy *registry,
360 uint32_t
id, uint32_t type, uint32_t version,
361 size_t user_data_size)
369 #define PW_REGISTRY_PROXY_EVENT_GLOBAL 0 370 #define PW_REGISTRY_PROXY_EVENT_GLOBAL_REMOVE 1 371 #define PW_REGISTRY_PROXY_EVENT_NUM 2 375 #define PW_VERSION_REGISTRY_PROXY_EVENTS 0 389 void (*global) (
void *object, uint32_t id, uint32_t parent_id,
390 uint32_t permissions, uint32_t type, uint32_t
version);
400 void (*global_remove) (
void *object, uint32_t id);
404 pw_registry_proxy_add_listener(
struct pw_registry_proxy *registry,
405 struct spa_hook *listener,
412 #define pw_registry_resource_global(r,...) pw_resource_notify(r,struct pw_registry_proxy_events,global,__VA_ARGS__) 413 #define pw_registry_resource_global_remove(r,...) pw_resource_notify(r,struct pw_registry_proxy_events,global_remove,__VA_ARGS__) 416 #define PW_VERSION_MODULE 0 418 #define PW_MODULE_PROXY_EVENT_INFO 0 419 #define PW_MODULE_PROXY_EVENT_NUM 1 423 #define PW_VERSION_MODULE_PROXY_EVENTS 0 434 pw_module_proxy_add_listener(
struct pw_module_proxy *module,
435 struct spa_hook *listener,
442 #define pw_module_resource_info(r,...) pw_resource_notify(r,struct pw_module_proxy_events,info,__VA_ARGS__) 444 #define PW_VERSION_NODE 0 446 #define PW_NODE_PROXY_EVENT_INFO 0 447 #define PW_NODE_PROXY_EVENT_NUM 1 451 #define PW_VERSION_NODE_PROXY_EVENTS 0 462 pw_node_proxy_add_listener(
struct pw_node_proxy *node,
463 struct spa_hook *listener,
470 #define pw_node_resource_info(r,...) pw_resource_notify(r,struct pw_node_proxy_events,info,__VA_ARGS__) 472 #define PW_VERSION_FACTORY 0 474 #define PW_FACTORY_PROXY_EVENT_INFO 0 475 #define PW_FACTORY_PROXY_EVENT_NUM 1 479 #define PW_VERSION_FACTORY_PROXY_EVENTS 0 491 pw_factory_proxy_add_listener(
struct pw_factory_proxy *factory,
492 struct spa_hook *listener,
499 #define pw_factory_resource_info(r,...) pw_resource_notify(r,struct pw_factory_proxy_events,info,__VA_ARGS__) 501 #define PW_VERSION_CLIENT 0 503 #define PW_CLIENT_PROXY_EVENT_INFO 0 504 #define PW_CLIENT_PROXY_EVENT_NUM 1 508 #define PW_VERSION_CLIENT_PROXY_EVENTS 0 520 pw_client_proxy_add_listener(
struct pw_client_proxy *client,
521 struct spa_hook *listener,
528 #define pw_client_resource_info(r,...) pw_resource_notify(r,struct pw_client_proxy_events,info,__VA_ARGS__) 531 #define PW_VERSION_LINK 0 533 #define PW_LINK_PROXY_EVENT_INFO 0 534 #define PW_LINK_PROXY_EVENT_NUM 1 538 #define PW_VERSION_LINK_PROXY_EVENTS 0 550 pw_link_proxy_add_listener(
struct pw_link_proxy *link,
551 struct spa_hook *listener,
558 #define pw_link_resource_info(r,...) pw_resource_notify(r,struct pw_link_proxy_events,info,__VA_ARGS__) uint32_t version
Definition: interfaces.h:424
uint32_t version
Definition: interfaces.h:509
struct pw_proxy * pw_proxy_new(struct pw_proxy *factory, uint32_t type, size_t user_data_size)
Make a new proxy object.
void(* client_update)(void *object, const struct spa_dict *props)
Update the client properties.
Definition: interfaces.h:126
Module events.
Definition: interfaces.h:422
void(* get_registry)(void *object, uint32_t version, uint32_t new_id)
Get the registry object.
Definition: interfaces.h:121
void(* info)(void *object, struct pw_module_info *info)
Notify module info.
Definition: interfaces.h:430
uint32_t version
Definition: interfaces.h:539
The core information.
Definition: introspect.h:76
uint32_t version
Definition: interfaces.h:376
Factory events.
Definition: interfaces.h:478
Represents an object on the client side.
void(* create_link)(void *object, uint32_t output_node_id, uint32_t output_port_id, uint32_t input_node_id, uint32_t input_port_id, const struct spa_format *filter, const struct spa_dict *props, uint32_t new_id)
Create a new link between two node ports.
Definition: interfaces.h:155
uint32_t pw_proxy_get_id(struct pw_proxy *proxy)
Get the local id of the proxy.
Definition: proxy.c:83
Node events.
Definition: interfaces.h:450
#define pw_proxy_do(p, type, method,...)
Definition: proxy.h:149
void pw_proxy_add_proxy_listener(struct pw_proxy *proxy, struct spa_hook *listener, const void *events, void *data)
Add a listener for the events received from the remote resource.
Definition: proxy.c:101
uint32_t version
Definition: interfaces.h:341
void(* error)(void *object, uint32_t id, int res, const char *error,...)
Fatal error event.
Definition: interfaces.h:270
The client information.
Definition: introspect.h:125
Link events.
Definition: interfaces.h:537
void(* info)(void *object, struct pw_factory_info *info)
Notify factory info.
Definition: interfaces.h:486
void(* info)(void *object, struct pw_client_info *info)
Notify client info.
Definition: interfaces.h:515
uint32_t version
Definition: interfaces.h:452
Core events.
Definition: interfaces.h:234
uint32_t version
Definition: interfaces.h:480
The link information.
Definition: introspect.h:192
The factory information.
Definition: introspect.h:174
void(* create_object)(void *object, const char *factory_name, uint32_t type, uint32_t version, const struct spa_dict *props, uint32_t new_id)
Create a new object on the PipeWire server from a factory.
Definition: interfaces.h:138
The module information.
Definition: introspect.h:103
Client events.
Definition: interfaces.h:507
uint32_t version
Definition: interfaces.h:89
void(* info)(void *object, struct pw_link_info *info)
Notify link info.
Definition: interfaces.h:545
uint32_t version
Definition: interfaces.h:236
Registry methods.
Definition: interfaces.h:339
void(* info)(void *object, struct pw_core_info *info)
Notify new core info.
Definition: interfaces.h:287
void(* update_types)(void *object, uint32_t first_id, uint32_t n_types, const char **types)
Update the type map.
Definition: interfaces.h:99
The node information.
Definition: introspect.h:142
void(* info)(void *object, struct pw_node_info *info)
Notify node info.
Definition: interfaces.h:458
Core methods.
Definition: interfaces.h:87
Registry events.
Definition: interfaces.h:374
void(* sync)(void *object, uint32_t seq)
Do server roundtrip.
Definition: interfaces.h:112