PipeWire  1.4.5
factory.h
Go to the documentation of this file.
1 /* PipeWire */
2 /* SPDX-FileCopyrightText: Copyright © 2018 Wim Taymans */
3 /* SPDX-License-Identifier: MIT */
4 
5 #ifndef PIPEWIRE_FACTORY_H
6 #define PIPEWIRE_FACTORY_H
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #include <stdarg.h>
13 #include <errno.h>
14 
15 #include <spa/utils/defs.h>
16 #include <spa/utils/hook.h>
17 
18 #include <pipewire/proxy.h>
19 
28 #define PW_TYPE_INTERFACE_Factory PW_TYPE_INFO_INTERFACE_BASE "Factory"
29 
30 #define PW_FACTORY_PERM_MASK PW_PERM_R|PW_PERM_M
31 
32 #define PW_VERSION_FACTORY 3
33 struct pw_factory;
34 
35 #ifndef PW_API_FACTORY_IMPL
36 #define PW_API_FACTORY_IMPL static inline
37 #endif
38 
41  uint32_t id;
42  const char *name;
43  const char *type;
44  uint32_t version;
45 #define PW_FACTORY_CHANGE_MASK_PROPS (1 << 0)
46 #define PW_FACTORY_CHANGE_MASK_ALL ((1 << 1)-1)
47  uint64_t change_mask;
48  struct spa_dict *props;
49 };
50 
51 struct pw_factory_info *
53  const struct pw_factory_info *update);
54 struct pw_factory_info *
56  const struct pw_factory_info *update, bool reset);
57 void
59 
60 
61 #define PW_FACTORY_EVENT_INFO 0
62 #define PW_FACTORY_EVENT_NUM 1
63 
65 struct pw_factory_events {
66 #define PW_VERSION_FACTORY_EVENTS 0
67  uint32_t version;
73  void (*info) (void *data, const struct pw_factory_info *info);
74 };
75 
76 #define PW_FACTORY_METHOD_ADD_LISTENER 0
77 #define PW_FACTORY_METHOD_NUM 1
78 
81 #define PW_VERSION_FACTORY_METHODS 0
82  uint32_t version;
83 
84  int (*add_listener) (void *object,
85  struct spa_hook *listener,
86  const struct pw_factory_events *events,
87  void *data);
88 };
89 
93  struct spa_hook *listener,
94  const struct pw_factory_events *events,
95  void *data)
96 {
97  return spa_api_method_r(int, -ENOTSUP,
98  pw_factory, (struct spa_interface*)object, add_listener, 0,
99  listener, events, data);
100 }
101 
106 #ifdef __cplusplus
107 } /* extern "C" */
108 #endif
109 
110 #endif /* PIPEWIRE_FACTORY_H */
spa/utils/defs.h
struct pw_factory_info * pw_factory_info_merge(struct pw_factory_info *info, const struct pw_factory_info *update, bool reset)
Definition: introspect.c:316
struct pw_factory_info * pw_factory_info_update(struct pw_factory_info *info, const struct pw_factory_info *update)
Definition: introspect.c:345
PW_API_FACTORY_IMPL int pw_factory_add_listener(struct pw_factory *object, struct spa_hook *listener, const struct pw_factory_events *events, void *data)
Definition: factory.h:109
void pw_factory_info_free(struct pw_factory_info *info)
Definition: introspect.c:352
#define PW_API_FACTORY_IMPL
Definition: factory.h:45
#define spa_api_method_r(rtype, def, type, o, method, version,...)
Definition: hook.h:291
spa/utils/hook.h
pipewire/proxy.h
Factory events.
Definition: factory.h:78
uint32_t version
Definition: factory.h:81
void(* info)(void *data, const struct pw_factory_info *info)
Notify factory info.
Definition: factory.h:87
The factory information.
Definition: factory.h:49
uint32_t version
version of the objects
Definition: factory.h:53
const char * type
type of the objects created by this factory
Definition: factory.h:52
uint32_t id
id of the global
Definition: factory.h:50
uint64_t change_mask
bitfield of changed fields since last call
Definition: factory.h:58
Factory methods.
Definition: factory.h:96
uint32_t version
Definition: factory.h:99
int(* add_listener)(void *object, struct spa_hook *listener, const struct pw_factory_events *events, void *data)
Definition: factory.h:101
Definition: dict.h:51
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:427
Definition: hook.h:148