PipeWire
1.6.4
Toggle main menu visibility
Loading...
Searching...
No Matches
type.h
Go to the documentation of this file.
1
/* Simple Plugin API */
2
/* SPDX-FileCopyrightText: Copyright © 2018 Wim Taymans */
3
/* SPDX-License-Identifier: MIT */
4
5
#ifndef SPA_TYPE_H
6
#define SPA_TYPE_H
7
8
#include <
spa/utils/defs.h
>
9
#include <
spa/utils/string.h
>
10
11
#ifdef __cplusplus
12
extern
"C"
{
13
#endif
14
15
#ifndef SPA_API_TYPE
16
#ifdef SPA_API_IMPL
17
#define SPA_API_TYPE SPA_API_IMPL
18
#else
19
#define SPA_API_TYPE static inline
20
#endif
21
#endif
22
26
31
32
enum
{
33
/* Basic types */
34
SPA_TYPE_START
= 0x00000,
35
SPA_TYPE_None
,
36
SPA_TYPE_Bool
,
37
SPA_TYPE_Id
,
38
SPA_TYPE_Int
,
39
SPA_TYPE_Long
,
40
SPA_TYPE_Float
,
41
SPA_TYPE_Double
,
42
SPA_TYPE_String
,
43
SPA_TYPE_Bytes
,
44
SPA_TYPE_Rectangle
,
45
SPA_TYPE_Fraction
,
46
SPA_TYPE_Bitmap
,
47
SPA_TYPE_Array
,
48
SPA_TYPE_Struct
,
49
SPA_TYPE_Object
,
50
SPA_TYPE_Sequence
,
51
SPA_TYPE_Pointer
,
52
SPA_TYPE_Fd
,
53
SPA_TYPE_Choice
,
54
SPA_TYPE_Pod
,
55
_SPA_TYPE_LAST
,
56
57
/* Pointers */
58
SPA_TYPE_POINTER_START
= 0x10000,
59
SPA_TYPE_POINTER_Buffer
,
60
SPA_TYPE_POINTER_Meta
,
61
SPA_TYPE_POINTER_Dict
,
62
_SPA_TYPE_POINTER_LAST
,
63
64
/* Events */
65
SPA_TYPE_EVENT_START
= 0x20000,
66
SPA_TYPE_EVENT_Device
,
67
SPA_TYPE_EVENT_Node
,
68
_SPA_TYPE_EVENT_LAST
,
69
70
/* Commands */
71
SPA_TYPE_COMMAND_START
= 0x30000,
72
SPA_TYPE_COMMAND_Device
,
73
SPA_TYPE_COMMAND_Node
,
74
_SPA_TYPE_COMMAND_LAST
,
75
76
/* Objects */
77
SPA_TYPE_OBJECT_START
= 0x40000,
78
SPA_TYPE_OBJECT_PropInfo
,
79
SPA_TYPE_OBJECT_Props
,
80
SPA_TYPE_OBJECT_Format
,
81
SPA_TYPE_OBJECT_ParamBuffers
,
82
SPA_TYPE_OBJECT_ParamMeta
,
83
SPA_TYPE_OBJECT_ParamIO
,
84
SPA_TYPE_OBJECT_ParamProfile
,
85
SPA_TYPE_OBJECT_ParamPortConfig
,
86
SPA_TYPE_OBJECT_ParamRoute
,
87
SPA_TYPE_OBJECT_Profiler
,
88
SPA_TYPE_OBJECT_ParamLatency
,
89
SPA_TYPE_OBJECT_ParamProcessLatency
,
90
SPA_TYPE_OBJECT_ParamTag
,
91
SPA_TYPE_OBJECT_PeerParam
,
92
SPA_TYPE_OBJECT_ParamDict
,
93
_SPA_TYPE_OBJECT_LAST
,
94
95
/* vendor extensions */
96
SPA_TYPE_VENDOR_PipeWire
= 0x02000000,
97
98
SPA_TYPE_VENDOR_Other
= 0x7f000000,
99
};
100
101
#define SPA_TYPE_INFO_BASE "Spa:"
102
103
#define SPA_TYPE_INFO_Flags SPA_TYPE_INFO_BASE "Flags"
104
#define SPA_TYPE_INFO_FLAGS_BASE SPA_TYPE_INFO_Flags ":"
105
106
#define SPA_TYPE_INFO_Enum SPA_TYPE_INFO_BASE "Enum"
107
#define SPA_TYPE_INFO_ENUM_BASE SPA_TYPE_INFO_Enum ":"
108
109
#define SPA_TYPE_INFO_Pod SPA_TYPE_INFO_BASE "Pod"
110
#define SPA_TYPE_INFO_POD_BASE SPA_TYPE_INFO_Pod ":"
111
112
#define SPA_TYPE_INFO_Struct SPA_TYPE_INFO_POD_BASE "Struct"
113
#define SPA_TYPE_INFO_STRUCT_BASE SPA_TYPE_INFO_Struct ":"
114
115
#define SPA_TYPE_INFO_Object SPA_TYPE_INFO_POD_BASE "Object"
116
#define SPA_TYPE_INFO_OBJECT_BASE SPA_TYPE_INFO_Object ":"
117
118
#define SPA_TYPE_INFO_Pointer SPA_TYPE_INFO_BASE "Pointer"
119
#define SPA_TYPE_INFO_POINTER_BASE SPA_TYPE_INFO_Pointer ":"
120
121
#define SPA_TYPE_INFO_Interface SPA_TYPE_INFO_POINTER_BASE "Interface"
122
#define SPA_TYPE_INFO_INTERFACE_BASE SPA_TYPE_INFO_Interface ":"
123
124
#define SPA_TYPE_INFO_Event SPA_TYPE_INFO_OBJECT_BASE "Event"
125
#define SPA_TYPE_INFO_EVENT_BASE SPA_TYPE_INFO_Event ":"
126
127
#define SPA_TYPE_INFO_Command SPA_TYPE_INFO_OBJECT_BASE "Command"
128
#define SPA_TYPE_INFO_COMMAND_BASE SPA_TYPE_INFO_Command ":"
129
130
struct
spa_type_info
{
131
uint32_t
type
;
132
uint32_t
parent
;
133
const
char
*name;
134
const
struct
spa_type_info
*
values
;
135
};
136
137
SPA_API_TYPE
bool
spa_type_is_a
(
const
char
*
type
,
const
char
*
parent
)
138
{
139
return
type
!= NULL &&
parent
!= NULL && strncmp(
type
,
parent
, strlen(
parent
)) == 0;
140
}
141
142
SPA_API_TYPE
const
char
*
spa_type_short_name
(
const
char
*name)
143
{
144
const
char
*h;
145
if
((h = strrchr(name,
':'
)) != NULL)
146
name = h + 1;
147
return
name;
148
}
149
150
SPA_API_TYPE
uint32_t
spa_type_from_short_name
(
const
char
*name,
151
const
struct
spa_type_info
*info, uint32_t unknown)
152
{
153
int
i;
154
for
(i = 0; info[i].name; i++) {
155
if
(
spa_streq
(name,
spa_type_short_name
(info[i].name)))
156
return
info[i].type;
157
}
158
return
unknown;
159
}
160
SPA_API_TYPE
const
char
*
spa_type_to_name
(uint32_t
type
,
161
const
struct
spa_type_info
*info,
const
char
*unknown)
162
{
163
int
i;
164
for
(i = 0; info[i].name; i++) {
165
if
(info[i].
type
==
type
)
166
return
info[i].name;
167
}
168
return
unknown;
169
}
170
171
SPA_API_TYPE
const
char
*
spa_type_to_short_name
(uint32_t
type
,
172
const
struct
spa_type_info
*info,
const
char
*unknown)
173
{
174
const
char
*n =
spa_type_to_name
(
type
, info, unknown);
175
return
n ?
spa_type_short_name
(n) : NULL;
176
}
177
181
182
#ifdef __cplusplus
183
}
/* extern "C" */
184
#endif
185
186
#endif
/* SPA_TYPE_H */
defs.h
spa/utils/defs.h
spa_streq
SPA_API_STRING bool spa_streq(const char *s1, const char *s2)
Definition
string.h:52
spa_type_is_a
SPA_API_TYPE bool spa_type_is_a(const char *type, const char *parent)
Definition
type.h:163
spa_type_from_short_name
SPA_API_TYPE uint32_t spa_type_from_short_name(const char *name, const struct spa_type_info *info, uint32_t unknown)
Definition
type.h:176
spa_type_to_short_name
SPA_API_TYPE const char * spa_type_to_short_name(uint32_t type, const struct spa_type_info *info, const char *unknown)
Definition
type.h:197
spa_type_short_name
SPA_API_TYPE const char * spa_type_short_name(const char *name)
Definition
type.h:168
spa_type_to_name
SPA_API_TYPE const char * spa_type_to_name(uint32_t type, const struct spa_type_info *info, const char *unknown)
Definition
type.h:186
SPA_TYPE_POINTER_Buffer
@ SPA_TYPE_POINTER_Buffer
Definition
type.h:66
SPA_TYPE_OBJECT_ParamPortConfig
@ SPA_TYPE_OBJECT_ParamPortConfig
Definition
type.h:92
SPA_TYPE_Int
@ SPA_TYPE_Int
Definition
type.h:45
SPA_TYPE_OBJECT_ParamProfile
@ SPA_TYPE_OBJECT_ParamProfile
Definition
type.h:91
SPA_TYPE_COMMAND_START
@ SPA_TYPE_COMMAND_START
Definition
type.h:78
SPA_TYPE_POINTER_START
@ SPA_TYPE_POINTER_START
Definition
type.h:65
SPA_TYPE_Rectangle
@ SPA_TYPE_Rectangle
Definition
type.h:51
SPA_TYPE_Long
@ SPA_TYPE_Long
Definition
type.h:46
SPA_TYPE_Bool
@ SPA_TYPE_Bool
Definition
type.h:43
SPA_TYPE_Bytes
@ SPA_TYPE_Bytes
Definition
type.h:50
SPA_TYPE_VENDOR_Other
@ SPA_TYPE_VENDOR_Other
Definition
type.h:105
SPA_TYPE_EVENT_Device
@ SPA_TYPE_EVENT_Device
Definition
type.h:73
SPA_TYPE_Pod
@ SPA_TYPE_Pod
Definition
type.h:61
SPA_TYPE_OBJECT_PropInfo
@ SPA_TYPE_OBJECT_PropInfo
Definition
type.h:85
SPA_TYPE_OBJECT_START
@ SPA_TYPE_OBJECT_START
Definition
type.h:84
SPA_TYPE_OBJECT_ParamDict
@ SPA_TYPE_OBJECT_ParamDict
Definition
type.h:99
SPA_TYPE_Bitmap
@ SPA_TYPE_Bitmap
Definition
type.h:53
SPA_TYPE_Object
@ SPA_TYPE_Object
Definition
type.h:56
SPA_TYPE_POINTER_Dict
@ SPA_TYPE_POINTER_Dict
Definition
type.h:68
SPA_TYPE_Float
@ SPA_TYPE_Float
Definition
type.h:47
SPA_TYPE_COMMAND_Device
@ SPA_TYPE_COMMAND_Device
Definition
type.h:79
SPA_TYPE_OBJECT_ParamBuffers
@ SPA_TYPE_OBJECT_ParamBuffers
Definition
type.h:88
SPA_TYPE_Fraction
@ SPA_TYPE_Fraction
Definition
type.h:52
SPA_TYPE_None
@ SPA_TYPE_None
Definition
type.h:42
SPA_TYPE_OBJECT_ParamIO
@ SPA_TYPE_OBJECT_ParamIO
Definition
type.h:90
_SPA_TYPE_LAST
@ _SPA_TYPE_LAST
not part of ABI
Definition
type.h:62
SPA_TYPE_OBJECT_Props
@ SPA_TYPE_OBJECT_Props
Definition
type.h:86
SPA_TYPE_Sequence
@ SPA_TYPE_Sequence
Definition
type.h:57
SPA_TYPE_Double
@ SPA_TYPE_Double
Definition
type.h:48
SPA_TYPE_OBJECT_Profiler
@ SPA_TYPE_OBJECT_Profiler
Definition
type.h:94
SPA_TYPE_OBJECT_ParamLatency
@ SPA_TYPE_OBJECT_ParamLatency
Definition
type.h:95
SPA_TYPE_Id
@ SPA_TYPE_Id
Definition
type.h:44
SPA_TYPE_EVENT_START
@ SPA_TYPE_EVENT_START
Definition
type.h:72
SPA_TYPE_Choice
@ SPA_TYPE_Choice
Definition
type.h:60
SPA_TYPE_EVENT_Node
@ SPA_TYPE_EVENT_Node
Definition
type.h:74
SPA_TYPE_Pointer
@ SPA_TYPE_Pointer
Definition
type.h:58
_SPA_TYPE_OBJECT_LAST
@ _SPA_TYPE_OBJECT_LAST
not part of ABI
Definition
type.h:100
SPA_TYPE_Array
@ SPA_TYPE_Array
Definition
type.h:54
_SPA_TYPE_EVENT_LAST
@ _SPA_TYPE_EVENT_LAST
not part of ABI
Definition
type.h:75
SPA_TYPE_String
@ SPA_TYPE_String
Definition
type.h:49
SPA_TYPE_VENDOR_PipeWire
@ SPA_TYPE_VENDOR_PipeWire
Definition
type.h:103
SPA_TYPE_POINTER_Meta
@ SPA_TYPE_POINTER_Meta
Definition
type.h:67
_SPA_TYPE_COMMAND_LAST
@ _SPA_TYPE_COMMAND_LAST
not part of ABI
Definition
type.h:81
SPA_TYPE_COMMAND_Node
@ SPA_TYPE_COMMAND_Node
Definition
type.h:80
SPA_TYPE_OBJECT_ParamProcessLatency
@ SPA_TYPE_OBJECT_ParamProcessLatency
Definition
type.h:96
SPA_TYPE_Fd
@ SPA_TYPE_Fd
Definition
type.h:59
SPA_TYPE_OBJECT_PeerParam
@ SPA_TYPE_OBJECT_PeerParam
Definition
type.h:98
SPA_TYPE_OBJECT_ParamMeta
@ SPA_TYPE_OBJECT_ParamMeta
Definition
type.h:89
SPA_TYPE_OBJECT_ParamTag
@ SPA_TYPE_OBJECT_ParamTag
Definition
type.h:97
SPA_TYPE_OBJECT_ParamRoute
@ SPA_TYPE_OBJECT_ParamRoute
Definition
type.h:93
_SPA_TYPE_POINTER_LAST
@ _SPA_TYPE_POINTER_LAST
not part of ABI
Definition
type.h:69
SPA_TYPE_Struct
@ SPA_TYPE_Struct
Definition
type.h:55
SPA_TYPE_OBJECT_Format
@ SPA_TYPE_OBJECT_Format
Definition
type.h:87
SPA_TYPE_START
@ SPA_TYPE_START
Definition
type.h:41
SPA_API_TYPE
#define SPA_API_TYPE
Definition
type.h:26
string.h
spa/utils/string.h
spa_type_info
Definition
type.h:156
spa_type_info::type
uint32_t type
Definition
type.h:157
spa_type_info::parent
uint32_t parent
Definition
type.h:158
spa_type_info::values
const struct spa_type_info * values
Definition
type.h:160
spa
utils
type.h
Generated by
1.17.0