1/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
2
3/*
4 * Schema-defined QAPI types
5 *
6 * Copyright IBM, Corp. 2011
7 * Copyright (c) 2013-2018 Red Hat Inc.
8 *
9 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
10 * See the COPYING.LIB file in the top-level directory.
11 */
12
13#ifndef QAPI_TYPES_AUDIO_H
14#define QAPI_TYPES_AUDIO_H
15
16#include "qapi/qapi-builtin-types.h"
17
18typedef struct AudiodevPerDirectionOptions AudiodevPerDirectionOptions;
19
20typedef struct AudiodevGenericOptions AudiodevGenericOptions;
21
22typedef struct AudiodevAlsaPerDirectionOptions AudiodevAlsaPerDirectionOptions;
23
24typedef struct AudiodevAlsaOptions AudiodevAlsaOptions;
25
26typedef struct AudiodevCoreaudioPerDirectionOptions AudiodevCoreaudioPerDirectionOptions;
27
28typedef struct AudiodevCoreaudioOptions AudiodevCoreaudioOptions;
29
30typedef struct AudiodevDsoundOptions AudiodevDsoundOptions;
31
32typedef struct AudiodevOssPerDirectionOptions AudiodevOssPerDirectionOptions;
33
34typedef struct AudiodevOssOptions AudiodevOssOptions;
35
36typedef struct AudiodevPaPerDirectionOptions AudiodevPaPerDirectionOptions;
37
38typedef struct AudiodevPaOptions AudiodevPaOptions;
39
40typedef struct AudiodevWavOptions AudiodevWavOptions;
41
42typedef enum AudioFormat {
43 AUDIO_FORMAT_U8,
44 AUDIO_FORMAT_S8,
45 AUDIO_FORMAT_U16,
46 AUDIO_FORMAT_S16,
47 AUDIO_FORMAT_U32,
48 AUDIO_FORMAT_S32,
49 AUDIO_FORMAT__MAX,
50} AudioFormat;
51
52#define AudioFormat_str(val) \
53 qapi_enum_lookup(&AudioFormat_lookup, (val))
54
55extern const QEnumLookup AudioFormat_lookup;
56
57typedef enum AudiodevDriver {
58 AUDIODEV_DRIVER_NONE,
59 AUDIODEV_DRIVER_ALSA,
60 AUDIODEV_DRIVER_COREAUDIO,
61 AUDIODEV_DRIVER_DSOUND,
62 AUDIODEV_DRIVER_OSS,
63 AUDIODEV_DRIVER_PA,
64 AUDIODEV_DRIVER_SDL,
65 AUDIODEV_DRIVER_SPICE,
66 AUDIODEV_DRIVER_WAV,
67 AUDIODEV_DRIVER__MAX,
68} AudiodevDriver;
69
70#define AudiodevDriver_str(val) \
71 qapi_enum_lookup(&AudiodevDriver_lookup, (val))
72
73extern const QEnumLookup AudiodevDriver_lookup;
74
75typedef struct q_obj_Audiodev_base q_obj_Audiodev_base;
76
77typedef struct Audiodev Audiodev;
78
79struct AudiodevPerDirectionOptions {
80 bool has_fixed_settings;
81 bool fixed_settings;
82 bool has_frequency;
83 uint32_t frequency;
84 bool has_channels;
85 uint32_t channels;
86 bool has_voices;
87 uint32_t voices;
88 bool has_format;
89 AudioFormat format;
90 bool has_buffer_length;
91 uint32_t buffer_length;
92};
93
94void qapi_free_AudiodevPerDirectionOptions(AudiodevPerDirectionOptions *obj);
95
96struct AudiodevGenericOptions {
97 bool has_in;
98 AudiodevPerDirectionOptions *in;
99 bool has_out;
100 AudiodevPerDirectionOptions *out;
101};
102
103void qapi_free_AudiodevGenericOptions(AudiodevGenericOptions *obj);
104
105struct AudiodevAlsaPerDirectionOptions {
106 /* Members inherited from AudiodevPerDirectionOptions: */
107 bool has_fixed_settings;
108 bool fixed_settings;
109 bool has_frequency;
110 uint32_t frequency;
111 bool has_channels;
112 uint32_t channels;
113 bool has_voices;
114 uint32_t voices;
115 bool has_format;
116 AudioFormat format;
117 bool has_buffer_length;
118 uint32_t buffer_length;
119 /* Own members: */
120 bool has_dev;
121 char *dev;
122 bool has_period_length;
123 uint32_t period_length;
124 bool has_try_poll;
125 bool try_poll;
126};
127
128static inline AudiodevPerDirectionOptions *qapi_AudiodevAlsaPerDirectionOptions_base(const AudiodevAlsaPerDirectionOptions *obj)
129{
130 return (AudiodevPerDirectionOptions *)obj;
131}
132
133void qapi_free_AudiodevAlsaPerDirectionOptions(AudiodevAlsaPerDirectionOptions *obj);
134
135struct AudiodevAlsaOptions {
136 bool has_in;
137 AudiodevAlsaPerDirectionOptions *in;
138 bool has_out;
139 AudiodevAlsaPerDirectionOptions *out;
140 bool has_threshold;
141 uint32_t threshold;
142};
143
144void qapi_free_AudiodevAlsaOptions(AudiodevAlsaOptions *obj);
145
146struct AudiodevCoreaudioPerDirectionOptions {
147 /* Members inherited from AudiodevPerDirectionOptions: */
148 bool has_fixed_settings;
149 bool fixed_settings;
150 bool has_frequency;
151 uint32_t frequency;
152 bool has_channels;
153 uint32_t channels;
154 bool has_voices;
155 uint32_t voices;
156 bool has_format;
157 AudioFormat format;
158 bool has_buffer_length;
159 uint32_t buffer_length;
160 /* Own members: */
161 bool has_buffer_count;
162 uint32_t buffer_count;
163};
164
165static inline AudiodevPerDirectionOptions *qapi_AudiodevCoreaudioPerDirectionOptions_base(const AudiodevCoreaudioPerDirectionOptions *obj)
166{
167 return (AudiodevPerDirectionOptions *)obj;
168}
169
170void qapi_free_AudiodevCoreaudioPerDirectionOptions(AudiodevCoreaudioPerDirectionOptions *obj);
171
172struct AudiodevCoreaudioOptions {
173 bool has_in;
174 AudiodevCoreaudioPerDirectionOptions *in;
175 bool has_out;
176 AudiodevCoreaudioPerDirectionOptions *out;
177};
178
179void qapi_free_AudiodevCoreaudioOptions(AudiodevCoreaudioOptions *obj);
180
181struct AudiodevDsoundOptions {
182 bool has_in;
183 AudiodevPerDirectionOptions *in;
184 bool has_out;
185 AudiodevPerDirectionOptions *out;
186 bool has_latency;
187 uint32_t latency;
188};
189
190void qapi_free_AudiodevDsoundOptions(AudiodevDsoundOptions *obj);
191
192struct AudiodevOssPerDirectionOptions {
193 /* Members inherited from AudiodevPerDirectionOptions: */
194 bool has_fixed_settings;
195 bool fixed_settings;
196 bool has_frequency;
197 uint32_t frequency;
198 bool has_channels;
199 uint32_t channels;
200 bool has_voices;
201 uint32_t voices;
202 bool has_format;
203 AudioFormat format;
204 bool has_buffer_length;
205 uint32_t buffer_length;
206 /* Own members: */
207 bool has_dev;
208 char *dev;
209 bool has_buffer_count;
210 uint32_t buffer_count;
211 bool has_try_poll;
212 bool try_poll;
213};
214
215static inline AudiodevPerDirectionOptions *qapi_AudiodevOssPerDirectionOptions_base(const AudiodevOssPerDirectionOptions *obj)
216{
217 return (AudiodevPerDirectionOptions *)obj;
218}
219
220void qapi_free_AudiodevOssPerDirectionOptions(AudiodevOssPerDirectionOptions *obj);
221
222struct AudiodevOssOptions {
223 bool has_in;
224 AudiodevOssPerDirectionOptions *in;
225 bool has_out;
226 AudiodevOssPerDirectionOptions *out;
227 bool has_try_mmap;
228 bool try_mmap;
229 bool has_exclusive;
230 bool exclusive;
231 bool has_dsp_policy;
232 uint32_t dsp_policy;
233};
234
235void qapi_free_AudiodevOssOptions(AudiodevOssOptions *obj);
236
237struct AudiodevPaPerDirectionOptions {
238 /* Members inherited from AudiodevPerDirectionOptions: */
239 bool has_fixed_settings;
240 bool fixed_settings;
241 bool has_frequency;
242 uint32_t frequency;
243 bool has_channels;
244 uint32_t channels;
245 bool has_voices;
246 uint32_t voices;
247 bool has_format;
248 AudioFormat format;
249 bool has_buffer_length;
250 uint32_t buffer_length;
251 /* Own members: */
252 bool has_name;
253 char *name;
254 bool has_latency;
255 uint32_t latency;
256};
257
258static inline AudiodevPerDirectionOptions *qapi_AudiodevPaPerDirectionOptions_base(const AudiodevPaPerDirectionOptions *obj)
259{
260 return (AudiodevPerDirectionOptions *)obj;
261}
262
263void qapi_free_AudiodevPaPerDirectionOptions(AudiodevPaPerDirectionOptions *obj);
264
265struct AudiodevPaOptions {
266 bool has_in;
267 AudiodevPaPerDirectionOptions *in;
268 bool has_out;
269 AudiodevPaPerDirectionOptions *out;
270 bool has_server;
271 char *server;
272};
273
274void qapi_free_AudiodevPaOptions(AudiodevPaOptions *obj);
275
276struct AudiodevWavOptions {
277 bool has_in;
278 AudiodevPerDirectionOptions *in;
279 bool has_out;
280 AudiodevPerDirectionOptions *out;
281 bool has_path;
282 char *path;
283};
284
285void qapi_free_AudiodevWavOptions(AudiodevWavOptions *obj);
286
287struct q_obj_Audiodev_base {
288 char *id;
289 AudiodevDriver driver;
290 bool has_timer_period;
291 uint32_t timer_period;
292};
293
294struct Audiodev {
295 char *id;
296 AudiodevDriver driver;
297 bool has_timer_period;
298 uint32_t timer_period;
299 union { /* union tag is @driver */
300 AudiodevGenericOptions none;
301 AudiodevAlsaOptions alsa;
302 AudiodevCoreaudioOptions coreaudio;
303 AudiodevDsoundOptions dsound;
304 AudiodevOssOptions oss;
305 AudiodevPaOptions pa;
306 AudiodevGenericOptions sdl;
307 AudiodevGenericOptions spice;
308 AudiodevWavOptions wav;
309 } u;
310};
311
312void qapi_free_Audiodev(Audiodev *obj);
313
314#endif /* QAPI_TYPES_AUDIO_H */
315