PipeWire  1.6.4
raw-types.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_AUDIO_RAW_TYPES_H
6 #define SPA_AUDIO_RAW_TYPES_H
7 
8 #include <spa/utils/type.h>
9 #include <spa/utils/string.h>
10 #include <spa/param/audio/raw.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
21 #ifndef SPA_API_AUDIO_RAW_TYPES
22  #ifdef SPA_API_IMPL
23  #define SPA_API_AUDIO_RAW_TYPES SPA_API_IMPL
24  #else
25  #define SPA_API_AUDIO_RAW_TYPES static inline
26  #endif
27 #endif
28 
29 #define SPA_TYPE_INFO_AudioFormat SPA_TYPE_INFO_ENUM_BASE "AudioFormat"
30 #define SPA_TYPE_INFO_AUDIO_FORMAT_BASE SPA_TYPE_INFO_AudioFormat ":"
31 
32 static const struct spa_type_info spa_type_audio_format[] = {
65 
68 
77 
78 #if __BYTE_ORDER == __BIG_ENDIAN
107 #elif __BYTE_ORDER == __LITTLE_ENDIAN
136 #endif
137  { 0, 0, NULL, NULL },
138 };
139 
141 {
143 }
145 {
147 }
148 
149 #define SPA_TYPE_INFO_AudioFlags SPA_TYPE_INFO_FLAGS_BASE "AudioFlags"
150 #define SPA_TYPE_INFO_AUDIO_FLAGS_BASE SPA_TYPE_INFO_AudioFlags ":"
151 
152 static const struct spa_type_info spa_type_audio_flags[] = {
155  { 0, 0, NULL, NULL },
156 };
157 
158 #define SPA_TYPE_INFO_AudioChannel SPA_TYPE_INFO_ENUM_BASE "AudioChannel"
159 #define SPA_TYPE_INFO_AUDIO_CHANNEL_BASE SPA_TYPE_INFO_AudioChannel ":"
160 
161 static const struct spa_type_info spa_type_audio_channel[] = {
200 
265  { 0, 0, NULL, NULL },
266 };
267 
269 {
270  uint32_t res;
271  if (spa_strstartswith(name, "AUX")) {
272  if (spa_atou32(name+3, &res, 10) && res < 0x1000)
274  else
276  } else {
278  }
279  return res;
280 }
282 {
284 }
286  char *buf, size_t size, const char *unknown)
287 {
289  snprintf(buf, size, "AUX%u", type - SPA_AUDIO_CHANNEL_AUX0);
290  } else {
291  const char *str = spa_type_to_short_name(type, spa_type_audio_channel, NULL);
292  if (str == NULL)
293  return unknown;
294  snprintf(buf, size, "%.7s", str);
295  }
296  return buf;
297 }
298 
299 #define SPA_TYPE_INFO_AudioVolumeRampScale SPA_TYPE_INFO_ENUM_BASE "AudioVolumeRampScale"
300 #define SPA_TYPE_INFO_AUDIO_VOLUME_RAMP_SCALE_BASE SPA_TYPE_INFO_AudioVolumeRampScale ":"
301 
302 static const struct spa_type_info spa_type_audio_volume_ramp_scale[] = {
306  { 0, 0, NULL, NULL },
307 };
308 
313 #ifdef __cplusplus
314 } /* extern "C" */
315 #endif
316 
317 #endif /* SPA_AUDIO_RAW_TYPES_H */
spa/param/audio/raw.h
uint32_t int int res
Definition: core.h:433
SPA_API_AUDIO_RAW_TYPES uint32_t spa_type_audio_format_from_short_name(const char *name)
Definition: raw-types.h:149
static const struct spa_type_info spa_type_audio_format[]
Definition: raw-types.h:41
#define SPA_TYPE_INFO_AUDIO_FORMAT_BASE
Definition: raw-types.h:39
SPA_API_AUDIO_RAW_TYPES const char * spa_type_audio_channel_to_short_name(uint32_t type)
Definition: raw-types.h:294
SPA_API_AUDIO_RAW_TYPES const char * spa_type_audio_format_to_short_name(uint32_t type)
Definition: raw-types.h:153
#define SPA_API_AUDIO_RAW_TYPES
Definition: raw-types.h:32
SPA_API_AUDIO_RAW_TYPES const char * spa_type_audio_channel_make_short_name(uint32_t type, char *buf, size_t size, const char *unknown)
Definition: raw-types.h:298
#define SPA_AUDIO_FLAG_UNPOSITIONED
Definition: raw.h:288
static const struct spa_type_info spa_type_audio_volume_ramp_scale[]
Definition: raw-types.h:317
static const struct spa_type_info spa_type_audio_flags[]
Definition: raw-types.h:163
#define SPA_TYPE_INFO_AUDIO_CHANNEL_BASE
Definition: raw-types.h:172
static const struct spa_type_info spa_type_audio_channel[]
Definition: raw-types.h:174
#define SPA_TYPE_INFO_AUDIO_FLAGS_BASE
Definition: raw-types.h:161
#define SPA_TYPE_INFO_AUDIO_VOLUME_RAMP_SCALE_BASE
Definition: raw-types.h:315
SPA_API_AUDIO_RAW_TYPES uint32_t spa_type_audio_channel_from_short_name(const char *name)
Definition: raw-types.h:281
#define SPA_AUDIO_FLAG_NONE
Extra audio flags.
Definition: raw.h:286
#define SPA_AUDIO_CHANNEL_IS_AUX(ch)
Definition: raw.h:276
@ SPA_AUDIO_CHANNEL_AUX5
Definition: raw.h:210
@ SPA_AUDIO_CHANNEL_BC
bottom center 0 -30
Definition: raw.h:200
@ SPA_AUDIO_CHANNEL_FC
front center 0 0
Definition: raw.h:170
@ SPA_AUDIO_CHANNEL_AUX62
Definition: raw.h:267
@ SPA_AUDIO_CHANNEL_FLW
front left wide 60 0
Definition: raw.h:188
@ SPA_AUDIO_CHANNEL_AUX17
Definition: raw.h:222
@ SPA_AUDIO_CHANNEL_AUX31
Definition: raw.h:236
@ SPA_AUDIO_CHANNEL_FLC
front left center 22.5 0
Definition: raw.h:174
@ SPA_AUDIO_CHANNEL_AUX42
Definition: raw.h:247
@ SPA_AUDIO_CHANNEL_TFLC
top front left center 45 30
Definition: raw.h:194
@ SPA_AUDIO_CHANNEL_TFRC
top front right center -45 30
Definition: raw.h:195
@ SPA_AUDIO_CHANNEL_AUX0
Definition: raw.h:205
@ SPA_AUDIO_CHANNEL_AUX25
Definition: raw.h:230
@ SPA_AUDIO_CHANNEL_AUX27
Definition: raw.h:232
@ SPA_AUDIO_CHANNEL_AUX60
Definition: raw.h:265
@ SPA_AUDIO_CHANNEL_BRC
bottom right center -45 -30
Definition: raw.h:202
@ SPA_AUDIO_CHANNEL_AUX50
Definition: raw.h:255
@ SPA_AUDIO_CHANNEL_AUX63
Definition: raw.h:268
@ SPA_AUDIO_CHANNEL_AUX53
Definition: raw.h:258
@ SPA_AUDIO_CHANNEL_AUX34
Definition: raw.h:239
@ SPA_AUDIO_CHANNEL_AUX3
Definition: raw.h:208
@ SPA_AUDIO_CHANNEL_FR
front right -30 0
Definition: raw.h:169
@ SPA_AUDIO_CHANNEL_AUX43
Definition: raw.h:248
@ SPA_AUDIO_CHANNEL_AUX46
Definition: raw.h:251
@ SPA_AUDIO_CHANNEL_AUX57
Definition: raw.h:262
@ SPA_AUDIO_CHANNEL_RLFE
right LFE -45 -30
Definition: raw.h:199
@ SPA_AUDIO_CHANNEL_AUX56
Definition: raw.h:261
@ SPA_AUDIO_CHANNEL_AUX52
Definition: raw.h:257
@ SPA_AUDIO_CHANNEL_AUX10
Definition: raw.h:215
@ SPA_AUDIO_CHANNEL_AUX33
Definition: raw.h:238
@ SPA_AUDIO_CHANNEL_AUX12
Definition: raw.h:217
@ SPA_AUDIO_CHANNEL_BLC
bottom left center 45 -30
Definition: raw.h:201
@ SPA_AUDIO_CHANNEL_AUX6
Definition: raw.h:211
@ SPA_AUDIO_CHANNEL_AUX23
Definition: raw.h:228
@ SPA_AUDIO_CHANNEL_TRC
top rear center 180 30
Definition: raw.h:184
@ SPA_AUDIO_CHANNEL_AUX48
Definition: raw.h:253
@ SPA_AUDIO_CHANNEL_AUX13
Definition: raw.h:218
@ SPA_AUDIO_CHANNEL_TFC
top front center 0 30
Definition: raw.h:181
@ SPA_AUDIO_CHANNEL_TFR
top front right -30 30
Definition: raw.h:182
@ SPA_AUDIO_CHANNEL_AUX61
Definition: raw.h:266
@ SPA_AUDIO_CHANNEL_AUX28
Definition: raw.h:233
@ SPA_AUDIO_CHANNEL_AUX30
Definition: raw.h:235
@ SPA_AUDIO_CHANNEL_RLC
rear left center 135 0
Definition: raw.h:186
@ SPA_AUDIO_CHANNEL_LFE2
LFE 2 0 -30
Definition: raw.h:190
@ SPA_AUDIO_CHANNEL_AUX35
Definition: raw.h:240
@ SPA_AUDIO_CHANNEL_AUX2
Definition: raw.h:207
@ SPA_AUDIO_CHANNEL_RR
rear right -110 0
Definition: raw.h:178
@ SPA_AUDIO_CHANNEL_TRL
top rear left 110 30
Definition: raw.h:183
@ SPA_AUDIO_CHANNEL_AUX7
Definition: raw.h:212
@ SPA_AUDIO_CHANNEL_AUX44
Definition: raw.h:249
@ SPA_AUDIO_CHANNEL_LLFE
left LFE 45 -30
Definition: raw.h:198
@ SPA_AUDIO_CHANNEL_AUX41
Definition: raw.h:246
@ SPA_AUDIO_CHANNEL_AUX8
Definition: raw.h:213
@ SPA_AUDIO_CHANNEL_AUX39
Definition: raw.h:244
@ SPA_AUDIO_CHANNEL_AUX54
Definition: raw.h:259
@ SPA_AUDIO_CHANNEL_AUX19
Definition: raw.h:224
@ SPA_AUDIO_CHANNEL_AUX59
Definition: raw.h:264
@ SPA_AUDIO_CHANNEL_TRR
top rear right -110 30
Definition: raw.h:185
@ SPA_AUDIO_CHANNEL_UNKNOWN
unspecified
Definition: raw.h:162
@ SPA_AUDIO_CHANNEL_RL
rear left 110 0
Definition: raw.h:177
@ SPA_AUDIO_CHANNEL_AUX37
Definition: raw.h:242
@ SPA_AUDIO_CHANNEL_AUX21
Definition: raw.h:226
@ SPA_AUDIO_CHANNEL_AUX38
Definition: raw.h:243
@ SPA_AUDIO_CHANNEL_AUX58
Definition: raw.h:263
@ SPA_AUDIO_CHANNEL_AUX4
Definition: raw.h:209
@ SPA_AUDIO_CHANNEL_NA
N/A, silent.
Definition: raw.h:163
@ SPA_AUDIO_CHANNEL_TSL
top side left 90 0
Definition: raw.h:196
@ SPA_AUDIO_CHANNEL_LFE
LFE 0 -30
Definition: raw.h:171
@ SPA_AUDIO_CHANNEL_SR
side right -90 0
Definition: raw.h:173
@ SPA_AUDIO_CHANNEL_FCH
front center high 0 30
Definition: raw.h:192
@ SPA_AUDIO_CHANNEL_AUX45
Definition: raw.h:250
@ SPA_AUDIO_CHANNEL_TSR
top side right -90 0
Definition: raw.h:197
@ SPA_AUDIO_CHANNEL_TFL
top front left 30 30
Definition: raw.h:180
@ SPA_AUDIO_CHANNEL_AUX9
Definition: raw.h:214
@ SPA_AUDIO_CHANNEL_AUX55
Definition: raw.h:260
@ SPA_AUDIO_CHANNEL_AUX51
Definition: raw.h:256
@ SPA_AUDIO_CHANNEL_TC
top center 0 90
Definition: raw.h:179
@ SPA_AUDIO_CHANNEL_AUX16
Definition: raw.h:221
@ SPA_AUDIO_CHANNEL_FRC
front right center -22.5 0
Definition: raw.h:175
@ SPA_AUDIO_CHANNEL_RC
rear center 180 0
Definition: raw.h:176
@ SPA_AUDIO_CHANNEL_AUX36
Definition: raw.h:241
@ SPA_AUDIO_CHANNEL_AUX26
Definition: raw.h:231
@ SPA_AUDIO_CHANNEL_AUX40
Definition: raw.h:245
@ SPA_AUDIO_CHANNEL_FL
Azimuth Elevation.
Definition: raw.h:168
@ SPA_AUDIO_CHANNEL_MONO
mono stream
Definition: raw.h:165
@ SPA_AUDIO_CHANNEL_AUX49
Definition: raw.h:254
@ SPA_AUDIO_CHANNEL_AUX18
Definition: raw.h:223
@ SPA_AUDIO_CHANNEL_AUX1
Definition: raw.h:206
@ SPA_AUDIO_CHANNEL_AUX47
Definition: raw.h:252
@ SPA_AUDIO_CHANNEL_AUX11
Definition: raw.h:216
@ SPA_AUDIO_CHANNEL_FLH
front left high 22.5 30
Definition: raw.h:191
@ SPA_AUDIO_CHANNEL_AUX14
Definition: raw.h:219
@ SPA_AUDIO_CHANNEL_AUX32
Definition: raw.h:237
@ SPA_AUDIO_CHANNEL_FRW
front right wide -60 0
Definition: raw.h:189
@ SPA_AUDIO_CHANNEL_AUX29
Definition: raw.h:234
@ SPA_AUDIO_CHANNEL_RRC
rear right center -135 0
Definition: raw.h:187
@ SPA_AUDIO_CHANNEL_SL
side left 90 0
Definition: raw.h:172
@ SPA_AUDIO_CHANNEL_AUX15
Definition: raw.h:220
@ SPA_AUDIO_CHANNEL_AUX24
Definition: raw.h:229
@ SPA_AUDIO_CHANNEL_AUX20
Definition: raw.h:225
@ SPA_AUDIO_CHANNEL_AUX22
Definition: raw.h:227
@ SPA_AUDIO_CHANNEL_FRH
front right high -22.5 30
Definition: raw.h:193
@ SPA_AUDIO_FORMAT_S32
Definition: raw.h:100
@ SPA_AUDIO_FORMAT_F64_LE
Definition: raw.h:67
@ SPA_AUDIO_FORMAT_U16_OE
Definition: raw.h:111
@ SPA_AUDIO_FORMAT_F32_OE
Definition: raw.h:122
@ SPA_AUDIO_FORMAT_U16_BE
Definition: raw.h:44
@ SPA_AUDIO_FORMAT_S16P
Definition: raw.h:76
@ SPA_AUDIO_FORMAT_U20_OE
Definition: raw.h:119
@ SPA_AUDIO_FORMAT_U24_32_BE
Definition: raw.h:48
@ SPA_AUDIO_FORMAT_U24_32
Definition: raw.h:99
@ SPA_AUDIO_FORMAT_U24_OE
Definition: raw.h:117
@ SPA_AUDIO_FORMAT_U18_LE
Definition: raw.h:63
@ SPA_AUDIO_FORMAT_S18_LE
Definition: raw.h:61
@ SPA_AUDIO_FORMAT_U32_BE
Definition: raw.h:52
@ SPA_AUDIO_FORMAT_ULAW
Definition: raw.h:70
@ SPA_AUDIO_FORMAT_U32_LE
Definition: raw.h:51
@ SPA_AUDIO_FORMAT_S20
Definition: raw.h:104
@ SPA_AUDIO_FORMAT_S32_BE
Definition: raw.h:50
@ SPA_AUDIO_FORMAT_F32P
Definition: raw.h:80
@ SPA_AUDIO_FORMAT_S24_32_LE
Definition: raw.h:45
@ SPA_AUDIO_FORMAT_S16_LE
Definition: raw.h:41
@ SPA_AUDIO_FORMAT_S18_OE
Definition: raw.h:120
@ SPA_AUDIO_FORMAT_F32_BE
Definition: raw.h:66
@ SPA_AUDIO_FORMAT_F32_LE
Definition: raw.h:65
@ SPA_AUDIO_FORMAT_U18_OE
Definition: raw.h:121
@ SPA_AUDIO_FORMAT_U32
Definition: raw.h:101
@ SPA_AUDIO_FORMAT_S16_OE
Definition: raw.h:110
@ SPA_AUDIO_FORMAT_S32_OE
Definition: raw.h:114
@ SPA_AUDIO_FORMAT_U24_BE
Definition: raw.h:56
@ SPA_AUDIO_FORMAT_U24_LE
Definition: raw.h:55
@ SPA_AUDIO_FORMAT_U18_BE
Definition: raw.h:64
@ SPA_AUDIO_FORMAT_S20_BE
Definition: raw.h:58
@ SPA_AUDIO_FORMAT_U24_32_LE
Definition: raw.h:47
@ SPA_AUDIO_FORMAT_U20_LE
Definition: raw.h:59
@ SPA_AUDIO_FORMAT_S24P
Definition: raw.h:79
@ SPA_AUDIO_FORMAT_S32_LE
Definition: raw.h:49
@ SPA_AUDIO_FORMAT_S24_32P
Definition: raw.h:77
@ SPA_AUDIO_FORMAT_S20_OE
Definition: raw.h:118
@ SPA_AUDIO_FORMAT_S8P
Definition: raw.h:82
@ SPA_AUDIO_FORMAT_U24
Definition: raw.h:103
@ SPA_AUDIO_FORMAT_UNKNOWN
Definition: raw.h:34
@ SPA_AUDIO_FORMAT_F64_BE
Definition: raw.h:68
@ SPA_AUDIO_FORMAT_F64P
Definition: raw.h:81
@ SPA_AUDIO_FORMAT_U20
Definition: raw.h:105
@ SPA_AUDIO_FORMAT_S8
Definition: raw.h:39
@ SPA_AUDIO_FORMAT_U32_OE
Definition: raw.h:115
@ SPA_AUDIO_FORMAT_U8
Definition: raw.h:40
@ SPA_AUDIO_FORMAT_U16_LE
Definition: raw.h:43
@ SPA_AUDIO_FORMAT_S24_LE
Definition: raw.h:53
@ SPA_AUDIO_FORMAT_U18
Definition: raw.h:107
@ SPA_AUDIO_FORMAT_U20_BE
Definition: raw.h:60
@ SPA_AUDIO_FORMAT_S24
Definition: raw.h:102
@ SPA_AUDIO_FORMAT_ENCODED
Definition: raw.h:35
@ SPA_AUDIO_FORMAT_S16_BE
Definition: raw.h:42
@ SPA_AUDIO_FORMAT_S24_BE
Definition: raw.h:54
@ SPA_AUDIO_FORMAT_U8P
Definition: raw.h:75
@ SPA_AUDIO_FORMAT_ALAW
Definition: raw.h:71
@ SPA_AUDIO_FORMAT_S32P
Definition: raw.h:78
@ SPA_AUDIO_FORMAT_S24_32_OE
Definition: raw.h:112
@ SPA_AUDIO_FORMAT_U24_32_OE
Definition: raw.h:113
@ SPA_AUDIO_FORMAT_S24_32_BE
Definition: raw.h:46
@ SPA_AUDIO_FORMAT_S16
Definition: raw.h:96
@ SPA_AUDIO_FORMAT_S24_32
Definition: raw.h:98
@ SPA_AUDIO_FORMAT_F64
Definition: raw.h:109
@ SPA_AUDIO_FORMAT_F32
Definition: raw.h:108
@ SPA_AUDIO_FORMAT_S20_LE
Definition: raw.h:57
@ SPA_AUDIO_FORMAT_S18
Definition: raw.h:106
@ SPA_AUDIO_FORMAT_F64_OE
Definition: raw.h:123
@ SPA_AUDIO_FORMAT_S18_BE
Definition: raw.h:62
@ SPA_AUDIO_FORMAT_S24_OE
Definition: raw.h:116
@ SPA_AUDIO_FORMAT_U16
Definition: raw.h:97
@ SPA_AUDIO_VOLUME_RAMP_CUBIC
Definition: raw.h:281
@ SPA_AUDIO_VOLUME_RAMP_LINEAR
Definition: raw.h:280
@ SPA_AUDIO_VOLUME_RAMP_INVALID
Definition: raw.h:279
SPA_API_STRING bool spa_strstartswith(const char *s, const char *prefix)
Definition: string.h:73
SPA_API_STRING bool spa_atou32(const char *str, uint32_t *val, int base)
Convert str to an uint32_t with the given base and store the result in val.
Definition: string.h:139
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_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_Int
Definition: type.h:45
spa/utils/type.h
spa/utils/string.h
Definition: type.h:156
uint32_t type
Definition: type.h:157