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