daemon: Using mm-boosting api if cpu boosting is enabled.
[platform/upstream/pulseaudio.git] / vala / libpulse.vapi
1 /***
2   This file is part of PulseAudio.
3
4   Copyright 2009 Lennart Poettering
5
6   PulseAudio is free software; you can redistribute it and/or modify
7   it under the terms of the GNU Lesser General Public License as published
8   by the Free Software Foundation; either version 2.1 of the License,
9   or (at your option) any later version.
10
11   PulseAudio is distributed in the hope that it will be useful, but
12   WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14   General Public License for more details.
15
16   You should have received a copy of the GNU Lesser General Public License
17   along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
18 ***/
19
20 using GLib;
21 using Posix;
22
23 [CCode (cheader_filename="pulse/pulseaudio.h")]
24 namespace PulseAudio {
25
26         [CCode (cname="pa_get_library_version")]
27         public unowned string get_library_version();
28
29         [CCode (cname="PA_API_VERSION")]
30         public const int API_VERSION;
31
32         [CCode (cname="PA_PROTOCOL_VERSION")]
33         public const int PROTOCOL_VERSION;
34
35         [CCode (cname="PA_MAJOR")]
36         public const int MAJOR;
37
38         [CCode (cname="PA_MINOR")]
39         public const int MINOR;
40
41         [CCode (cname="PA_MICRO")]
42         public const int MICRO;
43
44         [CCode (cname="PA_CHECK_VERSION")]
45         public bool CHECK_VERSION(int major, int minor, int micro);
46
47         [CCode (cname="PA_INVALID_INDEX")]
48         public const uint32 INVALID_INDEX;
49
50         [CCode (cname="pa_free_cb_t", has_target=false)]
51         public delegate void FreeCb(void *p);
52
53         [CCode (cname="pa_sample_format_t", cprefix="PA_SAMPLE_", has_type_id=false)]
54         public enum SampleFormat {
55                 U8,
56                 ALAW,
57                 ULAW,
58                 S16LE,
59                 S16BE,
60                 FLOAT32LE,
61                 FLOAT32BE,
62                 S32LE,
63                 S32BE,
64                 S24LE,
65                 S24BE,
66                 S24_32LE,
67                 S24_32BE,
68                 MAX,
69                 S16NE,
70                 S16RE,
71                 FLOAT32NE,
72                 FLOAT32RE,
73                 S32NE,
74                 S32RE,
75                 S24NE,
76                 S24RE,
77                 S24_32NE,
78                 S24_32RE;
79
80                 [CCode (cname="pa_sample_size_of_format")]
81                 public size_t size();
82
83                 [CCode (cname="pa_sample_format_to_string")]
84                 public unowned string? to_string();
85
86                 [CCode (cname="pa_sample_format_is_le")]
87                 public int is_le();
88
89                 [CCode (cname="pa_sample_format_is_be")]
90                 public int is_be();
91
92                 [CCode (cname="pa_sample_format_is_ne")]
93                 public int is_ne();
94
95                 [CCode (cname="pa_sample_format_is_re")]
96                 public int is_re();
97
98                 [CCode (cname="pa_parse_sample_format")]
99                 public static SampleFormat parse(string b);
100         }
101
102         [CCode (cname="pa_usec_t")]
103         public struct usec : uint64 {
104         }
105
106         [CCode (cname="pa_sample_spec", has_type_id=false)]
107         public struct SampleSpec {
108                 public SampleFormat format;
109                 public uint32 rate;
110                 public uint8 channels;
111
112                 [CCode (cname="PA_SAMPLE_SPEC_SNPRINT_MAX")]
113                 public const size_t SNPRINT_MAX;
114
115                 [CCode (cname="pa_bytes_per_second")]
116                 public size_t bytes_per_second();
117
118                 [CCode (cname="pa_frame_size")]
119                 public size_t frame_size();
120
121                 [CCode (cname="pa_sample_size")]
122                 public size_t sample_size();
123
124                 [CCode (cname="pa_bytes_to_usec", instance_pos=1.1)]
125                 public usec bytes_to_usec(size_t size);
126
127                 [CCode (cname="pa_usec_to_bytes", instance_pos=1.1)]
128                 public size_t usec_to_bytes(usec u);
129
130                 [CCode (cname="pa_sample_spec_init")]
131                 public unowned SampleSpec? init();
132
133                 [CCode (cname="pa_sample_spec_valid")]
134                 public bool valid();
135
136                 [CCode (cname="pa_sample_spec_equal")]
137                 public bool equal(SampleSpec other);
138
139                 [CCode (cname="pa_sample_spec_snprint", instance_pos=3.1)]
140                 public unowned string snprint(char[] buf);
141
142                 public string sprint() {
143                         var buffer = new char[SNPRINT_MAX];
144                         this.snprint(buffer);
145                         return (string) buffer;
146                 }
147
148                 public string to_string() {
149                         return sprint();
150                 }
151
152                 [CCode (cname="pa_sample_spec_init")]
153                 public SampleSpec();
154         }
155
156         // [CCode (cname="PA_BYTES_SNPRINT_MAX")]
157         [CCode (cname="PA_SAMPLE_SPEC_SNPRINT_MAX")]
158         public const size_t BYTES_SNPRINT_MAX;
159
160         [CCode (cname="pa_bytes_snprint")]
161         public unowned string bytes_snprint(char[] buf, uint bytes);
162
163         public string bytes_sprint(uint bytes) {
164                 var buffer = new char[BYTES_SNPRINT_MAX];
165                 bytes_snprint(buffer, bytes);
166                 return (string) buffer;
167         }
168
169         [CCode (cname="pa_volume_t", has_type_id=false)]
170         public struct Volume : uint32 {
171
172                 [CCode (cname="PA_SW_VOLUME_SNPRINT_DB_MAX")]
173                 public const size_t SW_SNPRINT_DB_MAX;
174
175                 [CCode (cname="PA_VOLUME_SNPRINT_MAX")]
176                 public const size_t SNPRINT_MAX;
177
178                 [CCode (cname="PA_VOLUME_MAX")]
179                 public const Volume MAX;
180
181                 [CCode (cname="PA_VOLUME_NORM")]
182                 public const Volume NORM;
183
184                 [CCode (cname="PA_VOLUME_MUTED")]
185                 public const Volume MUTED;
186
187                 // [CCode (cname="PA_VOLUME_INVALID")]
188                 [CCode (cname="PA_VOLUME_MAX")]
189                 public const Volume INVALID;
190
191                 [CCode (cname="pa_volume_snprint", instance_pos = 3.1)]
192                 public unowned string snprint(char[] s);
193
194                 public string sprint() {
195                         var buffer = new char[SNPRINT_MAX];
196                         this.snprint(buffer);
197                         return (string) buffer;
198                 }
199
200                 public string to_string() {
201                         return sprint();
202                 }
203
204                 [CCode (cname="pa_sw_volume_snprint_dB", instance_pos = 3.1)]
205                 public unowned string sw_snprint_dB(char[] s);
206
207                 public string sw_sprint_dB() {
208                         var buffer = new char[SW_SNPRINT_DB_MAX];
209                         this.sw_snprint_dB(buffer);
210                         return (string) buffer;
211                 }
212
213                 [CCode (cname="pa_sw_volume_multiply")]
214                 public Volume sw_multiply(Volume other);
215
216                 [CCode (cname="pa_sw_volume_divide")]
217                 public Volume sw_divide(Volume other);
218
219                 [CCode (cname="pa_sw_volume_from_dB")]
220                 public static Volume sw_from_dB(double f);
221
222                 [CCode (cname="pa_sw_volume_to_dB")]
223                 public double sw_to_dB();
224
225                 [CCode (cname="pa_sw_volume_from_linear")]
226                 public static Volume sw_from_linear(double f);
227
228                 [CCode (cname="pa_sw_volume_to_linear")]
229                 public double sw_to_linear();
230         }
231
232         [CCode (cname="PA_DECIBEL_MININFTY")]
233         public const double DECIBEL_MININFTY;
234
235         [CCode (cname="PA_CHANNELS_MAX")]
236         public const int CHANNELS_MAX;
237
238         [CCode (cname="PA_RATE_MAX")]
239         public const int RATE_MAX;
240
241         [CCode (cname="pa_cvolume", has_type_id=false)]
242         public struct CVolume {
243                 public uint8 channels;
244                 // TODO: Replace array length with CHANNELS_MAX once vala's bug #647788 is fixed
245                 public Volume values[32];
246
247                 [CCode (cname="PA_SW_CVOLUME_SNPRINT_DB_MAX")]
248                 public const size_t SW_SNPRINT_DB_MAX;
249
250                 [CCode (cname="PA_CVOLUME_SNPRINT_MAX")]
251                 public const size_t SNPRINT_MAX;
252
253                 [CCode (cname="pa_cvolume_equal")]
254                 public bool equal(CVolume other);
255
256                 [CCode (cname="pa_cvolume_init")]
257                 public unowned CVolume? init();
258
259                 [CCode (cname="pa_cvolume_reset")]
260                 public unowned CVolume? reset(uint8 channels);
261
262                 [CCode (cname="pa_cvolume_mute")]
263                 public unowned CVolume? mute(uint8 channels);
264
265                 [CCode (cname="pa_cvolume_snprint", instance_pos = 3.1)]
266                 public unowned string snprint(char[] s);
267
268                 public string sprint() {
269                         var buffer = new char[SNPRINT_MAX];
270                         this.snprint(buffer);
271                         return (string) buffer;
272                 }
273
274                 public string to_string() {
275                         return sprint();
276                 }
277
278                 [CCode (cname="pa_sw_cvolume_snprint_dB", instance_pos = 3.1)]
279                 public unowned string sw_snprint_dB(char [] s);
280
281                 public string sw_sprint_dB() {
282                         var buffer = new char[SW_SNPRINT_DB_MAX];
283                         this.sw_snprint_dB(buffer);
284                         return (string) buffer;
285                 }
286
287                 [CCode (cname="pa_cvolume_init")]
288                 public CVolume();
289
290                 [CCode (cname="pa_cvolume_avg")]
291                 public Volume avg();
292
293                 [CCode (cname="pa_cvolume_max")]
294                 public Volume max();
295
296                 [CCode (cname="pa_cvolume_min")]
297                 public Volume min();
298
299                 [CCode (cname="pa_cvolume_avg_mask")]
300                 public Volume avg_mask(ChannelMap map, ChannelPositionMask mask);
301
302                 [CCode (cname="pa_cvolume_max_mask")]
303                 public Volume max_mask(ChannelMap map, ChannelPositionMask mask);
304
305                 [CCode (cname="pa_cvolume_min_mask")]
306                 public Volume min_mask(ChannelMap map, ChannelPositionMask mask);
307
308                 [CCode (cname="pa_cvolume_valid")]
309                 public bool valid();
310
311                 [CCode (cname="pa_cvolume_channels_equal_to")]
312                 public bool channels_equal_to(Volume other);
313
314                 [CCode (cname="pa_cvolume_is_muted")]
315                 public bool is_muted();
316
317                 [CCode (cname="pa_cvolume_is_norm")]
318                 public bool is_norm();
319
320                 [CCode (cname="pa_sw_cvolume_multiply")]
321                 public unowned CVolume? multiply(CVolume other);
322
323                 [CCode (cname="pa_sw_cvolume_divide")]
324                 public unowned CVolume? divide(CVolume other);
325
326                 [CCode (cname="pa_sw_cvolume_multiply_scalar")]
327                 public unowned CVolume? multiply_scalar(Volume other);
328
329                 [CCode (cname="pa_sw_cvolume_divide_scalar")]
330                 public unowned CVolume? divide_scalar(Volume other);
331
332                 [CCode (cname="pa_cvolume_remap")]
333                 public unowned CVolume? remap(ChannelMap from, ChannelMap to);
334
335                 [CCode (cname="pa_cvolume_compatible")]
336                 public bool compatible(SampleSpec ss);
337
338                 [CCode (cname="pa_cvolume_compatible_with_channel_map")]
339                 public bool compatible_with_channel_map(ChannelMap cm);
340
341                 [CCode (cname="pa_cvolume_set")]
342                 public unowned CVolume? set(uint8 channels, Volume v);
343
344                 [CCode (cname="pa_cvolume_get_balance")]
345                 public float get_balance(ChannelMap map);
346
347                 [CCode (cname="pa_cvolume_set_balance")]
348                 public unowned CVolume? set_balance(ChannelMap map, float b);
349
350                 [CCode (cname="pa_cvolume_get_fade")]
351                 public float get_fade(ChannelMap map);
352
353                 [CCode (cname="pa_cvolume_set_fade")]
354                 public unowned CVolume? set_fade(ChannelMap map, float f);
355
356                 [CCode (cname="pa_cvolume_scale")]
357                 public unowned CVolume? scale(Volume max);
358
359                 [CCode (cname="pa_cvolume_scale_mask")]
360                 public unowned CVolume? scale_mask(Volume max, ChannelMap map, ChannelPositionMask mask);
361
362                 [CCode (cname="pa_cvolume_set_position")]
363                 public unowned CVolume? set_position(ChannelMap map, ChannelPosition p, Volume v);
364
365                 [CCode (cname="pa_cvolume_get_position")]
366                 public Volume get_position(ChannelMap map, ChannelPosition p);
367
368                 [CCode (cname="pa_cvolume_merge")]
369                 public unowned CVolume? merge(CVolume other);
370
371                 [CCode (cname="pa_cvolume_inc")]
372                 public unowned CVolume? inc(Volume plus = 1);
373
374                 [CCode (cname="pa_cvolume_dec")]
375                 public unowned CVolume? dec(Volume minus = 1);
376         }
377
378         [CCode (cname="pa_channel_map", has_type_id=false)]
379         public struct ChannelMap {
380                 public uint8 channels;
381                 // TODO: Replace array length with CHANNELS_MAX once vala's bug #647788 is fixed
382                 public ChannelPosition map[32];
383
384                 [CCode (cname="PA_CHANNEL_MAP_SNPRINT_MAX")]
385                 public const size_t SNPRINT_MAX;
386
387                 [CCode (cname="pa_channel_map_init")]
388                 public ChannelMap();
389
390                 [CCode (cname="pa_channel_map_init")]
391                 public unowned ChannelMap? init();
392
393                 [CCode (cname="pa_channel_map_init_mono")]
394                 public unowned ChannelMap? init_mono();
395
396                 [CCode (cname="pa_channel_map_init_stereo")]
397                 public unowned ChannelMap? init_stereo();
398
399                 [CCode (cname="pa_channel_map_init_auto")]
400                 public unowned ChannelMap? init_auto(uint8 channels, ChannelMapDef def = ChannelMapDef.DEFAULT);
401
402                 [CCode (cname="pa_channel_map_init_extend")]
403                 public unowned ChannelMap? init_extend(uint8 channels, ChannelMapDef def = ChannelMapDef.DEFAULT);
404
405                 [CCode (cname="pa_channel_map_snprint", instance_pos = 3.1)]
406                 public unowned string snprint(char[] s);
407
408                 public string sprint() {
409                         var buffer = new char[SNPRINT_MAX];
410                         this.snprint(buffer);
411                         return (string) buffer;
412                 }
413
414                 public string to_string() {
415                         return sprint();
416                 }
417
418                 [CCode (cname="pa_channel_map_parse")]
419                 public unowned ChannelMap? parse(string s);
420
421                 [CCode (cname="pa_channel_map_equal")]
422                 public bool equal(ChannelMap other);
423
424                 [CCode (cname="pa_channel_map_superset")]
425                 public bool superset(ChannelMap other);
426
427                 [CCode (cname="pa_channel_map_valid")]
428                 public bool valid();
429
430                 [CCode (cname="pa_channel_map_compatible")]
431                 public bool compatible(SampleSpec ss);
432
433                 [CCode (cname="pa_channel_map_can_balance")]
434                 public bool can_balance();
435
436                 [CCode (cname="pa_channel_map_can_fade")]
437                 public bool can_fade();
438
439                 [CCode (cname="pa_channel_map_to_name")]
440                 public unowned string? to_name();
441
442                 [CCode (cname="pa_channel_map_to_pretty_name")]
443                 public unowned string? to_pretty_name();
444
445                 [CCode (cname="pa_channel_map_has_position")]
446                 public bool has_position(ChannelPosition p);
447
448                 [CCode (cname="pa_channel_map_mask")]
449                 public ChannelPositionMask mask();
450         }
451
452         [CCode (cname="pa_channel_position_mask_t", has_type_id=false)]
453         public struct ChannelPositionMask : uint64 {
454         }
455
456         [CCode (cname="pa_channel_position_t", cprefix="PA_CHANNEL_POSITION_", has_type_id=false)]
457         public enum ChannelPosition {
458                 INVALID,
459                 MONO,
460                 FRONT_LEFT,
461                 FRONT_RIGHT,
462                 FRONT_CENTER,
463                 REAR_CENTER,
464                 REAR_LEFT,
465                 REAR_RIGHT,
466                 LFE,
467                 FRONT_LEFT_OF_CENTER,
468                 FRONT_RIGHT_OF_CENTER,
469                 SIDE_LEFT,
470                 SIDE_RIGHT,
471                 TOP_CENTER,
472                 AUX0,
473                 AUX1,
474                 AUX2,
475                 AUX3,
476                 AUX4,
477                 AUX5,
478                 AUX6,
479                 AUX7,
480                 AUX8,
481                 AUX9,
482                 AUX10,
483                 AUX11,
484                 AUX12,
485                 AUX13,
486                 AUX14,
487                 AUX15,
488                 AUX16,
489                 AUX17,
490                 AUX18,
491                 AUX19,
492                 AUX20,
493                 AUX21,
494                 AUX22,
495                 AUX23,
496                 AUX24,
497                 AUX25,
498                 AUX26,
499                 AUX27,
500                 AUX28,
501                 AUX29,
502                 AUX30,
503                 AUX31,
504                 MAX;
505
506                 [CCode (cname="PA_CHANNEL_POSITION_MASK")]
507                 public ChannelPositionMask mask();
508
509                 [CCode (cname="pa_channel_position_to_string")]
510                 public unowned string? to_string();
511
512                 [CCode (cname="pa_channel_position_to_pretty_string")]
513                 public unowned string? to_pretty_string();
514
515                 [CCode (cname="pa_channel_position_from_string")]
516                 public static ChannelPosition from_string(string s);
517         }
518
519         [CCode (cname="pa_channel_map_def_t", cprefix="PA_CHANNEL_MAP_", has_type_id=false)]
520         public enum ChannelMapDef {
521                 AIFF,
522                 WAVEEX,
523                 AUX,
524                 DEFAULT,
525
526                 [CCode (cname="PA_CHANNEL_MAP_DEF_MAX")]
527                 MAX
528         }
529
530         [Compact]
531         [CCode (cname="pa_proplist", cprefix="pa_proplist_", free_function="pa_proplist_free", has_type_id=false)]
532         public class Proplist {
533
534                 [CCode (cname="PA_PROP_MEDIA_NAME")]
535                 public const string PROP_MEDIA_NAME;
536                 [CCode (cname="PA_PROP_MEDIA_TITLE")]
537                 public const string PROP_MEDIA_TITLE;
538                 [CCode (cname="PA_PROP_MEDIA_ARTIST")]
539                 public const string PROP_MEDIA_ARTIST;
540                 [CCode (cname="PA_PROP_MEDIA_COPYRIGHT")]
541                 public const string PROP_MEDIA_COPYRIGHT;
542                 [CCode (cname="PA_PROP_MEDIA_SOFTWARE")]
543                 public const string PROP_MEDIA_SOFTWARE;
544                 [CCode (cname="PA_PROP_MEDIA_LANGUAGE")]
545                 public const string PROP_MEDIA_LANGUAGE;
546                 [CCode (cname="PA_PROP_MEDIA_FILENAME")]
547                 public const string PROP_MEDIA_FILENAME;
548                 [CCode (cname="PA_PROP_MEDIA_ICON_NAME")]
549                 public const string PROP_MEDIA_ICON_NAME;
550                 [CCode (cname="PA_PROP_MEDIA_ROLE")]
551                 public const string PROP_MEDIA_ROLE;
552                 [CCode (cname="PA_PROP_EVENT_ID")]
553                 public const string PROP_EVENT_ID;
554                 [CCode (cname="PA_PROP_EVENT_DESCRIPTION")]
555                 public const string PROP_EVENT_DESCRIPTION;
556                 [CCode (cname="PA_PROP_EVENT_MOUSE_X")]
557                 public const string PROP_EVENT_MOUSE_X;
558                 [CCode (cname="PA_PROP_EVENT_MOUSE_Y")]
559                 public const string PROP_EVENT_MOUSE_Y;
560                 [CCode (cname="PA_PROP_EVENT_MOUSE_HPOS")]
561                 public const string PROP_EVENT_MOUSE_HPOS;
562                 [CCode (cname="PA_PROP_EVENT_MOUSE_VPOS")]
563                 public const string PROP_EVENT_MOUSE_VPOS;
564                 [CCode (cname="PA_PROP_EVENT_MOUSE_BUTTON")]
565                 public const string PROP_EVENT_MOUSE_BUTTON;
566                 [CCode (cname="PA_PROP_WINDOW_NAME")]
567                 public const string PROP_WINDOW_NAME;
568                 [CCode (cname="PA_PROP_WINDOW_ID")]
569                 public const string PROP_WINDOW_ID;
570                 [CCode (cname="PA_PROP_WINDOW_ICON_NAME")]
571                 public const string PROP_WINDOW_ICON_NAME;
572                 [CCode (cname="PA_PROP_WINDOW_X11_DISPLAY")]
573                 public const string PROP_WINDOW_X11_DISPLAY;
574                 [CCode (cname="PA_PROP_WINDOW_X11_SCREEN")]
575                 public const string PROP_WINDOW_X11_SCREEN;
576                 [CCode (cname="PA_PROP_WINDOW_X11_MONITOR")]
577                 public const string PROP_WINDOW_X11_MONITOR;
578                 [CCode (cname="PA_PROP_WINDOW_X11_XID")]
579                 public const string PROP_WINDOW_X11_XID;
580                 [CCode (cname="PA_PROP_APPLICATION_NAME")]
581                 public const string PROP_APPLICATION_NAME;
582                 [CCode (cname="PA_PROP_APPLICATION_ID")]
583                 public const string PROP_APPLICATION_ID;
584                 [CCode (cname="PA_PROP_APPLICATION_VERSION")]
585                 public const string PROP_APPLICATION_VERSION;
586                 [CCode (cname="PA_PROP_APPLICATION_ICON_NAME")]
587                 public const string PROP_APPLICATION_ICON_NAME;
588                 [CCode (cname="PA_PROP_APPLICATION_LANGUAGE")]
589                 public const string PROP_APPLICATION_LANGUAGE;
590                 [CCode (cname="PA_PROP_APPLICATION_PROCESS_ID")]
591                 public const string PROP_APPLICATION_PROCESS_ID;
592                 [CCode (cname="PA_PROP_APPLICATION_PROCESS_BINARY")]
593                 public const string PROP_APPLICATION_PROCESS_BINARY;
594                 [CCode (cname="PA_PROP_APPLICATION_PROCESS_USER")]
595                 public const string PROP_APPLICATION_PROCESS_USER;
596                 [CCode (cname="PA_PROP_APPLICATION_PROCESS_HOST")]
597                 public const string PROP_APPLICATION_PROCESS_HOST;
598                 [CCode (cname="PA_PROP_APPLICATION_PROCESS_MACHINE_ID")]
599                 public const string PROP_APPLICATION_PROCESS_MACHINE_ID;
600                 [CCode (cname="PA_PROP_APPLICATION_PROCESS_SESSION_ID")]
601                 public const string PROP_APPLICATION_PROCESS_SESSION_ID;
602                 [CCode (cname="PA_PROP_DEVICE_STRING")]
603                 public const string PROP_DEVICE_STRING;
604                 [CCode (cname="PA_PROP_DEVICE_API")]
605                 public const string PROP_DEVICE_API;
606                 [CCode (cname="PA_PROP_DEVICE_DESCRIPTION")]
607                 public const string PROP_DEVICE_DESCRIPTION;
608                 [CCode (cname="PA_PROP_DEVICE_BUS_PATH")]
609                 public const string PROP_DEVICE_BUS_PATH;
610                 [CCode (cname="PA_PROP_DEVICE_SERIAL")]
611                 public const string PROP_DEVICE_SERIAL;
612                 [CCode (cname="PA_PROP_DEVICE_VENDOR_ID")]
613                 public const string PROP_DEVICE_VENDOR_ID;
614                 [CCode (cname="PA_PROP_DEVICE_VENDOR_NAME")]
615                 public const string PROP_DEVICE_VENDOR_NAME;
616                 [CCode (cname="PA_PROP_DEVICE_PRODUCT_ID")]
617                 public const string PROP_DEVICE_PRODUCT_ID;
618                 [CCode (cname="PA_PROP_DEVICE_PRODUCT_NAME")]
619                 public const string PROP_DEVICE_PRODUCT_NAME;
620                 [CCode (cname="PA_PROP_DEVICE_CLASS")]
621                 public const string PROP_DEVICE_CLASS;
622                 [CCode (cname="PA_PROP_DEVICE_FORM_FACTOR")]
623                 public const string PROP_DEVICE_FORM_FACTOR;
624                 [CCode (cname="PA_PROP_DEVICE_BUS")]
625                 public const string PROP_DEVICE_BUS;
626                 [CCode (cname="PA_PROP_DEVICE_ICON_NAME")]
627                 public const string PROP_DEVICE_ICON_NAME;
628                 [CCode (cname="PA_PROP_DEVICE_ACCESS_MODE")]
629                 public const string PROP_DEVICE_ACCESS_MODE;
630                 [CCode (cname="PA_PROP_DEVICE_MASTER_DEVICE")]
631                 public const string PROP_DEVICE_MASTER_DEVICE;
632                 [CCode (cname="PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE")]
633                 public const string PROP_DEVICE_BUFFERING_BUFFER_SIZE;
634                 [CCode (cname="PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE")]
635                 public const string PROP_DEVICE_BUFFERING_FRAGMENT_SIZE;
636                 [CCode (cname="PA_PROP_DEVICE_PROFILE_NAME")]
637                 public const string PROP_DEVICE_PROFILE_NAME;
638                 [CCode (cname="PA_PROP_DEVICE_INTENDED_ROLES")]
639                 public const string PROP_DEVICE_INTENDED_ROLES;
640                 [CCode (cname="PA_PROP_DEVICE_PROFILE_DESCRIPTION")]
641                 public const string PROP_DEVICE_PROFILE_DESCRIPTION;
642                 [CCode (cname="PA_PROP_MODULE_AUTHOR")]
643                 public const string PROP_MODULE_AUTHOR;
644                 [CCode (cname="PA_PROP_MODULE_DESCRIPTION")]
645                 public const string PROP_MODULE_DESCRIPTION;
646                 [CCode (cname="PA_PROP_MODULE_USAGE")]
647                 public const string PROP_MODULE_USAGE;
648                 [CCode (cname="PA_PROP_MODULE_VERSION")]
649                 public const string PROP_MODULE_VERSION;
650
651                 [CCode (cname="pa_proplist_new")]
652                 public Proplist();
653
654                 public int sets(string key, string value);
655                 public int setp(string pair);
656
657                 [PrintfFormat]
658                 public int setf(string key, string format, ...);
659
660                 public int set(string key, void* data, size_t size);
661
662                 public unowned string? gets(string key);
663
664                 public int get(string key, out void* data, out size_t size);
665
666                 public void update(UpdateMode mode, Proplist other);
667
668                 public void unset(string key);
669
670                 [CCode (array_length = false)]
671                 public void unset_many(string[] key);
672
673                 public unowned string? iterate(ref void* state);
674
675                 public string to_string();
676
677                 public string to_string_sep(string sep);
678
679                 public static Proplist? from_string(string s);
680
681                 public int contains(string key);
682
683                 public void clear();
684
685                 public Proplist copy();
686
687                 public uint size();
688
689                 public bool is_empty();
690         }
691
692         [CCode (cname="pa_update_mode_t", cprefix="PA_UPDATE_", has_type_id=false)]
693         public enum UpdateMode {
694                 SET,
695                 MERGE,
696                 REPLACE
697         }
698
699         [CCode (cname="PA_OK")]
700         public const int OK;
701
702         [CCode (cname="int", cprefix="PA_ERR_", has_type_id=false)]
703         public enum Error {
704                 ACCESS,
705                 COMMAND,
706                 INVALID,
707                 EXIST,
708                 NOENTITY,
709                 CONNECTIONREFUSED,
710                 PROTOCOL,
711                 TIMEOUT,
712                 AUTHKEY,
713                 INTERNAL,
714                 CONNECTIONTERMINATED,
715                 KILLED,
716                 INVALIDSERVER,
717                 MODINITFAILED,
718                 BADSTATE,
719                 NODATA,
720                 VERSION,
721                 TOOLARGE,
722                 NOTSUPPORTED,
723                 UNKNOWN,
724                 NOEXTENSION,
725                 OBSOLETE,
726                 NOTIMPLEMENTED,
727                 FORKED,
728                 IO,
729                 MAX
730         }
731
732         [CCode (cname="pa_strerror")]
733         public unowned string? strerror(Error e);
734
735         public delegate void VoidFunc();
736
737         [CCode (cname="pa_spawn_api", has_type_id=false)]
738         public struct SpawnApi {
739                 VoidFunc? prefork;
740                 VoidFunc? postfork;
741                 VoidFunc? atfork;
742         }
743
744         [CCode (cname="pa_io_event_flags_t", cprefix="PA_IO_EVENT_", has_type_id=false)]
745         public enum IoEventFlags {
746                 NULL,
747                 INPUT,
748                 OUTPUT,
749                 HANGUP,
750                 ERROR
751         }
752
753         [Compact]
754         [CCode (cname="pa_io_event", unref_function="", ref_function="", has_type_id=false)]
755         public struct IoEvent {
756         }
757
758         [Compact]
759         [CCode (cname="pa_time_event", unref_function="", ref_function="", has_type_id=false)]
760         public struct TimeEvent {
761         }
762
763         [Compact]
764         [CCode (cname="pa_defer_event", unref_function="", ref_function="", has_type_id=false)]
765         public struct DeferEvent {
766         }
767
768         [Compact]
769         [CCode (cname="pa_signal_event", cprefix="pa_signal_", free_function="pa_signal_free", has_type_id=false)]
770         public struct SignalEvent {
771
772                 [CCode (cname="pa_signal_new")]
773                 public SignalEvent(int sig, MainLoopApi.SignalEventCb cb);
774
775                 public void set_destroy(MainLoopApi.SignalEventDestroyCb cb);
776         }
777
778         [Compact]
779         [CCode (cname="pa_mainloop_api", unref_function="", ref_function="", has_type_id=false)]
780         public class MainLoopApi {
781                 public void* userdata;
782
783                 /* Callbacks for the consumer to implement*/
784                 public delegate void IoEventCb(MainLoopApi a, IoEvent e, int fd, IoEventFlags flags);
785                 public delegate void IoEventDestroyCb(MainLoopApi a, IoEvent e);
786
787                 public delegate void TimeEventCb(MainLoopApi a, TimeEvent e, ref timeval t);
788                 public delegate void TimeEventDestroyCb(MainLoopApi a, TimeEvent e);
789
790                 public delegate void DeferEventCb(MainLoopApi a, DeferEvent e);
791                 public delegate void DeferEventDestroyCb(MainLoopApi a, DeferEvent e);
792
793                 public delegate void SignalEventCb(MainLoopApi a, SignalEvent e);
794                 public delegate void SignalEventDestroyCb(MainLoopApi a, SignalEvent e);
795
796                 /* Callbacks for the provider to implement */
797                 public delegate IoEvent IoNewCb(MainLoopApi a, int fd, IoEventFlags flags, IoEventCb cb);
798                 public delegate void IoEnableCb(MainLoopApi a, IoEvent e, IoEventFlags flags);
799                 public delegate void IoFreeCb(MainLoopApi a, IoEvent e);
800                 public delegate void IoSetDestroyCb(MainLoopApi a, IoEvent e, IoEventDestroyCb? cb);
801
802                 public delegate TimeEvent TimeNewCb(MainLoopApi a, timeval? t, TimeEventCb cb);
803                 public delegate void TimeRestartCb(MainLoopApi a, TimeEvent e, timeval? t);
804                 public delegate void TimeFreeCb(MainLoopApi a, TimeEvent e);
805                 public delegate void TimeSetDestroyCb(MainLoopApi a, TimeEvent e, TimeEventDestroyCb? cb);
806
807                 public delegate DeferEvent DeferNewCb(MainLoopApi a, DeferEventCb cb);
808                 public delegate void DeferEnableCb(MainLoopApi a, DeferEvent e, bool b);
809                 public delegate void DeferFreeCb(MainLoopApi a, DeferEvent e);
810                 public delegate void DeferSetDestroyCb(MainLoopApi a, DeferEvent e, DeferEventDestroyCb? cb);
811
812                 public delegate void QuitCb(MainLoopApi a, int retval);
813
814                 public delegate void OnceCb(MainLoopApi a);
815
816                 public IoNewCb io_new;
817                 public IoEnableCb io_enable;
818                 public IoFreeCb io_free;
819                 public IoSetDestroyCb io_set_destroy;
820
821                 public TimeNewCb time_new;
822                 public TimeRestartCb time_restart;
823                 public TimeFreeCb time_free;
824                 public TimeSetDestroyCb time_set_destroy;
825
826                 public DeferNewCb defer_new;
827                 public DeferEnableCb defer_enable;
828                 public DeferFreeCb defer_free;
829                 public DeferSetDestroyCb defer_set_destroy;
830
831                 public QuitCb quit;
832
833                 [CCode (cname="pa_mainloop_api_once")]
834                 public void once(OnceCb cb);
835         }
836
837         [CCode (cname="pa_signal_init")]
838         public void signal_init(MainLoopApi api);
839
840         [CCode (cname="pa_signal_done")]
841         public void signal_done();
842
843         [CCode (cname="pa_poll_func")]
844         public delegate int PollFunc(pollfd[] ufds, int timeout);
845
846         [Compact]
847         [CCode (cname="pa_mainloop", cprefix="pa_mainloop_", free_function="pa_mainloop_free", has_type_id=false)]
848         public class MainLoop {
849
850                 [CCode (cname="pa_mainloop_new")]
851                 public MainLoop();
852
853                 public int prepare(int timeout = -1);
854                 public int poll();
855                 public int dispatch();
856                 public int get_retval();
857                 public int iterate(bool block = true, out int retval = null);
858                 public int run(out int retval = null);
859                 public unowned MainLoopApi get_api();
860                 public void quit(int retval);
861                 public void wakeup();
862                 public void set_poll_func(PollFunc poll_func);
863         }
864
865         [Compact]
866         [CCode (cname="pa_threaded_mainloop", cprefix="pa_threaded_mainloop_", free_function="pa_threaded_mainloop_free")]
867         public class ThreadedMainLoop {
868
869                 [CCode (cname="pa_threaded_mainloop_new")]
870                 public ThreadedMainLoop();
871
872                 public int start();
873                 public void stop();
874                 public void lock();
875                 public void unlock();
876                 public void wait();
877                 public void signal(bool WaitForAccept = false);
878                 public void accept();
879                 public int get_retval();
880                 public unowned MainLoopApi get_api();
881                 public bool in_thread();
882         }
883
884         [Compact]
885         [CCode (cname="pa_operation", cprefix="pa_operation_", unref_function="pa_operation_unref", ref_function="pa_operation_ref", has_type_id=false)]
886         public class Operation {
887
888                 [CCode (cname="pa_operation_state_t", cprefix="PA_OPERATION_", has_type_id=false)]
889                 public enum State {
890                         RUNNING,
891                         DONE,
892                         CANCELED
893                 }
894
895                 public void cancel();
896                 public State get_state();
897         }
898
899         [Compact]
900         [CCode (cname="pa_context", cprefix="pa_context_", unref_function="pa_context_unref", ref_function="pa_context_ref", has_type_id=false)]
901         public class Context {
902
903                 [CCode (cname="pa_context_flags_t", cprefix="PA_CONTEXT_", has_type_id=false)]
904                 public enum Flags {
905                         NOAUTOSPAWN,
906                         NOFAIL
907                 }
908
909                 [CCode (cname="pa_context_state_t", cprefix="PA_CONTEXT_", has_type_id=false)]
910                 public enum State {
911                         UNCONNECTED,
912                         CONNECTING,
913                         AUTHORIZING,
914                         SETTING_NAME,
915                         READY,
916                         FAILED,
917                         TERMINATED;
918
919                         [CCode (cname="PA_CONTEXT_IS_GOOD", has_type_id=false)]
920                         public bool IS_GOOD();
921                 }
922
923                 [CCode (cname="pa_subscription_mask_t", cprefix="PA_SUBSCRIPTION_MASK_", has_type_id=false)]
924                 public enum SubscriptionMask {
925                         NULL,
926                         SINK,
927                         SOURCE,
928                         SINK_INPUT,
929                         SOURCE_OUTPUT,
930                         MODULE,
931                         CLIENT,
932                         SAMPLE_CACHE,
933                         SERVER,
934                         CARD,
935                         ALL;
936
937                         [CCode (cname="pa_subscription_match_flags")]
938                         public bool match_flags(SubscriptionEventType t);
939                 }
940
941                 [CCode (cname="pa_subscription_event_type_t", cprefix="PA_SUBSCRIPTION_EVENT_", has_type_id=false)]
942                 public enum SubscriptionEventType {
943                         SINK,
944                         SOURCE,
945                         SINK_INPUT,
946                         SOURCE_OUTPUT,
947                         MODULE,
948                         CLIENT,
949                         SAMPLE_CACHE,
950                         SERVER,
951                         CARD,
952                         FACILITY_MASK,
953                         NEW,
954                         CHANGE,
955                         REMOVE,
956                         TYPE_MASK
957                 }
958
959                 [CCode (cname = "pa_context_notify_cb_t")]
960                 public delegate void NotifyCb(Context c);
961                 [CCode (cname = "pa_context_success_cb_t")]
962                 public delegate void SuccessCb(Context c, int success);
963                 [CCode (cname = "pa_context_event_cb_t")]
964                 public delegate void EventCb(Context c, string name, Proplist? proplist);
965                 [CCode (cname = "pa_context_subscribe_cb_t")]
966                 public delegate void SubscribeCb(Context c, SubscriptionEventType t, uint32 idx);
967                 [CCode (cname = "pa_sink_info_cb_t")]
968                 public delegate void SinkInfoCb(Context c, SinkInfo? i, int eol);
969                 [CCode (cname = "pa_source_info_cb_t")]
970                 public delegate void SourceInfoCb(Context c, SourceInfo? i, int eol);
971                 [CCode (cname = "pa_card_info_cb_t")]
972                 public delegate void CardInfoCb(Context c, CardInfo? i, int eol);
973                 [CCode (cname = "pa_sink_input_info_cb_t")]
974                 public delegate void SinkInputInfoCb(Context c, SinkInputInfo? i, int eol);
975                 [CCode (cname = "pa_source_output_info_cb_t")]
976                 public delegate void SourceOutputInfoCb(Context c, SourceOutputInfo? i, int eol);
977                 [CCode (cname = "pa_server_info_cb_t")]
978                 public delegate void ServerInfoCb(Context c, ServerInfo? i);
979                 [CCode (cname = "pa_stat_info_cb_t")]
980                 public delegate void StatInfoCb(Context c, ServerInfo? i);
981                 [CCode (cname = "pa_module_info_cb_t")]
982                 public delegate void ModuleInfoCb(Context c, ModuleInfo? i, int eol);
983                 [CCode (cname = "pa_client_info_cb_t")]
984                 public delegate void ClientInfoCb(Context c, ClientInfo? i, int eol);
985                 [CCode (cname = "pa_sample_info_cb_t")]
986                 public delegate void SampleInfoCb(Context c, SampleInfo? i, int eol);
987                 [CCode (cname = "pa_context_index_cb_t")]
988                 public delegate void IndexCb(Context c, uint32 idx);
989
990                 [CCode (cname="pa_context_new_with_proplist")]
991                 public Context(MainLoopApi api, string? name, Proplist? proplist = null);
992
993                 public void set_state_callback(NotifyCb? cb = null);
994                 public void set_event_callback(EventCb? cb = null);
995                 public void set_subscribe_callback(SubscribeCb? cb = null);
996
997                 public Error errno();
998
999                 public int is_pending();
1000                 public State get_state();
1001                 public int is_local();
1002                 public unowned string? get_server();
1003                 public uint32 get_protocol_version();
1004                 public uint32 get_server_protocol_version();
1005                 public uint32 get_index();
1006
1007                 public int connect(string? server = null, Flags flags = 0, SpawnApi? api = null);
1008                 public void disconnect();
1009
1010                 public Operation? drain(NotifyCb? cb = null);
1011                 public Operation? exit_daemon(SuccessCb? cb = null);
1012                 public Operation? set_default_sink(string name, SuccessCb? cb = null);
1013                 public Operation? set_default_source(string name, SuccessCb? cb = null);
1014                 public Operation? set_name(string name, SuccessCb? cb = null);
1015
1016                 [CCode (array_length = false)]
1017                 public Operation? proplist_remove(string[] keys, SuccessCb? cb = null);
1018                 public Operation? proplist_update(UpdateMode mode, Proplist pl, SuccessCb? cb = null);
1019
1020                 public Operation? subscribe(SubscriptionMask mask, SuccessCb? cb = null);
1021
1022                 public Operation? get_sink_info_by_name(string name, SinkInfoCb cb);
1023                 public Operation? get_sink_info_by_index(uint32 idx, SinkInfoCb cb);
1024                 public Operation? get_sink_info_list(SinkInfoCb cb);
1025
1026                 public Operation? set_sink_volume_by_name(string name, CVolume volume, SuccessCb? cb = null);
1027                 public Operation? set_sink_volume_by_index(uint32 idx, CVolume volume, SuccessCb? cb = null);
1028                 public Operation? set_sink_mute_by_name(string name, bool mute, SuccessCb? cb = null);
1029                 public Operation? set_sink_mute_by_index(uint32 idx, bool mute, SuccessCb? cb = null);
1030
1031                 public Operation? suspend_sink_by_name(string name, bool suspend, SuccessCb? cb = null);
1032                 public Operation? suspend_sink_by_index(uint32 idx, bool suspend, SuccessCb? cb = null);
1033
1034                 public Operation? set_sink_port_by_name(string name, string port, SuccessCb? cb = null);
1035                 public Operation? set_sink_port_by_index(uint32 idx, string port, SuccessCb? cb = null);
1036
1037                 public Operation? get_source_info_by_name(string name, SourceInfoCb cb);
1038                 public Operation? get_source_info_by_index(uint32 idx, SourceInfoCb cb);
1039                 public Operation? get_source_info_list(SourceInfoCb cb);
1040
1041                 public Operation? set_source_volume_by_name(string name, CVolume volume, SuccessCb? cb = null);
1042                 public Operation? set_source_volume_by_index(uint32 idx, CVolume volume, SuccessCb? cb = null);
1043                 public Operation? set_source_mute_by_name(string name, bool mute, SuccessCb? cb = null);
1044                 public Operation? set_source_mute_by_index(uint32 idx, bool mute, SuccessCb? cb = null);
1045
1046                 public Operation? suspend_source_by_name(string name, bool suspend, SuccessCb? cb = null);
1047                 public Operation? suspend_source_by_index(uint32 idx, bool suspend, SuccessCb? cb = null);
1048
1049                 public Operation? set_source_port_by_name(string name, string port, SuccessCb? cb = null);
1050                 public Operation? set_source_port_by_index(uint32 idx, string port, SuccessCb? cb = null);
1051
1052                 public Operation? get_server_info(ServerInfoCb cb);
1053
1054                 public Operation? get_module_info(uint32 idx, ModuleInfoCb cb);
1055                 public Operation? get_module_info_list(ModuleInfoCb cb);
1056
1057                 public Operation? load_module(string name, string? argument, IndexCb? cb = null);
1058                 public Operation? unload_module(uint32 idx, SuccessCb? cb = null);
1059
1060                 public Operation? get_client_info(uint32 idx, ClientInfoCb cb);
1061                 public Operation? get_client_info_list(ClientInfoCb cb);
1062
1063                 public Operation? kill_client(uint32 idx, SuccessCb? cb = null);
1064
1065                 public Operation? get_card_info_by_name(string name, CardInfoCb cb);
1066                 public Operation? get_card_info_by_index(uint32 idx, CardInfoCb cb);
1067                 public Operation? get_card_info_list(CardInfoCb cb);
1068
1069                 public Operation? set_card_profile_by_index(uint32 idx, string profile, SuccessCb? cb = null);
1070                 public Operation? set_card_profile_by_name(string name, string profile, SuccessCb? cb = null);
1071
1072                 public Operation? get_sink_input_info(uint32 idx, SinkInputInfoCb cb);
1073                 public Operation? get_sink_input_info_list(SinkInputInfoCb cb);
1074
1075                 public Operation? move_sink_input_by_index(uint32 idx, uint32 sink_idx, SuccessCb? cb = null);
1076                 public Operation? move_sink_input_by_name(uint32 idx, string sink_name, SuccessCb? cb = null);
1077
1078                 public Operation? set_sink_input_volume(uint32 idx, CVolume volume, SuccessCb? cb = null);
1079                 public Operation? set_sink_input_mute(uint32 idx, bool mute, SuccessCb? cb = null);
1080
1081                 public Operation? set_source_output_volume(uint32 idx, CVolume volume, SuccessCb? cb = null);
1082                 public Operation? set_source_output_mute(uint32 idx, bool mute, SuccessCb? cb = null);
1083
1084                 public Operation? kill_sink_input(uint32 idx, SuccessCb? cb = null);
1085
1086                 public Operation? get_source_output_info(uint32 idx, SourceOutputInfoCb cb);
1087                 public Operation? get_source_output_info_list(SourceOutputInfoCb cb);
1088
1089                 public Operation? move_source_output_by_index(uint32 idx, uint32 source_idx, SuccessCb? cb = null);
1090                 public Operation? move_source_output_by_name(uint32 idx, string source_name, SuccessCb? cb = null);
1091
1092                 public Operation? kill_source_output(uint32 idx, SuccessCb? cb = null);
1093
1094                 public Operation? stat(StatInfoCb cb);
1095
1096                 public Operation? get_sample_info_by_name(string name, SampleInfoCb cb);
1097                 public Operation? get_sample_info_by_index(uint32 idx, SampleInfoCb cb);
1098                 public Operation? get_sample_info_list(SampleInfoCb cb);
1099
1100                 public Operation? remove_sample(string name, SuccessCb? cb = null);
1101
1102                 public Operation? play_sample(string name, string? device = null, Volume volume = Volume.INVALID, SuccessCb? cb = null);
1103                 public Operation? play_sample_with_proplist(string name, string? device = null, Volume volume = Volume.INVALID, Proplist? p = null, IndexCb? cb = null);
1104         }
1105
1106         [Compact]
1107         [CCode (cname="pa_stream", cprefix="pa_stream_", unref_function="pa_stream_unref", ref_function="pa_stream_ref", has_type_id=false)]
1108         public class Stream {
1109
1110                 [CCode (cname="pa_stream_flags_t", cprefix="PA_STREAM_", has_type_id=false)]
1111                 public enum Flags {
1112                         START_CORKED,
1113                         INTERPOLATE_TIMING,
1114                         NOT_MONOTONIC,
1115                         AUTO_TIMING_UPDATE,
1116                         NO_REMAP_CHANNELS,
1117                         NO_REMIX_CHANNELS,
1118                         FIX_FORMAT,
1119                         FIX_RATE,
1120                         FIX_CHANNELS,
1121                         DONT_MOVE,
1122                         VARIABLE_RATE,
1123                         PEAK_DETECT,
1124                         START_MUTED,
1125                         ADJUST_LATENCY,
1126                         EARLY_REQUESTS,
1127                         DONT_INHIBIT_AUTO_SUSPEND,
1128                         START_UNMUTED,
1129                         FAIL_ON_SUSPEND
1130                 }
1131
1132                 [CCode (cname="pa_stream_state_t", cprefix="PA_STREAM_", has_type_id=false)]
1133                 public enum State {
1134                         UNCONNECTED,
1135                         CREATING,
1136                         READY,
1137                         FAILED,
1138                         TERMINATED;
1139
1140                         [CCode (cname="PA_STREAM_IS_GOOD")]
1141                         public bool IS_GOOD();
1142                 }
1143
1144                 [CCode (cname="pa_stream_direction_t", cprefix="PA_STREAM_", has_type_id=false)]
1145                 public enum Direction {
1146                         NODIRECTION,
1147                         PLAYBACK,
1148                         RECORD,
1149                         UPLOAD
1150                 }
1151
1152                 [CCode (cname="pa_seek_mode_t", cprefix="PA_SEEK_", has_type_id=false)]
1153                 public enum SeekMode {
1154                         RELATIVE,
1155                         ABSOLUTE,
1156                         RELATIVE_ON_READ,
1157                         RELATIVE_END
1158                 }
1159
1160                 [CCode (cname="pa_buffer_attr", has_type_id=false)]
1161                 public struct BufferAttr {
1162                         uint32 maxlength;
1163                         uint32 tlength;
1164                         uint32 prebuf;
1165                         uint32 minreq;
1166                         uint32 fragsize;
1167                 }
1168
1169                 [CCode (cname="pa_timing_info", has_type_id=false)]
1170                 public struct TimingInfo {
1171                         timeval timestamp;
1172                         int synchronized_clocks;
1173                         usec sink_usec;
1174                         usec source_usec;
1175                         usec transport_usec;
1176                         int playing;
1177                         int write_index_corrupt;
1178                         int64 write_index;
1179                         int read_index_corrupt;
1180                         int64 read_index;
1181                         usec configured_sink_usec;
1182                         usec configured_source_usec;
1183                         int64 since_underrun;
1184                 }
1185
1186                 [CCode (cname="PA_STREAM_EVENT_REQUEST_CORK")]
1187                 public const string EVENT_REQUEST_CORK;
1188
1189                 [CCode (cname="PA_STREAM_EVENT_REQUEST_UNCORK")]
1190                 public const string EVENT_REQUEST_UNCORK;
1191
1192                 public delegate void SuccessCb(Stream s, int success);
1193                 public delegate void RequestCb(Stream s, size_t nbytes);
1194                 public delegate void NotifyCb(Stream s);
1195                 public delegate void EventCb(Stream s, string name, Proplist proplist);
1196
1197                 [CCode (cname="pa_stream_new_with_proplist")]
1198                 public Stream(Context c, string name, SampleSpec ss, ChannelMap? map = null, Proplist? proplist = null);
1199
1200                 public State get_state();
1201                 public Context get_context();
1202                 public uint32 get_index();
1203                 public uint32 get_device_index();
1204                 public unowned string? get_device_name();
1205                 public int is_suspended();
1206                 public int is_corked();
1207
1208                 public int connect_playback(string? dev = null, BufferAttr? a = null, Flags flags = 0, CVolume? volume = null, Stream? sync_stream = null);
1209                 public int connect_record(string? dev = null, BufferAttr? a = null, Flags flags = 0);
1210                 public int connect_upload(size_t length);
1211                 public int disconnect();
1212                 public int finish_upload();
1213
1214                 public int begin_write(out void* data, out size_t nbytes);
1215                 public int cancel_write();
1216                 public int write(void *data, size_t bytes, FreeCb? free_cb = null, int64 offset = 0, SeekMode mode = SeekMode.RELATIVE);
1217                 public int peek(out void *data, out size_t nbytes);
1218                 public int drop();
1219                 public size_t writable_size();
1220                 public size_t readable_size();
1221
1222                 public void set_state_callback(NotifyCb? cb = null);
1223                 public void set_write_callback(RequestCb? cb = null);
1224                 public void set_read_callback(RequestCb? cb = null);
1225                 public void set_overflow_callback(NotifyCb? cb = null);
1226                 public void set_underflow_callback(NotifyCb? cb = null);
1227                 public void set_started_callback(NotifyCb? cb = null);
1228                 public void set_latency_update_callback(NotifyCb? cb = null);
1229                 public void set_moved_callback(NotifyCb? cb = null);
1230                 public void set_suspended_callback(NotifyCb? cb = null);
1231                 public void set_event_callback(EventCb? cb = null);
1232                 public void set_buffer_attr_callback(NotifyCb? cb = null);
1233
1234                 public Operation? drain(SuccessCb? cb = null);
1235                 public Operation? update_timing_info(SuccessCb? cb = null);
1236
1237                 public Operation? cork(bool b, SuccessCb? cb = null);
1238                 public Operation? flush(SuccessCb? cb = null);
1239                 public Operation? prebuf(SuccessCb? cb = null);
1240                 public Operation? trigger(SuccessCb? cb = null);
1241
1242                 public Operation? set_name(string name, SuccessCb? cb = null);
1243                 public Operation? set_buffer_attr(BufferAttr attr, SuccessCb? cb = null);
1244                 public Operation? update_sample_rate(uint32 rate, SuccessCb? cb = null);
1245
1246                 [CCode (array_length = false)]
1247                 public Operation? proplist_remove(string[] keys, SuccessCb? cb = null);
1248                 public Operation? proplist_update(UpdateMode mode, Proplist pl, SuccessCb? cb = null);
1249
1250                 public unowned TimingInfo? get_timing_info();
1251                 public int get_time(out usec u);
1252                 public int get_latency(out usec u, out bool negative = null);
1253
1254                 public unowned SampleSpec? get_sample_spec();
1255                 public unowned ChannelMap? get_channel_map();
1256                 public unowned BufferAttr? get_buffer_attr();
1257
1258                 public int set_monitor_stream(uint32 sink_input);
1259                 public uint32 get_monitor_stream();
1260         }
1261         
1262         [CCode (cname="pa_direction_t", cprefix="PA_DIRECTION_", has_type_id=false)]
1263         [Flags]
1264         public enum Direction {
1265                 OUTPUT = 0x0001U,
1266                 INPUT = 0x0002U
1267         }
1268
1269         [CCode (cname="pa_port_available_t", cprefix="PA_PORT_AVAILABLE_", has_type_id=false)]
1270         public enum PortAvailable {
1271                 UNKNOWN = 0,
1272                 NO = 1,
1273                 YES = 2
1274         }
1275
1276         [CCode (cname="pa_sink_port_info", has_type_id=false)]
1277         public struct SinkPortInfo {
1278                 public string name;
1279                 public string description;
1280                 public uint32 priority;
1281         }
1282
1283         [CCode (cname="pa_sink_info", has_type_id=false)]
1284         public struct SinkInfo {
1285                 public string name;
1286                 public uint32 index;
1287                 public string description;
1288                 public SampleSpec sample_spec;
1289                 public ChannelMap channel_map;
1290                 public uint32 owner_module;
1291                 public CVolume volume;
1292                 public int mute;
1293                 public uint32 monitor_source;
1294                 public string monitor_source_name;
1295                 public usec latency;
1296                 public string driver;
1297                 public SinkFlags flags;
1298                 public Proplist proplist;
1299                 public usec configured_latency;
1300                 public Volume base_volume;
1301                 public SinkState state;
1302                 public uint32 n_volume_steps;
1303                 public uint32 card;
1304                 public uint32 n_ports;
1305                 [CCode (array_length_cname="n_ports")]
1306                 public SinkPortInfo*[] ports;
1307                 public SinkPortInfo* active_port;
1308         }
1309
1310         [CCode (cname="pa_source_port_info", has_type_id=false)]
1311         public struct SourcePortInfo {
1312                 public string name;
1313                 public string description;
1314                 public uint32 priority;
1315         }
1316
1317         [CCode (cname="pa_source_info", has_type_id=false)]
1318         public struct SourceInfo {
1319                 public string name;
1320                 public uint32 index;
1321                 public string description;
1322                 public SampleSpec sample_spec;
1323                 public ChannelMap channel_map;
1324                 public uint32 owner_module;
1325                 public CVolume volume;
1326                 public int mute;
1327                 public uint32 monitor_of_sink;
1328                 public string monitor_of_sink_name;
1329                 public usec latency;
1330                 public string driver;
1331                 public SourceFlags flags;
1332                 public Proplist proplist;
1333                 public usec configured_latency;
1334                 public Volume base_volume;
1335                 public SourceState state;
1336                 public uint32 n_volume_steps;
1337                 public uint32 card;
1338                 public uint32 n_ports;
1339                 [CCode (array_length_cname="n_ports")]
1340                 public SourcePortInfo*[] ports;
1341                 public SourcePortInfo* active_port;
1342         }
1343
1344         [CCode (cname="pa_server_info", has_type_id=false)]
1345         public struct ServerInfo {
1346                 public string user_name;
1347                 public string host_name;
1348                 public string server_version;
1349                 public string server_name;
1350                 public SampleSpec sample_spec;
1351                 public string default_sink_name;
1352                 public string default_source_name;
1353                 public ChannelMap channel_map;
1354         }
1355
1356         [CCode (cname="pa_module_info", has_type_id=false)]
1357         public struct ModuleInfo {
1358                 public uint32 index;
1359                 public string name;
1360                 public string argument;
1361                 public uint32 n_used;
1362                 public Proplist proplist;
1363         }
1364
1365         [CCode (cname="pa_client_info", has_type_id=false)]
1366         public struct ClientInfo {
1367                 public uint32 index;
1368                 public string name;
1369                 public uint32 owner_module;
1370                 public string driver;
1371                 public Proplist proplist;
1372         }
1373
1374         [CCode (cname="pa_card_profile_info", has_type_id=false)]
1375         public struct CardProfileInfo {
1376                 public string name;
1377                 public string description;
1378                 public uint32 n_sinks;
1379                 public uint32 n_sources;
1380                 public uint32 priority;
1381         }
1382         
1383         [CCode (cname="pa_card_profile_info2", has_type_id=false)]
1384         public struct CardProfileInfo2 {
1385                 public string name;
1386                 public string description;
1387                 public uint32 n_sinks;
1388                 public uint32 n_sources;
1389                 public uint32 priority;
1390                 int available;
1391         }
1392         
1393         [CCode (cname="pa_card_port_info", has_type_id=false)]
1394         public struct CardPortInfo {
1395                 public string name;
1396                 public string description;
1397                 public uint32 priority;
1398                 PortAvailable available;
1399                 Direction direction;
1400                 public uint32 n_profiles;
1401                 [CCode (array_length_cname="n_profiles")]
1402                 public CardProfileInfo*[] profiles;
1403                 public Proplist proplist;
1404                 public int64 latency_offset;
1405                 [CCode (array_length_cname="n_profiles")]
1406                 public CardProfileInfo2*[] profiles2;
1407         }
1408
1409         [CCode (cname="pa_card_info", has_type_id=false)]
1410         public struct CardInfo {
1411                 public uint32 index;
1412                 public string name;
1413                 public uint32 owner_module;
1414                 public string driver;
1415                 public uint32 n_profiles;
1416                 [CCode (array_length_cname="n_profiles")]
1417                 public CardProfileInfo[] profiles;
1418                 public CardProfileInfo *active_profile;
1419                 [CCode (array_length_cname="n_profiles")]
1420                 public CardProfileInfo2*[] profiles2;
1421                 public CardProfileInfo2 *active_profile2;
1422                 public Proplist proplist;
1423                 public uint32 n_ports;
1424                 [CCode (array_length_cname="n_ports")]
1425                 public CardPortInfo*[] ports;
1426         }
1427
1428         [CCode (cname="pa_sink_input_info", has_type_id=false)]
1429         public struct SinkInputInfo {
1430                 public uint32 index;
1431                 public string name;
1432                 public uint32 owner_module;
1433                 public uint32 client;
1434                 public uint32 sink;
1435                 public SampleSpec sample_spec;
1436                 public ChannelMap channel_map;
1437                 public CVolume volume;
1438                 public uint32 buffer_usec;
1439                 public uint32 sink_usec;
1440                 public string resample_method;
1441                 public string driver;
1442                 public int mute;
1443                 public Proplist proplist;
1444                 public int corked;
1445                 public int has_volume;
1446                 public int volume_writable;
1447         }
1448
1449         [CCode (cname="pa_source_output_info", has_type_id=false)]
1450         public struct SourceOutputInfo {
1451                 public uint32 index;
1452                 public string name;
1453                 public uint32 owner_module;
1454                 public uint32 client;
1455                 public uint32 source;
1456                 public SampleSpec sample_spec;
1457                 public ChannelMap channel_map;
1458                 public uint32 buffer_usec;
1459                 public uint32 source_usec;
1460                 public string resample_method;
1461                 public string driver;
1462                 public Proplist proplist;
1463                 public int corked;
1464                 public CVolume volume;
1465                 public int mute;
1466                 public int has_volume;
1467                 public int volume_writable;
1468         }
1469
1470         [CCode (cname="pa_stat_info", has_type_id=false)]
1471         public struct StatInfo {
1472                 public uint32 memblock_total;
1473                 public uint32 memblock_total_size;
1474                 public uint32 memblock_allocated;
1475                 public uint32 memblock_allocated_size;
1476                 public uint32 scache_size;
1477         }
1478
1479         [CCode (cname="pa_sample_info", has_type_id=false)]
1480         public struct SampleInfo {
1481                 public uint32 index;
1482                 public string name;
1483                 public CVolume volume;
1484                 public SampleSpec sample_spec;
1485                 public ChannelMap channel_map;
1486                 public usec duration;
1487                 public uint32 bytes;
1488                 public bool lazy;
1489                 public string filename;
1490                 public Proplist proplist;
1491         }
1492
1493         [CCode (cname="pa_sink_flags_t", cprefix="PA_SINK_", has_type_id=false)]
1494         public enum SinkFlags {
1495                 HW_VOLUME_CTRL,
1496                 LATENCY,
1497                 HARDWARE,
1498                 NETWORK,
1499                 HW_MUTE_CTRL,
1500                 DECIBEL_VOLUME,
1501                 FLAT_VOLUME,
1502                 DYNAMIC_LATENCY
1503         }
1504
1505         [CCode (cname="pa_source_flags_t", cprefix="PA_SOURCE_", has_type_id=false)]
1506         public enum SourceFlags {
1507                 HW_VOLUME_CTRL,
1508                 LATENCY,
1509                 HARDWARE,
1510                 NETWORK,
1511                 HW_MUTE_CTRL,
1512                 DECIBEL_VOLUME,
1513                 DYNAMIC_LATENCY
1514         }
1515
1516         [CCode (cname="pa_sink_state_t", cprefix="PA_SINK_", has_type_id=false)]
1517         public enum SinkState {
1518                 INVALID_STATE,
1519                 RUNNING,
1520                 IDLE,
1521                 SUSPENDED;
1522
1523                 [CCode (cname="PA_SINK_IS_OPENED")]
1524                 public bool IS_OPENED();
1525         }
1526
1527         [CCode (cname="pa_source_state_t", cprefix="PA_SOURCE_", has_type_id=false)]
1528         public enum SourceState {
1529                 INVALID_STATE,
1530                 RUNNING,
1531                 IDLE,
1532                 SUSPENDED;
1533
1534                 [CCode (cname="PA_SOURCE_IS_OPENED")]
1535                 public bool IS_OPENED();
1536         }
1537
1538         [CCode (cname="pa_gettimeofday")]
1539         public unowned timeval gettimeofday(out timeval tv);
1540
1541         [CCode (cname="pa_timeval_diff")]
1542         public usec timeval_diff(ref timeval a, ref timeval b);
1543
1544         [CCode (cname="pa_timeval_cmp")]
1545         public int timeval_cmp(ref timeval a, ref timeval b);
1546
1547         [CCode (cname="pa_timeval_age")]
1548         public usec timeval_age(ref timeval a);
1549
1550         [CCode (cname="pa_timeval_add")]
1551         public unowned timeval timeval_add(ref timeval tv, usec x);
1552
1553         [CCode (cname="pa_timeval_sub")]
1554         public unowned timeval timeval_sub(ref timeval tv, usec x);
1555
1556         [CCode (cname="pa_timeval_store")]
1557         public unowned timeval timeval_store(out timeval tv, usec c);
1558
1559         [CCode (cname="pa_timeval_load")]
1560         public usec timeval_load(timeval tv);
1561
1562         [CCode (cname="PA_USEC_MAX")]
1563         public const usec USEC_MAX;
1564
1565         [CCode (cname="PA_USEC_INVALID")]
1566         public const usec USEC_INVALID;
1567
1568         [CCode (cname="PA_MSEC_PER_SEC")]
1569         public const usec MSEC_PER_SEC;
1570
1571         [CCode (cname="PA_USEC_PER_SEC")]
1572         public const usec USEC_PER_SEC;
1573
1574         [CCode (cname="PA_NSEC_PER_SEC")]
1575         public const uint64 NSEC_PER_SEC;
1576
1577
1578         [CCode (cname="PA_USEC_PER_MSEC")]
1579         public const usec USEC_PER_MSEC;
1580
1581         [CCode (cname="PA_NSEC_PER_MSEC")]
1582         public const uint64 NSEC_PER_MSEC;
1583
1584
1585         [CCode (cname="PA_NSEC_PER_USEC")]
1586         public const uint64 NSEC_PER_USEC;
1587 }