PipeWire  1.3.83
metadata.h
Go to the documentation of this file.
1 /* PipeWire */
2 /* SPDX-FileCopyrightText: Copyright © 2019 Wim Taymans */
3 /* SPDX-License-Identifier: MIT */
4 
5 #ifndef PIPEWIRE_EXT_METADATA_H
6 #define PIPEWIRE_EXT_METADATA_H
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #include <spa/utils/defs.h>
13 
22 #define PW_TYPE_INTERFACE_Metadata PW_TYPE_INFO_INTERFACE_BASE "Metadata"
23 
24 #define PW_METADATA_PERM_MASK PW_PERM_RWX
25 
26 #define PW_VERSION_METADATA 3
27 struct pw_metadata;
28 
29 #ifndef PW_API_METADATA_IMPL
30 #define PW_API_METADATA_IMPL static inline
31 #endif
32 
33 #define PW_EXTENSION_MODULE_METADATA PIPEWIRE_MODULE_PREFIX "module-metadata"
34 
35 #define PW_METADATA_EVENT_PROPERTY 0
36 #define PW_METADATA_EVENT_NUM 1
37 
38 
40 struct pw_metadata_events {
41 #define PW_VERSION_METADATA_EVENTS 0
42  uint32_t version;
43 
44  int (*property) (void *data,
45  uint32_t subject,
46  const char *key,
47  const char *type,
48  const char *value);
49 };
50 
51 #define PW_METADATA_METHOD_ADD_LISTENER 0
52 #define PW_METADATA_METHOD_SET_PROPERTY 1
53 #define PW_METADATA_METHOD_CLEAR 2
54 #define PW_METADATA_METHOD_NUM 3
55 
58 #define PW_VERSION_METADATA_METHODS 0
59  uint32_t version;
60 
61  int (*add_listener) (void *object,
62  struct spa_hook *listener,
63  const struct pw_metadata_events *events,
64  void *data);
65 
82  int (*set_property) (void *object,
83  uint32_t subject,
84  const char *key,
85  const char *type,
86  const char *value);
87 
93  int (*clear) (void *object);
94 };
95 
99  struct spa_hook *listener,
100  const struct pw_metadata_events *events,
101  void *data)
102 {
103  return spa_api_method_r(int, -ENOTSUP,
104  pw_metadata, (struct spa_interface*)object, add_listener, 0,
105  listener, events, data);
106 }
110  uint32_t subject,
111  const char *key,
112  const char *type,
113  const char *value)
114 {
115  return spa_api_method_r(int, -ENOTSUP,
116  pw_metadata, (struct spa_interface*)object, set_property, 0,
117  subject, key, type, value);
118 }
122 {
123  return spa_api_method_r(int, -ENOTSUP,
124  pw_metadata, (struct spa_interface*)object, clear, 0);
125 }
126 
127 #define PW_KEY_METADATA_NAME "metadata.name"
128 #define PW_KEY_METADATA_VALUES "metadata.values"
129 
134 #ifdef __cplusplus
135 } /* extern "C" */
136 #endif
137 
138 #endif /* PIPEWIRE_EXT_METADATA_H */
spa/utils/defs.h
PW_API_METADATA_IMPL int pw_metadata_set_property(struct pw_metadata *object, uint32_t subject, const char *key, const char *type, const char *value)
Set a metadata property.
Definition: metadata.h:127
#define PW_API_METADATA_IMPL
Definition: metadata.h:39
PW_API_METADATA_IMPL int pw_metadata_clear(struct pw_metadata *object)
Clear all metadata.
Definition: metadata.h:139
PW_API_METADATA_IMPL int pw_metadata_add_listener(struct pw_metadata *object, struct spa_hook *listener, const struct pw_metadata_events *events, void *data)
Definition: metadata.h:116
#define spa_api_method_r(rtype, def, type, o, method, version,...)
Definition: hook.h:291
Metadata events
Definition: metadata.h:52
uint32_t version
Definition: metadata.h:55
int(* property)(void *data, uint32_t subject, const char *key, const char *type, const char *value)
Definition: metadata.h:57
Metadata methods
Definition: metadata.h:74
int(* clear)(void *object)
Clear all metadata.
Definition: metadata.h:111
int(* add_listener)(void *object, struct spa_hook *listener, const struct pw_metadata_events *events, void *data)
Definition: metadata.h:79
int(* set_property)(void *object, uint32_t subject, const char *key, const char *type, const char *value)
Set a metadata property.
Definition: metadata.h:100
uint32_t version
Definition: metadata.h:77
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:427
Definition: hook.h:148