PipeWire  0.3.30
audio/raw.h
Go to the documentation of this file.
1 /* Simple Plugin API
2  *
3  * Copyright © 2018 Wim Taymans
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 
25 #ifndef SPA_AUDIO_RAW_H
26 #define SPA_AUDIO_RAW_H
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #include <stdint.h>
33 
34 #ifndef __FreeBSD__
35 #include <endian.h>
36 #endif
37 
43 #define SPA_AUDIO_MAX_CHANNELS 64u
44 
48 
49  /* interleaved formats */
81 
82  /* planar formats */
92 
93  /* other formats start here */
95 
96  /* Aliases */
97 
98  /* DSP formats */
102 
103  /* native endian */
104 #if __BYTE_ORDER == __BIG_ENDIAN
133 #elif __BYTE_ORDER == __LITTLE_ENDIAN
162 #endif
163 };
164 
165 #define SPA_AUDIO_FORMAT_IS_INTERLEAVED(fmt) ((fmt) > SPA_AUDIO_FORMAT_START_Interleaved && (fmt) < SPA_AUDIO_FORMAT_START_Planar)
166 #define SPA_AUDIO_FORMAT_IS_PLANAR(fmt) ((fmt) > SPA_AUDIO_FORMAT_START_Planar && (fmt) < SPA_AUDIO_FORMAT_START_Other)
167 
211 };
212 
214 #define SPA_AUDIO_FLAG_NONE (0) /*< no valid flag */
215 #define SPA_AUDIO_FLAG_UNPOSITIONED (1 << 0) /*< the position array explicitly
216  * contains unpositioned channels. */
217 
219  enum spa_audio_format format; /*< format, one of enum spa_audio_format */
220  uint32_t flags; /*< extra flags */
221  uint32_t rate; /*< sample rate */
222  uint32_t channels; /*< number of channels */
223  uint32_t position[SPA_AUDIO_MAX_CHANNELS]; /*< channel position from enum spa_audio_channel */
224 };
225 
226 #define SPA_AUDIO_INFO_RAW_INIT(...) (struct spa_audio_info_raw) { __VA_ARGS__ }
227 
228 #define SPA_KEY_AUDIO_FORMAT "audio.format"
230 #define SPA_KEY_AUDIO_CHANNEL "audio.channel"
232 #define SPA_KEY_AUDIO_CHANNELS "audio.channels"
233 #define SPA_KEY_AUDIO_RATE "audio.rate"
234 #define SPA_KEY_AUDIO_POSITION "audio.position"
237 struct spa_audio_info_dsp {
238  enum spa_audio_format format; /*< format, one of the DSP formats in enum spa_audio_format_dsp */
239 };
240 
241 #define SPA_AUDIO_INFO_DSP_INIT(...) (struct spa_audio_info_dsp) { __VA_ARGS__ }
242 
247 #ifdef __cplusplus
248 } /* extern "C" */
249 #endif
250 
251 #endif /* SPA_AUDIO_RAW_H */
SPA_AUDIO_FORMAT_DSP_S32
@ SPA_AUDIO_FORMAT_DSP_S32
Definition: audio/raw.h:99
SPA_AUDIO_CHANNEL_BC
@ SPA_AUDIO_CHANNEL_BC
bottom center
Definition: audio/raw.h:206
spa_audio_info_raw
Audio information description.
Definition: audio/raw.h:217
spa_audio_info_raw::rate
uint32_t rate
Definition: audio/raw.h:220
SPA_AUDIO_FORMAT_U8P
@ SPA_AUDIO_FORMAT_U8P
Definition: audio/raw.h:84
SPA_AUDIO_FORMAT_S16_LE
@ SPA_AUDIO_FORMAT_S16_LE
Definition: audio/raw.h:53
SPA_AUDIO_FORMAT_S32P
@ SPA_AUDIO_FORMAT_S32P
Definition: audio/raw.h:87
SPA_AUDIO_CHANNEL_TRL
@ SPA_AUDIO_CHANNEL_TRL
top rear left
Definition: audio/raw.h:189
SPA_AUDIO_FORMAT_U24_LE
@ SPA_AUDIO_FORMAT_U24_LE
Definition: audio/raw.h:67
SPA_AUDIO_FORMAT_S18
@ SPA_AUDIO_FORMAT_S18
Definition: audio/raw.h:115
SPA_AUDIO_CHANNEL_RR
@ SPA_AUDIO_CHANNEL_RR
rear right
Definition: audio/raw.h:184
SPA_AUDIO_FORMAT_S16_BE
@ SPA_AUDIO_FORMAT_S16_BE
Definition: audio/raw.h:54
SPA_AUDIO_FORMAT_S24_OE
@ SPA_AUDIO_FORMAT_S24_OE
Definition: audio/raw.h:125
SPA_AUDIO_CHANNEL_LFE
@ SPA_AUDIO_CHANNEL_LFE
LFE.
Definition: audio/raw.h:177
SPA_AUDIO_CHANNEL_MONO
@ SPA_AUDIO_CHANNEL_MONO
mono stream
Definition: audio/raw.h:172
SPA_AUDIO_CHANNEL_TFL
@ SPA_AUDIO_CHANNEL_TFL
top front left
Definition: audio/raw.h:186
SPA_AUDIO_CHANNEL_SL
@ SPA_AUDIO_CHANNEL_SL
side left
Definition: audio/raw.h:178
SPA_AUDIO_CHANNEL_TFC
@ SPA_AUDIO_CHANNEL_TFC
top front center
Definition: audio/raw.h:187
SPA_AUDIO_FORMAT_U8
@ SPA_AUDIO_FORMAT_U8
Definition: audio/raw.h:52
SPA_AUDIO_CHANNEL_TFRC
@ SPA_AUDIO_CHANNEL_TFRC
top front right center
Definition: audio/raw.h:201
SPA_AUDIO_FORMAT_U18_BE
@ SPA_AUDIO_FORMAT_U18_BE
Definition: audio/raw.h:76
SPA_AUDIO_CHANNEL_FCH
@ SPA_AUDIO_CHANNEL_FCH
front center high
Definition: audio/raw.h:198
SPA_AUDIO_FORMAT_U18_OE
@ SPA_AUDIO_FORMAT_U18_OE
Definition: audio/raw.h:130
SPA_AUDIO_FORMAT_S32_BE
@ SPA_AUDIO_FORMAT_S32_BE
Definition: audio/raw.h:62
SPA_AUDIO_CHANNEL_FLW
@ SPA_AUDIO_CHANNEL_FLW
front left wide
Definition: audio/raw.h:194
SPA_AUDIO_CHANNEL_TC
@ SPA_AUDIO_CHANNEL_TC
top center
Definition: audio/raw.h:185
SPA_AUDIO_FORMAT_START_Other
@ SPA_AUDIO_FORMAT_START_Other
Definition: audio/raw.h:94
SPA_AUDIO_FORMAT_U24_OE
@ SPA_AUDIO_FORMAT_U24_OE
Definition: audio/raw.h:126
SPA_AUDIO_CHANNEL_FLH
@ SPA_AUDIO_CHANNEL_FLH
front left high
Definition: audio/raw.h:197
SPA_AUDIO_FORMAT_S18_OE
@ SPA_AUDIO_FORMAT_S18_OE
Definition: audio/raw.h:129
SPA_AUDIO_FORMAT_U24_BE
@ SPA_AUDIO_FORMAT_U24_BE
Definition: audio/raw.h:68
SPA_AUDIO_FORMAT_S24_32_BE
@ SPA_AUDIO_FORMAT_S24_32_BE
Definition: audio/raw.h:58
SPA_AUDIO_CHANNEL_FRW
@ SPA_AUDIO_CHANNEL_FRW
front right wide
Definition: audio/raw.h:195
SPA_AUDIO_FORMAT_S8P
@ SPA_AUDIO_FORMAT_S8P
Definition: audio/raw.h:91
SPA_AUDIO_FORMAT_F64_OE
@ SPA_AUDIO_FORMAT_F64_OE
Definition: audio/raw.h:132
SPA_AUDIO_FORMAT_ENCODED
@ SPA_AUDIO_FORMAT_ENCODED
Definition: audio/raw.h:47
SPA_AUDIO_CHANNEL_CUSTOM_START
@ SPA_AUDIO_CHANNEL_CUSTOM_START
Definition: audio/raw.h:210
spa_audio_info_raw::format
enum spa_audio_format format
Definition: audio/raw.h:218
spa_audio_info_raw::channels
uint32_t channels
Definition: audio/raw.h:221
SPA_AUDIO_FORMAT_S24_32_OE
@ SPA_AUDIO_FORMAT_S24_32_OE
Definition: audio/raw.h:121
SPA_AUDIO_FORMAT_DSP_F32
@ SPA_AUDIO_FORMAT_DSP_F32
Definition: audio/raw.h:100
SPA_AUDIO_FORMAT_U32_LE
@ SPA_AUDIO_FORMAT_U32_LE
Definition: audio/raw.h:63
SPA_AUDIO_FORMAT_U16_BE
@ SPA_AUDIO_FORMAT_U16_BE
Definition: audio/raw.h:56
SPA_AUDIO_FORMAT_U24_32
@ SPA_AUDIO_FORMAT_U24_32
Definition: audio/raw.h:108
SPA_AUDIO_FORMAT_U16_LE
@ SPA_AUDIO_FORMAT_U16_LE
Definition: audio/raw.h:55
SPA_AUDIO_FORMAT_F32_LE
@ SPA_AUDIO_FORMAT_F32_LE
Definition: audio/raw.h:77
SPA_AUDIO_CHANNEL_RRC
@ SPA_AUDIO_CHANNEL_RRC
rear right center
Definition: audio/raw.h:193
SPA_AUDIO_CHANNEL_NA
@ SPA_AUDIO_CHANNEL_NA
N/A, silent.
Definition: audio/raw.h:170
SPA_AUDIO_FORMAT_S32_LE
@ SPA_AUDIO_FORMAT_S32_LE
Definition: audio/raw.h:61
SPA_AUDIO_FORMAT_F64_BE
@ SPA_AUDIO_FORMAT_F64_BE
Definition: audio/raw.h:80
SPA_AUDIO_MAX_CHANNELS
#define SPA_AUDIO_MAX_CHANNELS
Definition: audio/raw.h:43
SPA_AUDIO_FORMAT_UNKNOWN
@ SPA_AUDIO_FORMAT_UNKNOWN
Definition: audio/raw.h:46
SPA_AUDIO_CHANNEL_LLFE
@ SPA_AUDIO_CHANNEL_LLFE
left LFE
Definition: audio/raw.h:204
SPA_AUDIO_CHANNEL_FLC
@ SPA_AUDIO_CHANNEL_FLC
front left center
Definition: audio/raw.h:180
SPA_AUDIO_FORMAT_S20_OE
@ SPA_AUDIO_FORMAT_S20_OE
Definition: audio/raw.h:127
SPA_AUDIO_FORMAT_U32_OE
@ SPA_AUDIO_FORMAT_U32_OE
Definition: audio/raw.h:124
SPA_AUDIO_CHANNEL_BLC
@ SPA_AUDIO_CHANNEL_BLC
bottom left center
Definition: audio/raw.h:207
SPA_AUDIO_FORMAT_U24_32_BE
@ SPA_AUDIO_FORMAT_U24_32_BE
Definition: audio/raw.h:60
SPA_AUDIO_CHANNEL_FL
@ SPA_AUDIO_CHANNEL_FL
front left
Definition: audio/raw.h:174
SPA_AUDIO_FORMAT_S24
@ SPA_AUDIO_FORMAT_S24
Definition: audio/raw.h:111
SPA_AUDIO_FORMAT_S24_BE
@ SPA_AUDIO_FORMAT_S24_BE
Definition: audio/raw.h:66
spa_audio_info_raw::flags
uint32_t flags
Definition: audio/raw.h:219
SPA_AUDIO_FORMAT_F32_BE
@ SPA_AUDIO_FORMAT_F32_BE
Definition: audio/raw.h:78
SPA_AUDIO_FORMAT_U16
@ SPA_AUDIO_FORMAT_U16
Definition: audio/raw.h:106
SPA_AUDIO_FORMAT_S20_BE
@ SPA_AUDIO_FORMAT_S20_BE
Definition: audio/raw.h:70
SPA_AUDIO_FORMAT_U18
@ SPA_AUDIO_FORMAT_U18
Definition: audio/raw.h:116
SPA_AUDIO_FORMAT_U20_LE
@ SPA_AUDIO_FORMAT_U20_LE
Definition: audio/raw.h:71
SPA_AUDIO_FORMAT_START_Interleaved
@ SPA_AUDIO_FORMAT_START_Interleaved
Definition: audio/raw.h:50
SPA_AUDIO_FORMAT_F64_LE
@ SPA_AUDIO_FORMAT_F64_LE
Definition: audio/raw.h:79
SPA_AUDIO_FORMAT_U32
@ SPA_AUDIO_FORMAT_U32
Definition: audio/raw.h:110
SPA_AUDIO_CHANNEL_RC
@ SPA_AUDIO_CHANNEL_RC
rear center
Definition: audio/raw.h:182
SPA_AUDIO_FORMAT_DSP_F64
@ SPA_AUDIO_FORMAT_DSP_F64
Definition: audio/raw.h:101
SPA_AUDIO_CHANNEL_TSL
@ SPA_AUDIO_CHANNEL_TSL
top side left
Definition: audio/raw.h:202
spa_audio_format
spa_audio_format
Definition: audio/raw.h:45
SPA_AUDIO_CHANNEL_TRC
@ SPA_AUDIO_CHANNEL_TRC
top rear center
Definition: audio/raw.h:190
SPA_AUDIO_FORMAT_S24_32
@ SPA_AUDIO_FORMAT_S24_32
Definition: audio/raw.h:107
SPA_AUDIO_FORMAT_U24_32_LE
@ SPA_AUDIO_FORMAT_U24_32_LE
Definition: audio/raw.h:59
SPA_AUDIO_FORMAT_F64P
@ SPA_AUDIO_FORMAT_F64P
Definition: audio/raw.h:90
SPA_AUDIO_FORMAT_S24_LE
@ SPA_AUDIO_FORMAT_S24_LE
Definition: audio/raw.h:65
SPA_AUDIO_FORMAT_S24P
@ SPA_AUDIO_FORMAT_S24P
Definition: audio/raw.h:88
SPA_AUDIO_FORMAT_S16
@ SPA_AUDIO_FORMAT_S16
Definition: audio/raw.h:105
SPA_AUDIO_FORMAT_S32_OE
@ SPA_AUDIO_FORMAT_S32_OE
Definition: audio/raw.h:123
SPA_AUDIO_CHANNEL_UNKNOWN
@ SPA_AUDIO_CHANNEL_UNKNOWN
unspecified
Definition: audio/raw.h:169
SPA_AUDIO_CHANNEL_FRH
@ SPA_AUDIO_CHANNEL_FRH
front right high
Definition: audio/raw.h:199
SPA_AUDIO_CHANNEL_LFE2
@ SPA_AUDIO_CHANNEL_LFE2
LFE 2.
Definition: audio/raw.h:196
SPA_AUDIO_FORMAT_S18_LE
@ SPA_AUDIO_FORMAT_S18_LE
Definition: audio/raw.h:73
spa_audio_info_raw::position
uint32_t position[SPA_AUDIO_MAX_CHANNELS]
Definition: audio/raw.h:222
SPA_AUDIO_CHANNEL_FR
@ SPA_AUDIO_CHANNEL_FR
front right
Definition: audio/raw.h:175
SPA_AUDIO_CHANNEL_BRC
@ SPA_AUDIO_CHANNEL_BRC
bottom right center
Definition: audio/raw.h:208
SPA_AUDIO_FORMAT_U24_32_OE
@ SPA_AUDIO_FORMAT_U24_32_OE
Definition: audio/raw.h:122
SPA_AUDIO_FORMAT_S24_32_LE
@ SPA_AUDIO_FORMAT_S24_32_LE
Definition: audio/raw.h:57
SPA_AUDIO_CHANNEL_RLC
@ SPA_AUDIO_CHANNEL_RLC
rear left center
Definition: audio/raw.h:192
SPA_AUDIO_FORMAT_U24
@ SPA_AUDIO_FORMAT_U24
Definition: audio/raw.h:112
SPA_AUDIO_CHANNEL_SR
@ SPA_AUDIO_CHANNEL_SR
side right
Definition: audio/raw.h:179
SPA_AUDIO_FORMAT_F32_OE
@ SPA_AUDIO_FORMAT_F32_OE
Definition: audio/raw.h:131
SPA_AUDIO_CHANNEL_TSR
@ SPA_AUDIO_CHANNEL_TSR
top side right
Definition: audio/raw.h:203
SPA_AUDIO_FORMAT_U20_BE
@ SPA_AUDIO_FORMAT_U20_BE
Definition: audio/raw.h:72
SPA_AUDIO_FORMAT_F64
@ SPA_AUDIO_FORMAT_F64
Definition: audio/raw.h:118
SPA_AUDIO_CHANNEL_RLFE
@ SPA_AUDIO_CHANNEL_RLFE
right LFE
Definition: audio/raw.h:205
SPA_AUDIO_FORMAT_START_Planar
@ SPA_AUDIO_FORMAT_START_Planar
Definition: audio/raw.h:83
SPA_AUDIO_FORMAT_S20_LE
@ SPA_AUDIO_FORMAT_S20_LE
Definition: audio/raw.h:69
SPA_AUDIO_FORMAT_S16_OE
@ SPA_AUDIO_FORMAT_S16_OE
Definition: audio/raw.h:119
SPA_AUDIO_FORMAT_U32_BE
@ SPA_AUDIO_FORMAT_U32_BE
Definition: audio/raw.h:64
SPA_AUDIO_FORMAT_F32
@ SPA_AUDIO_FORMAT_F32
Definition: audio/raw.h:117
SPA_AUDIO_CHANNEL_RL
@ SPA_AUDIO_CHANNEL_RL
rear left
Definition: audio/raw.h:183
SPA_AUDIO_FORMAT_F32P
@ SPA_AUDIO_FORMAT_F32P
Definition: audio/raw.h:89
SPA_AUDIO_FORMAT_S24_32P
@ SPA_AUDIO_FORMAT_S24_32P
Definition: audio/raw.h:86
SPA_AUDIO_CHANNEL_TFR
@ SPA_AUDIO_CHANNEL_TFR
top front right
Definition: audio/raw.h:188
SPA_AUDIO_FORMAT_S8
@ SPA_AUDIO_FORMAT_S8
Definition: audio/raw.h:51
spa_audio_channel
spa_audio_channel
Definition: audio/raw.h:168
SPA_AUDIO_FORMAT_S32
@ SPA_AUDIO_FORMAT_S32
Definition: audio/raw.h:109
SPA_AUDIO_FORMAT_U20_OE
@ SPA_AUDIO_FORMAT_U20_OE
Definition: audio/raw.h:128
SPA_AUDIO_FORMAT_S16P
@ SPA_AUDIO_FORMAT_S16P
Definition: audio/raw.h:85
SPA_AUDIO_CHANNEL_FRC
@ SPA_AUDIO_CHANNEL_FRC
front right center
Definition: audio/raw.h:181
SPA_AUDIO_CHANNEL_FC
@ SPA_AUDIO_CHANNEL_FC
front center
Definition: audio/raw.h:176
SPA_AUDIO_CHANNEL_TFLC
@ SPA_AUDIO_CHANNEL_TFLC
top front left center
Definition: audio/raw.h:200
SPA_AUDIO_FORMAT_S18_BE
@ SPA_AUDIO_FORMAT_S18_BE
Definition: audio/raw.h:74
SPA_AUDIO_FORMAT_U20
@ SPA_AUDIO_FORMAT_U20
Definition: audio/raw.h:114
SPA_AUDIO_FORMAT_U16_OE
@ SPA_AUDIO_FORMAT_U16_OE
Definition: audio/raw.h:120
SPA_AUDIO_CHANNEL_TRR
@ SPA_AUDIO_CHANNEL_TRR
top rear right
Definition: audio/raw.h:191
SPA_AUDIO_FORMAT_U18_LE
@ SPA_AUDIO_FORMAT_U18_LE
Definition: audio/raw.h:75
SPA_AUDIO_FORMAT_S20
@ SPA_AUDIO_FORMAT_S20
Definition: audio/raw.h:113