audio_device_alsa_sys/
bindings.rs

1/* automatically generated by rust-bindgen 0.58.1 */
2
3#[repr(C)]
4#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub struct __BindgenBitfieldUnit<Storage> {
6    storage: Storage,
7}
8impl<Storage> __BindgenBitfieldUnit<Storage> {
9    #[inline]
10    pub const fn new(storage: Storage) -> Self {
11        Self { storage }
12    }
13}
14impl<Storage> __BindgenBitfieldUnit<Storage>
15where
16    Storage: AsRef<[u8]> + AsMut<[u8]>,
17{
18    #[inline]
19    pub fn get_bit(&self, index: usize) -> bool {
20        debug_assert!(index / 8 < self.storage.as_ref().len());
21        let byte_index = index / 8;
22        let byte = self.storage.as_ref()[byte_index];
23        let bit_index = if cfg!(target_endian = "big") {
24            7 - (index % 8)
25        } else {
26            index % 8
27        };
28        let mask = 1 << bit_index;
29        byte & mask == mask
30    }
31    #[inline]
32    pub fn set_bit(&mut self, index: usize, val: bool) {
33        debug_assert!(index / 8 < self.storage.as_ref().len());
34        let byte_index = index / 8;
35        let byte = &mut self.storage.as_mut()[byte_index];
36        let bit_index = if cfg!(target_endian = "big") {
37            7 - (index % 8)
38        } else {
39            index % 8
40        };
41        let mask = 1 << bit_index;
42        if val {
43            *byte |= mask;
44        } else {
45            *byte &= !mask;
46        }
47    }
48    #[inline]
49    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
50        debug_assert!(bit_width <= 64);
51        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
52        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
53        let mut val = 0;
54        for i in 0..(bit_width as usize) {
55            if self.get_bit(i + bit_offset) {
56                let index = if cfg!(target_endian = "big") {
57                    bit_width as usize - 1 - i
58                } else {
59                    i
60                };
61                val |= 1 << index;
62            }
63        }
64        val
65    }
66    #[inline]
67    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
68        debug_assert!(bit_width <= 64);
69        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
70        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
71        for i in 0..(bit_width as usize) {
72            let mask = 1 << i;
73            let val_bit_is_set = val & mask == mask;
74            let index = if cfg!(target_endian = "big") {
75                bit_width as usize - 1 - i
76            } else {
77                i
78            };
79            self.set_bit(index + bit_offset, val_bit_is_set);
80        }
81    }
82}
83#[repr(C)]
84#[derive(Default)]
85pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
86impl<T> __IncompleteArrayField<T> {
87    #[inline]
88    pub const fn new() -> Self {
89        __IncompleteArrayField(::std::marker::PhantomData, [])
90    }
91    #[inline]
92    pub fn as_ptr(&self) -> *const T {
93        self as *const _ as *const T
94    }
95    #[inline]
96    pub fn as_mut_ptr(&mut self) -> *mut T {
97        self as *mut _ as *mut T
98    }
99    #[inline]
100    pub unsafe fn as_slice(&self, len: usize) -> &[T] {
101        ::std::slice::from_raw_parts(self.as_ptr(), len)
102    }
103    #[inline]
104    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
105        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
106    }
107}
108impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
109    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
110        fmt.write_str("__IncompleteArrayField")
111    }
112}
113pub type va_list = __builtin_va_list;
114pub type __gnuc_va_list = __builtin_va_list;
115extern "C" {
116    pub fn snd_asoundlib_version() -> *const ::std::os::raw::c_char;
117}
118#[repr(C)]
119#[derive(Debug, Copy, Clone)]
120pub struct snd_dlsym_link {
121    pub next: *mut snd_dlsym_link,
122    pub dlsym_name: *const ::std::os::raw::c_char,
123    pub dlsym_ptr: *const ::std::os::raw::c_void,
124}
125extern "C" {
126    pub fn snd_dlpath(
127        path: *mut ::std::os::raw::c_char,
128        path_len: usize,
129        name: *const ::std::os::raw::c_char,
130    ) -> ::std::os::raw::c_int;
131}
132extern "C" {
133    pub fn snd_dlopen(
134        file: *const ::std::os::raw::c_char,
135        mode: ::std::os::raw::c_int,
136        errbuf: *mut ::std::os::raw::c_char,
137        errbuflen: usize,
138    ) -> *mut ::std::os::raw::c_void;
139}
140extern "C" {
141    pub fn snd_dlsym(
142        handle: *mut ::std::os::raw::c_void,
143        name: *const ::std::os::raw::c_char,
144        version: *const ::std::os::raw::c_char,
145    ) -> *mut ::std::os::raw::c_void;
146}
147extern "C" {
148    pub fn snd_dlclose(handle: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;
149}
150#[repr(C)]
151#[derive(Debug, Copy, Clone)]
152pub struct _snd_async_handler {
153    _unused: [u8; 0],
154}
155pub type snd_async_handler_t = _snd_async_handler;
156pub type snd_async_callback_t =
157    ::std::option::Option<unsafe extern "C" fn(handler: *mut snd_async_handler_t)>;
158extern "C" {
159    pub fn snd_async_add_handler(
160        handler: *mut *mut snd_async_handler_t,
161        fd: ::std::os::raw::c_int,
162        callback: snd_async_callback_t,
163        private_data: *mut ::std::os::raw::c_void,
164    ) -> ::std::os::raw::c_int;
165}
166extern "C" {
167    pub fn snd_async_del_handler(handler: *mut snd_async_handler_t) -> ::std::os::raw::c_int;
168}
169extern "C" {
170    pub fn snd_async_handler_get_fd(handler: *mut snd_async_handler_t) -> ::std::os::raw::c_int;
171}
172extern "C" {
173    pub fn snd_async_handler_get_signo(handler: *mut snd_async_handler_t) -> ::std::os::raw::c_int;
174}
175extern "C" {
176    pub fn snd_async_handler_get_callback_private(
177        handler: *mut snd_async_handler_t,
178    ) -> *mut ::std::os::raw::c_void;
179}
180#[repr(C)]
181#[derive(Debug, Copy, Clone)]
182pub struct snd_shm_area {
183    _unused: [u8; 0],
184}
185extern "C" {
186    pub fn snd_shm_area_create(
187        shmid: ::std::os::raw::c_int,
188        ptr: *mut ::std::os::raw::c_void,
189    ) -> *mut snd_shm_area;
190}
191extern "C" {
192    pub fn snd_shm_area_share(area: *mut snd_shm_area) -> *mut snd_shm_area;
193}
194extern "C" {
195    pub fn snd_shm_area_destroy(area: *mut snd_shm_area) -> ::std::os::raw::c_int;
196}
197extern "C" {
198    pub fn snd_user_file(
199        file: *const ::std::os::raw::c_char,
200        result: *mut *mut ::std::os::raw::c_char,
201    ) -> ::std::os::raw::c_int;
202}
203pub type snd_timestamp_t = timeval;
204pub type snd_htimestamp_t = timespec;
205#[repr(C)]
206#[derive(Debug, Copy, Clone)]
207pub struct _snd_input {
208    _unused: [u8; 0],
209}
210pub type snd_input_t = _snd_input;
211pub const SND_INPUT_STDIO: _snd_input_type = 0;
212pub const SND_INPUT_BUFFER: _snd_input_type = 1;
213pub type _snd_input_type = ::std::os::raw::c_uint;
214pub use self::_snd_input_type as snd_input_type_t;
215extern "C" {
216    pub fn snd_input_stdio_open(
217        inputp: *mut *mut snd_input_t,
218        file: *const ::std::os::raw::c_char,
219        mode: *const ::std::os::raw::c_char,
220    ) -> ::std::os::raw::c_int;
221}
222extern "C" {
223    pub fn snd_input_stdio_attach(
224        inputp: *mut *mut snd_input_t,
225        fp: *mut FILE,
226        _close: ::std::os::raw::c_int,
227    ) -> ::std::os::raw::c_int;
228}
229extern "C" {
230    pub fn snd_input_buffer_open(
231        inputp: *mut *mut snd_input_t,
232        buffer: *const ::std::os::raw::c_char,
233        size: isize,
234    ) -> ::std::os::raw::c_int;
235}
236extern "C" {
237    pub fn snd_input_close(input: *mut snd_input_t) -> ::std::os::raw::c_int;
238}
239extern "C" {
240    pub fn snd_input_scanf(
241        input: *mut snd_input_t,
242        format: *const ::std::os::raw::c_char,
243        ...
244    ) -> ::std::os::raw::c_int;
245}
246extern "C" {
247    pub fn snd_input_gets(
248        input: *mut snd_input_t,
249        str_: *mut ::std::os::raw::c_char,
250        size: usize,
251    ) -> *mut ::std::os::raw::c_char;
252}
253extern "C" {
254    pub fn snd_input_getc(input: *mut snd_input_t) -> ::std::os::raw::c_int;
255}
256extern "C" {
257    pub fn snd_input_ungetc(
258        input: *mut snd_input_t,
259        c: ::std::os::raw::c_int,
260    ) -> ::std::os::raw::c_int;
261}
262#[repr(C)]
263#[derive(Debug, Copy, Clone)]
264pub struct _snd_output {
265    _unused: [u8; 0],
266}
267pub type snd_output_t = _snd_output;
268pub const SND_OUTPUT_STDIO: _snd_output_type = 0;
269pub const SND_OUTPUT_BUFFER: _snd_output_type = 1;
270pub type _snd_output_type = ::std::os::raw::c_uint;
271pub use self::_snd_output_type as snd_output_type_t;
272extern "C" {
273    pub fn snd_output_stdio_open(
274        outputp: *mut *mut snd_output_t,
275        file: *const ::std::os::raw::c_char,
276        mode: *const ::std::os::raw::c_char,
277    ) -> ::std::os::raw::c_int;
278}
279extern "C" {
280    pub fn snd_output_stdio_attach(
281        outputp: *mut *mut snd_output_t,
282        fp: *mut FILE,
283        _close: ::std::os::raw::c_int,
284    ) -> ::std::os::raw::c_int;
285}
286extern "C" {
287    pub fn snd_output_buffer_open(outputp: *mut *mut snd_output_t) -> ::std::os::raw::c_int;
288}
289extern "C" {
290    pub fn snd_output_buffer_string(
291        output: *mut snd_output_t,
292        buf: *mut *mut ::std::os::raw::c_char,
293    ) -> usize;
294}
295extern "C" {
296    pub fn snd_output_close(output: *mut snd_output_t) -> ::std::os::raw::c_int;
297}
298extern "C" {
299    pub fn snd_output_printf(
300        output: *mut snd_output_t,
301        format: *const ::std::os::raw::c_char,
302        ...
303    ) -> ::std::os::raw::c_int;
304}
305extern "C" {
306    pub fn snd_output_vprintf(
307        output: *mut snd_output_t,
308        format: *const ::std::os::raw::c_char,
309        args: *mut __va_list_tag,
310    ) -> ::std::os::raw::c_int;
311}
312extern "C" {
313    pub fn snd_output_puts(
314        output: *mut snd_output_t,
315        str_: *const ::std::os::raw::c_char,
316    ) -> ::std::os::raw::c_int;
317}
318extern "C" {
319    pub fn snd_output_putc(
320        output: *mut snd_output_t,
321        c: ::std::os::raw::c_int,
322    ) -> ::std::os::raw::c_int;
323}
324extern "C" {
325    pub fn snd_output_flush(output: *mut snd_output_t) -> ::std::os::raw::c_int;
326}
327extern "C" {
328    pub fn snd_strerror(errnum: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
329}
330pub type snd_lib_error_handler_t = ::std::option::Option<
331    unsafe extern "C" fn(
332        file: *const ::std::os::raw::c_char,
333        line: ::std::os::raw::c_int,
334        function: *const ::std::os::raw::c_char,
335        err: ::std::os::raw::c_int,
336        fmt: *const ::std::os::raw::c_char,
337        ...
338    ),
339>;
340extern "C" {
341    pub fn snd_lib_error_set_handler(handler: snd_lib_error_handler_t) -> ::std::os::raw::c_int;
342}
343pub type snd_local_error_handler_t = ::std::option::Option<
344    unsafe extern "C" fn(
345        file: *const ::std::os::raw::c_char,
346        line: ::std::os::raw::c_int,
347        func: *const ::std::os::raw::c_char,
348        err: ::std::os::raw::c_int,
349        fmt: *const ::std::os::raw::c_char,
350        arg: *mut __va_list_tag,
351    ),
352>;
353extern "C" {
354    pub fn snd_lib_error_set_local(func: snd_local_error_handler_t) -> snd_local_error_handler_t;
355}
356pub const SND_CONFIG_TYPE_INTEGER: _snd_config_type = 0;
357pub const SND_CONFIG_TYPE_INTEGER64: _snd_config_type = 1;
358pub const SND_CONFIG_TYPE_REAL: _snd_config_type = 2;
359pub const SND_CONFIG_TYPE_STRING: _snd_config_type = 3;
360pub const SND_CONFIG_TYPE_POINTER: _snd_config_type = 4;
361pub const SND_CONFIG_TYPE_COMPOUND: _snd_config_type = 1024;
362pub type _snd_config_type = ::std::os::raw::c_uint;
363pub use self::_snd_config_type as snd_config_type_t;
364#[repr(C)]
365#[derive(Debug, Copy, Clone)]
366pub struct _snd_config {
367    _unused: [u8; 0],
368}
369pub type snd_config_t = _snd_config;
370#[repr(C)]
371#[derive(Debug, Copy, Clone)]
372pub struct _snd_config_iterator {
373    _unused: [u8; 0],
374}
375pub type snd_config_iterator_t = *mut _snd_config_iterator;
376#[repr(C)]
377#[derive(Debug, Copy, Clone)]
378pub struct _snd_config_update {
379    _unused: [u8; 0],
380}
381pub type snd_config_update_t = _snd_config_update;
382extern "C" {
383    pub fn snd_config_topdir() -> *const ::std::os::raw::c_char;
384}
385extern "C" {
386    pub fn snd_config_top(config: *mut *mut snd_config_t) -> ::std::os::raw::c_int;
387}
388extern "C" {
389    pub fn snd_config_load(
390        config: *mut snd_config_t,
391        in_: *mut snd_input_t,
392    ) -> ::std::os::raw::c_int;
393}
394extern "C" {
395    pub fn snd_config_load_override(
396        config: *mut snd_config_t,
397        in_: *mut snd_input_t,
398    ) -> ::std::os::raw::c_int;
399}
400extern "C" {
401    pub fn snd_config_save(
402        config: *mut snd_config_t,
403        out: *mut snd_output_t,
404    ) -> ::std::os::raw::c_int;
405}
406extern "C" {
407    pub fn snd_config_update() -> ::std::os::raw::c_int;
408}
409extern "C" {
410    pub fn snd_config_update_r(
411        top: *mut *mut snd_config_t,
412        update: *mut *mut snd_config_update_t,
413        path: *const ::std::os::raw::c_char,
414    ) -> ::std::os::raw::c_int;
415}
416extern "C" {
417    pub fn snd_config_update_free(update: *mut snd_config_update_t) -> ::std::os::raw::c_int;
418}
419extern "C" {
420    pub fn snd_config_update_free_global() -> ::std::os::raw::c_int;
421}
422extern "C" {
423    pub fn snd_config_update_ref(top: *mut *mut snd_config_t) -> ::std::os::raw::c_int;
424}
425extern "C" {
426    pub fn snd_config_ref(top: *mut snd_config_t);
427}
428extern "C" {
429    pub fn snd_config_unref(top: *mut snd_config_t);
430}
431extern "C" {
432    pub fn snd_config_search(
433        config: *mut snd_config_t,
434        key: *const ::std::os::raw::c_char,
435        result: *mut *mut snd_config_t,
436    ) -> ::std::os::raw::c_int;
437}
438extern "C" {
439    pub fn snd_config_searchv(
440        config: *mut snd_config_t,
441        result: *mut *mut snd_config_t,
442        ...
443    ) -> ::std::os::raw::c_int;
444}
445extern "C" {
446    pub fn snd_config_search_definition(
447        config: *mut snd_config_t,
448        base: *const ::std::os::raw::c_char,
449        key: *const ::std::os::raw::c_char,
450        result: *mut *mut snd_config_t,
451    ) -> ::std::os::raw::c_int;
452}
453extern "C" {
454    pub fn snd_config_expand(
455        config: *mut snd_config_t,
456        root: *mut snd_config_t,
457        args: *const ::std::os::raw::c_char,
458        private_data: *mut snd_config_t,
459        result: *mut *mut snd_config_t,
460    ) -> ::std::os::raw::c_int;
461}
462extern "C" {
463    pub fn snd_config_evaluate(
464        config: *mut snd_config_t,
465        root: *mut snd_config_t,
466        private_data: *mut snd_config_t,
467        result: *mut *mut snd_config_t,
468    ) -> ::std::os::raw::c_int;
469}
470extern "C" {
471    pub fn snd_config_add(
472        config: *mut snd_config_t,
473        child: *mut snd_config_t,
474    ) -> ::std::os::raw::c_int;
475}
476extern "C" {
477    pub fn snd_config_add_before(
478        before: *mut snd_config_t,
479        child: *mut snd_config_t,
480    ) -> ::std::os::raw::c_int;
481}
482extern "C" {
483    pub fn snd_config_add_after(
484        after: *mut snd_config_t,
485        child: *mut snd_config_t,
486    ) -> ::std::os::raw::c_int;
487}
488extern "C" {
489    pub fn snd_config_remove(config: *mut snd_config_t) -> ::std::os::raw::c_int;
490}
491extern "C" {
492    pub fn snd_config_delete(config: *mut snd_config_t) -> ::std::os::raw::c_int;
493}
494extern "C" {
495    pub fn snd_config_delete_compound_members(config: *const snd_config_t)
496        -> ::std::os::raw::c_int;
497}
498extern "C" {
499    pub fn snd_config_copy(
500        dst: *mut *mut snd_config_t,
501        src: *mut snd_config_t,
502    ) -> ::std::os::raw::c_int;
503}
504extern "C" {
505    pub fn snd_config_make(
506        config: *mut *mut snd_config_t,
507        key: *const ::std::os::raw::c_char,
508        type_: snd_config_type_t,
509    ) -> ::std::os::raw::c_int;
510}
511extern "C" {
512    pub fn snd_config_make_integer(
513        config: *mut *mut snd_config_t,
514        key: *const ::std::os::raw::c_char,
515    ) -> ::std::os::raw::c_int;
516}
517extern "C" {
518    pub fn snd_config_make_integer64(
519        config: *mut *mut snd_config_t,
520        key: *const ::std::os::raw::c_char,
521    ) -> ::std::os::raw::c_int;
522}
523extern "C" {
524    pub fn snd_config_make_real(
525        config: *mut *mut snd_config_t,
526        key: *const ::std::os::raw::c_char,
527    ) -> ::std::os::raw::c_int;
528}
529extern "C" {
530    pub fn snd_config_make_string(
531        config: *mut *mut snd_config_t,
532        key: *const ::std::os::raw::c_char,
533    ) -> ::std::os::raw::c_int;
534}
535extern "C" {
536    pub fn snd_config_make_pointer(
537        config: *mut *mut snd_config_t,
538        key: *const ::std::os::raw::c_char,
539    ) -> ::std::os::raw::c_int;
540}
541extern "C" {
542    pub fn snd_config_make_compound(
543        config: *mut *mut snd_config_t,
544        key: *const ::std::os::raw::c_char,
545        join: ::std::os::raw::c_int,
546    ) -> ::std::os::raw::c_int;
547}
548extern "C" {
549    pub fn snd_config_imake_integer(
550        config: *mut *mut snd_config_t,
551        key: *const ::std::os::raw::c_char,
552        value: ::std::os::raw::c_long,
553    ) -> ::std::os::raw::c_int;
554}
555extern "C" {
556    pub fn snd_config_imake_integer64(
557        config: *mut *mut snd_config_t,
558        key: *const ::std::os::raw::c_char,
559        value: ::std::os::raw::c_longlong,
560    ) -> ::std::os::raw::c_int;
561}
562extern "C" {
563    pub fn snd_config_imake_real(
564        config: *mut *mut snd_config_t,
565        key: *const ::std::os::raw::c_char,
566        value: f64,
567    ) -> ::std::os::raw::c_int;
568}
569extern "C" {
570    pub fn snd_config_imake_string(
571        config: *mut *mut snd_config_t,
572        key: *const ::std::os::raw::c_char,
573        ascii: *const ::std::os::raw::c_char,
574    ) -> ::std::os::raw::c_int;
575}
576extern "C" {
577    pub fn snd_config_imake_safe_string(
578        config: *mut *mut snd_config_t,
579        key: *const ::std::os::raw::c_char,
580        ascii: *const ::std::os::raw::c_char,
581    ) -> ::std::os::raw::c_int;
582}
583extern "C" {
584    pub fn snd_config_imake_pointer(
585        config: *mut *mut snd_config_t,
586        key: *const ::std::os::raw::c_char,
587        ptr: *const ::std::os::raw::c_void,
588    ) -> ::std::os::raw::c_int;
589}
590extern "C" {
591    pub fn snd_config_get_type(config: *const snd_config_t) -> snd_config_type_t;
592}
593extern "C" {
594    pub fn snd_config_is_array(config: *const snd_config_t) -> ::std::os::raw::c_int;
595}
596extern "C" {
597    pub fn snd_config_set_id(
598        config: *mut snd_config_t,
599        id: *const ::std::os::raw::c_char,
600    ) -> ::std::os::raw::c_int;
601}
602extern "C" {
603    pub fn snd_config_set_integer(
604        config: *mut snd_config_t,
605        value: ::std::os::raw::c_long,
606    ) -> ::std::os::raw::c_int;
607}
608extern "C" {
609    pub fn snd_config_set_integer64(
610        config: *mut snd_config_t,
611        value: ::std::os::raw::c_longlong,
612    ) -> ::std::os::raw::c_int;
613}
614extern "C" {
615    pub fn snd_config_set_real(config: *mut snd_config_t, value: f64) -> ::std::os::raw::c_int;
616}
617extern "C" {
618    pub fn snd_config_set_string(
619        config: *mut snd_config_t,
620        value: *const ::std::os::raw::c_char,
621    ) -> ::std::os::raw::c_int;
622}
623extern "C" {
624    pub fn snd_config_set_ascii(
625        config: *mut snd_config_t,
626        ascii: *const ::std::os::raw::c_char,
627    ) -> ::std::os::raw::c_int;
628}
629extern "C" {
630    pub fn snd_config_set_pointer(
631        config: *mut snd_config_t,
632        ptr: *const ::std::os::raw::c_void,
633    ) -> ::std::os::raw::c_int;
634}
635extern "C" {
636    pub fn snd_config_get_id(
637        config: *const snd_config_t,
638        value: *mut *const ::std::os::raw::c_char,
639    ) -> ::std::os::raw::c_int;
640}
641extern "C" {
642    pub fn snd_config_get_integer(
643        config: *const snd_config_t,
644        value: *mut ::std::os::raw::c_long,
645    ) -> ::std::os::raw::c_int;
646}
647extern "C" {
648    pub fn snd_config_get_integer64(
649        config: *const snd_config_t,
650        value: *mut ::std::os::raw::c_longlong,
651    ) -> ::std::os::raw::c_int;
652}
653extern "C" {
654    pub fn snd_config_get_real(
655        config: *const snd_config_t,
656        value: *mut f64,
657    ) -> ::std::os::raw::c_int;
658}
659extern "C" {
660    pub fn snd_config_get_ireal(
661        config: *const snd_config_t,
662        value: *mut f64,
663    ) -> ::std::os::raw::c_int;
664}
665extern "C" {
666    pub fn snd_config_get_string(
667        config: *const snd_config_t,
668        value: *mut *const ::std::os::raw::c_char,
669    ) -> ::std::os::raw::c_int;
670}
671extern "C" {
672    pub fn snd_config_get_ascii(
673        config: *const snd_config_t,
674        value: *mut *mut ::std::os::raw::c_char,
675    ) -> ::std::os::raw::c_int;
676}
677extern "C" {
678    pub fn snd_config_get_pointer(
679        config: *const snd_config_t,
680        value: *mut *const ::std::os::raw::c_void,
681    ) -> ::std::os::raw::c_int;
682}
683extern "C" {
684    pub fn snd_config_test_id(
685        config: *const snd_config_t,
686        id: *const ::std::os::raw::c_char,
687    ) -> ::std::os::raw::c_int;
688}
689extern "C" {
690    pub fn snd_config_iterator_first(node: *const snd_config_t) -> snd_config_iterator_t;
691}
692extern "C" {
693    pub fn snd_config_iterator_next(iterator: snd_config_iterator_t) -> snd_config_iterator_t;
694}
695extern "C" {
696    pub fn snd_config_iterator_end(node: *const snd_config_t) -> snd_config_iterator_t;
697}
698extern "C" {
699    pub fn snd_config_iterator_entry(iterator: snd_config_iterator_t) -> *mut snd_config_t;
700}
701extern "C" {
702    pub fn snd_config_get_bool_ascii(ascii: *const ::std::os::raw::c_char)
703        -> ::std::os::raw::c_int;
704}
705extern "C" {
706    pub fn snd_config_get_bool(conf: *const snd_config_t) -> ::std::os::raw::c_int;
707}
708extern "C" {
709    pub fn snd_config_get_ctl_iface_ascii(
710        ascii: *const ::std::os::raw::c_char,
711    ) -> ::std::os::raw::c_int;
712}
713extern "C" {
714    pub fn snd_config_get_ctl_iface(conf: *const snd_config_t) -> ::std::os::raw::c_int;
715}
716pub type snd_devname_t = snd_devname;
717#[repr(C)]
718#[derive(Debug, Copy, Clone)]
719pub struct snd_devname {
720    pub name: *mut ::std::os::raw::c_char,
721    pub comment: *mut ::std::os::raw::c_char,
722    pub next: *mut snd_devname_t,
723}
724extern "C" {
725    pub fn snd_names_list(
726        iface: *const ::std::os::raw::c_char,
727        list: *mut *mut snd_devname_t,
728    ) -> ::std::os::raw::c_int;
729}
730extern "C" {
731    pub fn snd_names_list_free(list: *mut snd_devname_t);
732}
733#[repr(C)]
734#[derive(Debug, Copy, Clone)]
735pub struct _snd_pcm_info {
736    _unused: [u8; 0],
737}
738pub type snd_pcm_info_t = _snd_pcm_info;
739#[repr(C)]
740#[derive(Debug, Copy, Clone)]
741pub struct _snd_pcm_hw_params {
742    _unused: [u8; 0],
743}
744pub type snd_pcm_hw_params_t = _snd_pcm_hw_params;
745#[repr(C)]
746#[derive(Debug, Copy, Clone)]
747pub struct _snd_pcm_sw_params {
748    _unused: [u8; 0],
749}
750pub type snd_pcm_sw_params_t = _snd_pcm_sw_params;
751#[repr(C)]
752#[derive(Debug, Copy, Clone)]
753pub struct _snd_pcm_status {
754    _unused: [u8; 0],
755}
756pub type snd_pcm_status_t = _snd_pcm_status;
757#[repr(C)]
758#[derive(Debug, Copy, Clone)]
759pub struct _snd_pcm_access_mask {
760    _unused: [u8; 0],
761}
762pub type snd_pcm_access_mask_t = _snd_pcm_access_mask;
763#[repr(C)]
764#[derive(Debug, Copy, Clone)]
765pub struct _snd_pcm_format_mask {
766    _unused: [u8; 0],
767}
768pub type snd_pcm_format_mask_t = _snd_pcm_format_mask;
769#[repr(C)]
770#[derive(Debug, Copy, Clone)]
771pub struct _snd_pcm_subformat_mask {
772    _unused: [u8; 0],
773}
774pub type snd_pcm_subformat_mask_t = _snd_pcm_subformat_mask;
775pub const SND_PCM_CLASS_GENERIC: _snd_pcm_class = 0;
776pub const SND_PCM_CLASS_MULTI: _snd_pcm_class = 1;
777pub const SND_PCM_CLASS_MODEM: _snd_pcm_class = 2;
778pub const SND_PCM_CLASS_DIGITIZER: _snd_pcm_class = 3;
779pub const SND_PCM_CLASS_LAST: _snd_pcm_class = 3;
780pub type _snd_pcm_class = ::std::os::raw::c_uint;
781pub use self::_snd_pcm_class as snd_pcm_class_t;
782pub const SND_PCM_SUBCLASS_GENERIC_MIX: _snd_pcm_subclass = 0;
783pub const SND_PCM_SUBCLASS_MULTI_MIX: _snd_pcm_subclass = 1;
784pub const SND_PCM_SUBCLASS_LAST: _snd_pcm_subclass = 1;
785pub type _snd_pcm_subclass = ::std::os::raw::c_uint;
786pub use self::_snd_pcm_subclass as snd_pcm_subclass_t;
787pub const SND_PCM_STREAM_PLAYBACK: _snd_pcm_stream = 0;
788pub const SND_PCM_STREAM_CAPTURE: _snd_pcm_stream = 1;
789pub const SND_PCM_STREAM_LAST: _snd_pcm_stream = 1;
790pub type _snd_pcm_stream = ::std::os::raw::c_uint;
791pub use self::_snd_pcm_stream as snd_pcm_stream_t;
792pub const SND_PCM_ACCESS_MMAP_INTERLEAVED: _snd_pcm_access = 0;
793pub const SND_PCM_ACCESS_MMAP_NONINTERLEAVED: _snd_pcm_access = 1;
794pub const SND_PCM_ACCESS_MMAP_COMPLEX: _snd_pcm_access = 2;
795pub const SND_PCM_ACCESS_RW_INTERLEAVED: _snd_pcm_access = 3;
796pub const SND_PCM_ACCESS_RW_NONINTERLEAVED: _snd_pcm_access = 4;
797pub const SND_PCM_ACCESS_LAST: _snd_pcm_access = 4;
798pub type _snd_pcm_access = ::std::os::raw::c_uint;
799pub use self::_snd_pcm_access as snd_pcm_access_t;
800pub const SND_PCM_FORMAT_UNKNOWN: _snd_pcm_format = -1;
801pub const SND_PCM_FORMAT_S8: _snd_pcm_format = 0;
802pub const SND_PCM_FORMAT_U8: _snd_pcm_format = 1;
803pub const SND_PCM_FORMAT_S16_LE: _snd_pcm_format = 2;
804pub const SND_PCM_FORMAT_S16_BE: _snd_pcm_format = 3;
805pub const SND_PCM_FORMAT_U16_LE: _snd_pcm_format = 4;
806pub const SND_PCM_FORMAT_U16_BE: _snd_pcm_format = 5;
807pub const SND_PCM_FORMAT_S24_LE: _snd_pcm_format = 6;
808pub const SND_PCM_FORMAT_S24_BE: _snd_pcm_format = 7;
809pub const SND_PCM_FORMAT_U24_LE: _snd_pcm_format = 8;
810pub const SND_PCM_FORMAT_U24_BE: _snd_pcm_format = 9;
811pub const SND_PCM_FORMAT_S32_LE: _snd_pcm_format = 10;
812pub const SND_PCM_FORMAT_S32_BE: _snd_pcm_format = 11;
813pub const SND_PCM_FORMAT_U32_LE: _snd_pcm_format = 12;
814pub const SND_PCM_FORMAT_U32_BE: _snd_pcm_format = 13;
815pub const SND_PCM_FORMAT_FLOAT_LE: _snd_pcm_format = 14;
816pub const SND_PCM_FORMAT_FLOAT_BE: _snd_pcm_format = 15;
817pub const SND_PCM_FORMAT_FLOAT64_LE: _snd_pcm_format = 16;
818pub const SND_PCM_FORMAT_FLOAT64_BE: _snd_pcm_format = 17;
819pub const SND_PCM_FORMAT_IEC958_SUBFRAME_LE: _snd_pcm_format = 18;
820pub const SND_PCM_FORMAT_IEC958_SUBFRAME_BE: _snd_pcm_format = 19;
821pub const SND_PCM_FORMAT_MU_LAW: _snd_pcm_format = 20;
822pub const SND_PCM_FORMAT_A_LAW: _snd_pcm_format = 21;
823pub const SND_PCM_FORMAT_IMA_ADPCM: _snd_pcm_format = 22;
824pub const SND_PCM_FORMAT_MPEG: _snd_pcm_format = 23;
825pub const SND_PCM_FORMAT_GSM: _snd_pcm_format = 24;
826pub const SND_PCM_FORMAT_S20_LE: _snd_pcm_format = 25;
827pub const SND_PCM_FORMAT_S20_BE: _snd_pcm_format = 26;
828pub const SND_PCM_FORMAT_U20_LE: _snd_pcm_format = 27;
829pub const SND_PCM_FORMAT_U20_BE: _snd_pcm_format = 28;
830pub const SND_PCM_FORMAT_SPECIAL: _snd_pcm_format = 31;
831pub const SND_PCM_FORMAT_S24_3LE: _snd_pcm_format = 32;
832pub const SND_PCM_FORMAT_S24_3BE: _snd_pcm_format = 33;
833pub const SND_PCM_FORMAT_U24_3LE: _snd_pcm_format = 34;
834pub const SND_PCM_FORMAT_U24_3BE: _snd_pcm_format = 35;
835pub const SND_PCM_FORMAT_S20_3LE: _snd_pcm_format = 36;
836pub const SND_PCM_FORMAT_S20_3BE: _snd_pcm_format = 37;
837pub const SND_PCM_FORMAT_U20_3LE: _snd_pcm_format = 38;
838pub const SND_PCM_FORMAT_U20_3BE: _snd_pcm_format = 39;
839pub const SND_PCM_FORMAT_S18_3LE: _snd_pcm_format = 40;
840pub const SND_PCM_FORMAT_S18_3BE: _snd_pcm_format = 41;
841pub const SND_PCM_FORMAT_U18_3LE: _snd_pcm_format = 42;
842pub const SND_PCM_FORMAT_U18_3BE: _snd_pcm_format = 43;
843pub const SND_PCM_FORMAT_G723_24: _snd_pcm_format = 44;
844pub const SND_PCM_FORMAT_G723_24_1B: _snd_pcm_format = 45;
845pub const SND_PCM_FORMAT_G723_40: _snd_pcm_format = 46;
846pub const SND_PCM_FORMAT_G723_40_1B: _snd_pcm_format = 47;
847pub const SND_PCM_FORMAT_DSD_U8: _snd_pcm_format = 48;
848pub const SND_PCM_FORMAT_DSD_U16_LE: _snd_pcm_format = 49;
849pub const SND_PCM_FORMAT_DSD_U32_LE: _snd_pcm_format = 50;
850pub const SND_PCM_FORMAT_DSD_U16_BE: _snd_pcm_format = 51;
851pub const SND_PCM_FORMAT_DSD_U32_BE: _snd_pcm_format = 52;
852pub const SND_PCM_FORMAT_LAST: _snd_pcm_format = 52;
853pub const SND_PCM_FORMAT_S16: _snd_pcm_format = 2;
854pub const SND_PCM_FORMAT_U16: _snd_pcm_format = 4;
855pub const SND_PCM_FORMAT_S24: _snd_pcm_format = 6;
856pub const SND_PCM_FORMAT_U24: _snd_pcm_format = 8;
857pub const SND_PCM_FORMAT_S32: _snd_pcm_format = 10;
858pub const SND_PCM_FORMAT_U32: _snd_pcm_format = 12;
859pub const SND_PCM_FORMAT_FLOAT: _snd_pcm_format = 14;
860pub const SND_PCM_FORMAT_FLOAT64: _snd_pcm_format = 16;
861pub const SND_PCM_FORMAT_IEC958_SUBFRAME: _snd_pcm_format = 18;
862pub const SND_PCM_FORMAT_S20: _snd_pcm_format = 25;
863pub const SND_PCM_FORMAT_U20: _snd_pcm_format = 27;
864pub type _snd_pcm_format = ::std::os::raw::c_int;
865pub use self::_snd_pcm_format as snd_pcm_format_t;
866pub const SND_PCM_SUBFORMAT_STD: _snd_pcm_subformat = 0;
867pub const SND_PCM_SUBFORMAT_LAST: _snd_pcm_subformat = 0;
868pub type _snd_pcm_subformat = ::std::os::raw::c_uint;
869pub use self::_snd_pcm_subformat as snd_pcm_subformat_t;
870pub const SND_PCM_STATE_OPEN: _snd_pcm_state = 0;
871pub const SND_PCM_STATE_SETUP: _snd_pcm_state = 1;
872pub const SND_PCM_STATE_PREPARED: _snd_pcm_state = 2;
873pub const SND_PCM_STATE_RUNNING: _snd_pcm_state = 3;
874pub const SND_PCM_STATE_XRUN: _snd_pcm_state = 4;
875pub const SND_PCM_STATE_DRAINING: _snd_pcm_state = 5;
876pub const SND_PCM_STATE_PAUSED: _snd_pcm_state = 6;
877pub const SND_PCM_STATE_SUSPENDED: _snd_pcm_state = 7;
878pub const SND_PCM_STATE_DISCONNECTED: _snd_pcm_state = 8;
879pub const SND_PCM_STATE_LAST: _snd_pcm_state = 8;
880pub const SND_PCM_STATE_PRIVATE1: _snd_pcm_state = 1024;
881pub type _snd_pcm_state = ::std::os::raw::c_uint;
882pub use self::_snd_pcm_state as snd_pcm_state_t;
883pub const SND_PCM_START_DATA: _snd_pcm_start = 0;
884pub const SND_PCM_START_EXPLICIT: _snd_pcm_start = 1;
885pub const SND_PCM_START_LAST: _snd_pcm_start = 1;
886pub type _snd_pcm_start = ::std::os::raw::c_uint;
887pub use self::_snd_pcm_start as snd_pcm_start_t;
888pub const SND_PCM_XRUN_NONE: _snd_pcm_xrun = 0;
889pub const SND_PCM_XRUN_STOP: _snd_pcm_xrun = 1;
890pub const SND_PCM_XRUN_LAST: _snd_pcm_xrun = 1;
891pub type _snd_pcm_xrun = ::std::os::raw::c_uint;
892pub use self::_snd_pcm_xrun as snd_pcm_xrun_t;
893pub const SND_PCM_TSTAMP_NONE: _snd_pcm_tstamp = 0;
894pub const SND_PCM_TSTAMP_ENABLE: _snd_pcm_tstamp = 1;
895pub const SND_PCM_TSTAMP_MMAP: _snd_pcm_tstamp = 1;
896pub const SND_PCM_TSTAMP_LAST: _snd_pcm_tstamp = 1;
897pub type _snd_pcm_tstamp = ::std::os::raw::c_uint;
898pub use self::_snd_pcm_tstamp as snd_pcm_tstamp_t;
899pub const SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY: _snd_pcm_tstamp_type = 0;
900pub const SND_PCM_TSTAMP_TYPE_MONOTONIC: _snd_pcm_tstamp_type = 1;
901pub const SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW: _snd_pcm_tstamp_type = 2;
902pub const SND_PCM_TSTAMP_TYPE_LAST: _snd_pcm_tstamp_type = 2;
903pub type _snd_pcm_tstamp_type = ::std::os::raw::c_uint;
904pub use self::_snd_pcm_tstamp_type as snd_pcm_tstamp_type_t;
905#[repr(C)]
906#[repr(align(4))]
907#[derive(Debug, Copy, Clone)]
908pub struct _snd_pcm_audio_tstamp_config {
909    pub _bitfield_align_1: [u8; 0],
910    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
911    pub __bindgen_padding_0: [u8; 3usize],
912}
913impl _snd_pcm_audio_tstamp_config {
914    #[inline]
915    pub fn type_requested(&self) -> ::std::os::raw::c_uint {
916        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u32) }
917    }
918    #[inline]
919    pub fn set_type_requested(&mut self, val: ::std::os::raw::c_uint) {
920        unsafe {
921            let val: u32 = ::std::mem::transmute(val);
922            self._bitfield_1.set(0usize, 4u8, val as u64)
923        }
924    }
925    #[inline]
926    pub fn report_delay(&self) -> ::std::os::raw::c_uint {
927        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
928    }
929    #[inline]
930    pub fn set_report_delay(&mut self, val: ::std::os::raw::c_uint) {
931        unsafe {
932            let val: u32 = ::std::mem::transmute(val);
933            self._bitfield_1.set(4usize, 1u8, val as u64)
934        }
935    }
936    #[inline]
937    pub fn new_bitfield_1(
938        type_requested: ::std::os::raw::c_uint,
939        report_delay: ::std::os::raw::c_uint,
940    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
941        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
942        __bindgen_bitfield_unit.set(0usize, 4u8, {
943            let type_requested: u32 = unsafe { ::std::mem::transmute(type_requested) };
944            type_requested as u64
945        });
946        __bindgen_bitfield_unit.set(4usize, 1u8, {
947            let report_delay: u32 = unsafe { ::std::mem::transmute(report_delay) };
948            report_delay as u64
949        });
950        __bindgen_bitfield_unit
951    }
952}
953pub type snd_pcm_audio_tstamp_config_t = _snd_pcm_audio_tstamp_config;
954#[repr(C)]
955#[derive(Debug, Copy, Clone)]
956pub struct _snd_pcm_audio_tstamp_report {
957    pub _bitfield_align_1: [u8; 0],
958    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
959    pub accuracy: ::std::os::raw::c_uint,
960}
961impl _snd_pcm_audio_tstamp_report {
962    #[inline]
963    pub fn valid(&self) -> ::std::os::raw::c_uint {
964        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
965    }
966    #[inline]
967    pub fn set_valid(&mut self, val: ::std::os::raw::c_uint) {
968        unsafe {
969            let val: u32 = ::std::mem::transmute(val);
970            self._bitfield_1.set(0usize, 1u8, val as u64)
971        }
972    }
973    #[inline]
974    pub fn actual_type(&self) -> ::std::os::raw::c_uint {
975        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 4u8) as u32) }
976    }
977    #[inline]
978    pub fn set_actual_type(&mut self, val: ::std::os::raw::c_uint) {
979        unsafe {
980            let val: u32 = ::std::mem::transmute(val);
981            self._bitfield_1.set(1usize, 4u8, val as u64)
982        }
983    }
984    #[inline]
985    pub fn accuracy_report(&self) -> ::std::os::raw::c_uint {
986        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
987    }
988    #[inline]
989    pub fn set_accuracy_report(&mut self, val: ::std::os::raw::c_uint) {
990        unsafe {
991            let val: u32 = ::std::mem::transmute(val);
992            self._bitfield_1.set(5usize, 1u8, val as u64)
993        }
994    }
995    #[inline]
996    pub fn new_bitfield_1(
997        valid: ::std::os::raw::c_uint,
998        actual_type: ::std::os::raw::c_uint,
999        accuracy_report: ::std::os::raw::c_uint,
1000    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
1001        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
1002        __bindgen_bitfield_unit.set(0usize, 1u8, {
1003            let valid: u32 = unsafe { ::std::mem::transmute(valid) };
1004            valid as u64
1005        });
1006        __bindgen_bitfield_unit.set(1usize, 4u8, {
1007            let actual_type: u32 = unsafe { ::std::mem::transmute(actual_type) };
1008            actual_type as u64
1009        });
1010        __bindgen_bitfield_unit.set(5usize, 1u8, {
1011            let accuracy_report: u32 = unsafe { ::std::mem::transmute(accuracy_report) };
1012            accuracy_report as u64
1013        });
1014        __bindgen_bitfield_unit
1015    }
1016}
1017pub type snd_pcm_audio_tstamp_report_t = _snd_pcm_audio_tstamp_report;
1018pub type snd_pcm_uframes_t = ::std::os::raw::c_ulong;
1019pub type snd_pcm_sframes_t = ::std::os::raw::c_long;
1020#[repr(C)]
1021#[derive(Debug, Copy, Clone)]
1022pub struct _snd_pcm {
1023    _unused: [u8; 0],
1024}
1025pub type snd_pcm_t = _snd_pcm;
1026pub const SND_PCM_TYPE_HW: _snd_pcm_type = 0;
1027pub const SND_PCM_TYPE_HOOKS: _snd_pcm_type = 1;
1028pub const SND_PCM_TYPE_MULTI: _snd_pcm_type = 2;
1029pub const SND_PCM_TYPE_FILE: _snd_pcm_type = 3;
1030pub const SND_PCM_TYPE_NULL: _snd_pcm_type = 4;
1031pub const SND_PCM_TYPE_SHM: _snd_pcm_type = 5;
1032pub const SND_PCM_TYPE_INET: _snd_pcm_type = 6;
1033pub const SND_PCM_TYPE_COPY: _snd_pcm_type = 7;
1034pub const SND_PCM_TYPE_LINEAR: _snd_pcm_type = 8;
1035pub const SND_PCM_TYPE_ALAW: _snd_pcm_type = 9;
1036pub const SND_PCM_TYPE_MULAW: _snd_pcm_type = 10;
1037pub const SND_PCM_TYPE_ADPCM: _snd_pcm_type = 11;
1038pub const SND_PCM_TYPE_RATE: _snd_pcm_type = 12;
1039pub const SND_PCM_TYPE_ROUTE: _snd_pcm_type = 13;
1040pub const SND_PCM_TYPE_PLUG: _snd_pcm_type = 14;
1041pub const SND_PCM_TYPE_SHARE: _snd_pcm_type = 15;
1042pub const SND_PCM_TYPE_METER: _snd_pcm_type = 16;
1043pub const SND_PCM_TYPE_MIX: _snd_pcm_type = 17;
1044pub const SND_PCM_TYPE_DROUTE: _snd_pcm_type = 18;
1045pub const SND_PCM_TYPE_LBSERVER: _snd_pcm_type = 19;
1046pub const SND_PCM_TYPE_LINEAR_FLOAT: _snd_pcm_type = 20;
1047pub const SND_PCM_TYPE_LADSPA: _snd_pcm_type = 21;
1048pub const SND_PCM_TYPE_DMIX: _snd_pcm_type = 22;
1049pub const SND_PCM_TYPE_JACK: _snd_pcm_type = 23;
1050pub const SND_PCM_TYPE_DSNOOP: _snd_pcm_type = 24;
1051pub const SND_PCM_TYPE_DSHARE: _snd_pcm_type = 25;
1052pub const SND_PCM_TYPE_IEC958: _snd_pcm_type = 26;
1053pub const SND_PCM_TYPE_SOFTVOL: _snd_pcm_type = 27;
1054pub const SND_PCM_TYPE_IOPLUG: _snd_pcm_type = 28;
1055pub const SND_PCM_TYPE_EXTPLUG: _snd_pcm_type = 29;
1056pub const SND_PCM_TYPE_MMAP_EMUL: _snd_pcm_type = 30;
1057pub const SND_PCM_TYPE_LAST: _snd_pcm_type = 30;
1058pub type _snd_pcm_type = ::std::os::raw::c_uint;
1059pub use self::_snd_pcm_type as snd_pcm_type_t;
1060#[repr(C)]
1061#[derive(Debug, Copy, Clone)]
1062pub struct _snd_pcm_channel_area {
1063    pub addr: *mut ::std::os::raw::c_void,
1064    pub first: ::std::os::raw::c_uint,
1065    pub step: ::std::os::raw::c_uint,
1066}
1067pub type snd_pcm_channel_area_t = _snd_pcm_channel_area;
1068#[repr(C)]
1069#[derive(Copy, Clone)]
1070pub union _snd_pcm_sync_id {
1071    pub id: [::std::os::raw::c_uchar; 16usize],
1072    pub id16: [::std::os::raw::c_ushort; 8usize],
1073    pub id32: [::std::os::raw::c_uint; 4usize],
1074}
1075pub type snd_pcm_sync_id_t = _snd_pcm_sync_id;
1076#[repr(C)]
1077#[derive(Debug, Copy, Clone)]
1078pub struct _snd_pcm_scope {
1079    _unused: [u8; 0],
1080}
1081pub type snd_pcm_scope_t = _snd_pcm_scope;
1082extern "C" {
1083    pub fn snd_pcm_open(
1084        pcm: *mut *mut snd_pcm_t,
1085        name: *const ::std::os::raw::c_char,
1086        stream: snd_pcm_stream_t,
1087        mode: ::std::os::raw::c_int,
1088    ) -> ::std::os::raw::c_int;
1089}
1090extern "C" {
1091    pub fn snd_pcm_open_lconf(
1092        pcm: *mut *mut snd_pcm_t,
1093        name: *const ::std::os::raw::c_char,
1094        stream: snd_pcm_stream_t,
1095        mode: ::std::os::raw::c_int,
1096        lconf: *mut snd_config_t,
1097    ) -> ::std::os::raw::c_int;
1098}
1099extern "C" {
1100    pub fn snd_pcm_open_fallback(
1101        pcm: *mut *mut snd_pcm_t,
1102        root: *mut snd_config_t,
1103        name: *const ::std::os::raw::c_char,
1104        orig_name: *const ::std::os::raw::c_char,
1105        stream: snd_pcm_stream_t,
1106        mode: ::std::os::raw::c_int,
1107    ) -> ::std::os::raw::c_int;
1108}
1109extern "C" {
1110    pub fn snd_pcm_close(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1111}
1112extern "C" {
1113    pub fn snd_pcm_name(pcm: *mut snd_pcm_t) -> *const ::std::os::raw::c_char;
1114}
1115extern "C" {
1116    pub fn snd_pcm_type(pcm: *mut snd_pcm_t) -> snd_pcm_type_t;
1117}
1118extern "C" {
1119    pub fn snd_pcm_stream(pcm: *mut snd_pcm_t) -> snd_pcm_stream_t;
1120}
1121extern "C" {
1122    pub fn snd_pcm_poll_descriptors_count(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1123}
1124extern "C" {
1125    pub fn snd_pcm_poll_descriptors(
1126        pcm: *mut snd_pcm_t,
1127        pfds: *mut pollfd,
1128        space: ::std::os::raw::c_uint,
1129    ) -> ::std::os::raw::c_int;
1130}
1131extern "C" {
1132    pub fn snd_pcm_poll_descriptors_revents(
1133        pcm: *mut snd_pcm_t,
1134        pfds: *mut pollfd,
1135        nfds: ::std::os::raw::c_uint,
1136        revents: *mut ::std::os::raw::c_ushort,
1137    ) -> ::std::os::raw::c_int;
1138}
1139extern "C" {
1140    pub fn snd_pcm_nonblock(
1141        pcm: *mut snd_pcm_t,
1142        nonblock: ::std::os::raw::c_int,
1143    ) -> ::std::os::raw::c_int;
1144}
1145extern "C" {
1146    pub fn snd_async_add_pcm_handler(
1147        handler: *mut *mut snd_async_handler_t,
1148        pcm: *mut snd_pcm_t,
1149        callback: snd_async_callback_t,
1150        private_data: *mut ::std::os::raw::c_void,
1151    ) -> ::std::os::raw::c_int;
1152}
1153extern "C" {
1154    pub fn snd_async_handler_get_pcm(handler: *mut snd_async_handler_t) -> *mut snd_pcm_t;
1155}
1156extern "C" {
1157    pub fn snd_pcm_info(pcm: *mut snd_pcm_t, info: *mut snd_pcm_info_t) -> ::std::os::raw::c_int;
1158}
1159extern "C" {
1160    pub fn snd_pcm_hw_params_current(
1161        pcm: *mut snd_pcm_t,
1162        params: *mut snd_pcm_hw_params_t,
1163    ) -> ::std::os::raw::c_int;
1164}
1165extern "C" {
1166    pub fn snd_pcm_hw_params(
1167        pcm: *mut snd_pcm_t,
1168        params: *mut snd_pcm_hw_params_t,
1169    ) -> ::std::os::raw::c_int;
1170}
1171extern "C" {
1172    pub fn snd_pcm_hw_free(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1173}
1174extern "C" {
1175    pub fn snd_pcm_sw_params_current(
1176        pcm: *mut snd_pcm_t,
1177        params: *mut snd_pcm_sw_params_t,
1178    ) -> ::std::os::raw::c_int;
1179}
1180extern "C" {
1181    pub fn snd_pcm_sw_params(
1182        pcm: *mut snd_pcm_t,
1183        params: *mut snd_pcm_sw_params_t,
1184    ) -> ::std::os::raw::c_int;
1185}
1186extern "C" {
1187    pub fn snd_pcm_prepare(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1188}
1189extern "C" {
1190    pub fn snd_pcm_reset(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1191}
1192extern "C" {
1193    pub fn snd_pcm_status(
1194        pcm: *mut snd_pcm_t,
1195        status: *mut snd_pcm_status_t,
1196    ) -> ::std::os::raw::c_int;
1197}
1198extern "C" {
1199    pub fn snd_pcm_start(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1200}
1201extern "C" {
1202    pub fn snd_pcm_drop(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1203}
1204extern "C" {
1205    pub fn snd_pcm_drain(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1206}
1207extern "C" {
1208    pub fn snd_pcm_pause(
1209        pcm: *mut snd_pcm_t,
1210        enable: ::std::os::raw::c_int,
1211    ) -> ::std::os::raw::c_int;
1212}
1213extern "C" {
1214    pub fn snd_pcm_state(pcm: *mut snd_pcm_t) -> snd_pcm_state_t;
1215}
1216extern "C" {
1217    pub fn snd_pcm_hwsync(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1218}
1219extern "C" {
1220    pub fn snd_pcm_delay(
1221        pcm: *mut snd_pcm_t,
1222        delayp: *mut snd_pcm_sframes_t,
1223    ) -> ::std::os::raw::c_int;
1224}
1225extern "C" {
1226    pub fn snd_pcm_resume(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1227}
1228extern "C" {
1229    pub fn snd_pcm_htimestamp(
1230        pcm: *mut snd_pcm_t,
1231        avail: *mut snd_pcm_uframes_t,
1232        tstamp: *mut snd_htimestamp_t,
1233    ) -> ::std::os::raw::c_int;
1234}
1235extern "C" {
1236    pub fn snd_pcm_avail(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
1237}
1238extern "C" {
1239    pub fn snd_pcm_avail_update(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
1240}
1241extern "C" {
1242    pub fn snd_pcm_avail_delay(
1243        pcm: *mut snd_pcm_t,
1244        availp: *mut snd_pcm_sframes_t,
1245        delayp: *mut snd_pcm_sframes_t,
1246    ) -> ::std::os::raw::c_int;
1247}
1248extern "C" {
1249    pub fn snd_pcm_rewindable(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
1250}
1251extern "C" {
1252    pub fn snd_pcm_rewind(pcm: *mut snd_pcm_t, frames: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
1253}
1254extern "C" {
1255    pub fn snd_pcm_forwardable(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
1256}
1257extern "C" {
1258    pub fn snd_pcm_forward(pcm: *mut snd_pcm_t, frames: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
1259}
1260extern "C" {
1261    pub fn snd_pcm_writei(
1262        pcm: *mut snd_pcm_t,
1263        buffer: *const ::std::os::raw::c_void,
1264        size: snd_pcm_uframes_t,
1265    ) -> snd_pcm_sframes_t;
1266}
1267extern "C" {
1268    pub fn snd_pcm_readi(
1269        pcm: *mut snd_pcm_t,
1270        buffer: *mut ::std::os::raw::c_void,
1271        size: snd_pcm_uframes_t,
1272    ) -> snd_pcm_sframes_t;
1273}
1274extern "C" {
1275    pub fn snd_pcm_writen(
1276        pcm: *mut snd_pcm_t,
1277        bufs: *mut *mut ::std::os::raw::c_void,
1278        size: snd_pcm_uframes_t,
1279    ) -> snd_pcm_sframes_t;
1280}
1281extern "C" {
1282    pub fn snd_pcm_readn(
1283        pcm: *mut snd_pcm_t,
1284        bufs: *mut *mut ::std::os::raw::c_void,
1285        size: snd_pcm_uframes_t,
1286    ) -> snd_pcm_sframes_t;
1287}
1288extern "C" {
1289    pub fn snd_pcm_wait(
1290        pcm: *mut snd_pcm_t,
1291        timeout: ::std::os::raw::c_int,
1292    ) -> ::std::os::raw::c_int;
1293}
1294extern "C" {
1295    pub fn snd_pcm_link(pcm1: *mut snd_pcm_t, pcm2: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1296}
1297extern "C" {
1298    pub fn snd_pcm_unlink(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
1299}
1300pub const SND_CHMAP_TYPE_NONE: snd_pcm_chmap_type = 0;
1301pub const SND_CHMAP_TYPE_FIXED: snd_pcm_chmap_type = 1;
1302pub const SND_CHMAP_TYPE_VAR: snd_pcm_chmap_type = 2;
1303pub const SND_CHMAP_TYPE_PAIRED: snd_pcm_chmap_type = 3;
1304pub const SND_CHMAP_TYPE_LAST: snd_pcm_chmap_type = 3;
1305pub type snd_pcm_chmap_type = ::std::os::raw::c_uint;
1306pub const SND_CHMAP_UNKNOWN: snd_pcm_chmap_position = 0;
1307pub const SND_CHMAP_NA: snd_pcm_chmap_position = 1;
1308pub const SND_CHMAP_MONO: snd_pcm_chmap_position = 2;
1309pub const SND_CHMAP_FL: snd_pcm_chmap_position = 3;
1310pub const SND_CHMAP_FR: snd_pcm_chmap_position = 4;
1311pub const SND_CHMAP_RL: snd_pcm_chmap_position = 5;
1312pub const SND_CHMAP_RR: snd_pcm_chmap_position = 6;
1313pub const SND_CHMAP_FC: snd_pcm_chmap_position = 7;
1314pub const SND_CHMAP_LFE: snd_pcm_chmap_position = 8;
1315pub const SND_CHMAP_SL: snd_pcm_chmap_position = 9;
1316pub const SND_CHMAP_SR: snd_pcm_chmap_position = 10;
1317pub const SND_CHMAP_RC: snd_pcm_chmap_position = 11;
1318pub const SND_CHMAP_FLC: snd_pcm_chmap_position = 12;
1319pub const SND_CHMAP_FRC: snd_pcm_chmap_position = 13;
1320pub const SND_CHMAP_RLC: snd_pcm_chmap_position = 14;
1321pub const SND_CHMAP_RRC: snd_pcm_chmap_position = 15;
1322pub const SND_CHMAP_FLW: snd_pcm_chmap_position = 16;
1323pub const SND_CHMAP_FRW: snd_pcm_chmap_position = 17;
1324pub const SND_CHMAP_FLH: snd_pcm_chmap_position = 18;
1325pub const SND_CHMAP_FCH: snd_pcm_chmap_position = 19;
1326pub const SND_CHMAP_FRH: snd_pcm_chmap_position = 20;
1327pub const SND_CHMAP_TC: snd_pcm_chmap_position = 21;
1328pub const SND_CHMAP_TFL: snd_pcm_chmap_position = 22;
1329pub const SND_CHMAP_TFR: snd_pcm_chmap_position = 23;
1330pub const SND_CHMAP_TFC: snd_pcm_chmap_position = 24;
1331pub const SND_CHMAP_TRL: snd_pcm_chmap_position = 25;
1332pub const SND_CHMAP_TRR: snd_pcm_chmap_position = 26;
1333pub const SND_CHMAP_TRC: snd_pcm_chmap_position = 27;
1334pub const SND_CHMAP_TFLC: snd_pcm_chmap_position = 28;
1335pub const SND_CHMAP_TFRC: snd_pcm_chmap_position = 29;
1336pub const SND_CHMAP_TSL: snd_pcm_chmap_position = 30;
1337pub const SND_CHMAP_TSR: snd_pcm_chmap_position = 31;
1338pub const SND_CHMAP_LLFE: snd_pcm_chmap_position = 32;
1339pub const SND_CHMAP_RLFE: snd_pcm_chmap_position = 33;
1340pub const SND_CHMAP_BC: snd_pcm_chmap_position = 34;
1341pub const SND_CHMAP_BLC: snd_pcm_chmap_position = 35;
1342pub const SND_CHMAP_BRC: snd_pcm_chmap_position = 36;
1343pub const SND_CHMAP_LAST: snd_pcm_chmap_position = 36;
1344pub type snd_pcm_chmap_position = ::std::os::raw::c_uint;
1345#[repr(C)]
1346#[derive(Debug)]
1347pub struct snd_pcm_chmap {
1348    pub channels: ::std::os::raw::c_uint,
1349    pub pos: __IncompleteArrayField<::std::os::raw::c_uint>,
1350}
1351pub type snd_pcm_chmap_t = snd_pcm_chmap;
1352#[repr(C)]
1353#[derive(Debug)]
1354pub struct snd_pcm_chmap_query {
1355    pub type_: snd_pcm_chmap_type,
1356    pub map: snd_pcm_chmap_t,
1357}
1358pub type snd_pcm_chmap_query_t = snd_pcm_chmap_query;
1359extern "C" {
1360    pub fn snd_pcm_query_chmaps(pcm: *mut snd_pcm_t) -> *mut *mut snd_pcm_chmap_query_t;
1361}
1362extern "C" {
1363    pub fn snd_pcm_query_chmaps_from_hw(
1364        card: ::std::os::raw::c_int,
1365        dev: ::std::os::raw::c_int,
1366        subdev: ::std::os::raw::c_int,
1367        stream: snd_pcm_stream_t,
1368    ) -> *mut *mut snd_pcm_chmap_query_t;
1369}
1370extern "C" {
1371    pub fn snd_pcm_free_chmaps(maps: *mut *mut snd_pcm_chmap_query_t);
1372}
1373extern "C" {
1374    pub fn snd_pcm_get_chmap(pcm: *mut snd_pcm_t) -> *mut snd_pcm_chmap_t;
1375}
1376extern "C" {
1377    pub fn snd_pcm_set_chmap(
1378        pcm: *mut snd_pcm_t,
1379        map: *const snd_pcm_chmap_t,
1380    ) -> ::std::os::raw::c_int;
1381}
1382extern "C" {
1383    pub fn snd_pcm_chmap_type_name(val: snd_pcm_chmap_type) -> *const ::std::os::raw::c_char;
1384}
1385extern "C" {
1386    pub fn snd_pcm_chmap_name(val: snd_pcm_chmap_position) -> *const ::std::os::raw::c_char;
1387}
1388extern "C" {
1389    pub fn snd_pcm_chmap_long_name(val: snd_pcm_chmap_position) -> *const ::std::os::raw::c_char;
1390}
1391extern "C" {
1392    pub fn snd_pcm_chmap_print(
1393        map: *const snd_pcm_chmap_t,
1394        maxlen: usize,
1395        buf: *mut ::std::os::raw::c_char,
1396    ) -> ::std::os::raw::c_int;
1397}
1398extern "C" {
1399    pub fn snd_pcm_chmap_from_string(str_: *const ::std::os::raw::c_char)
1400        -> ::std::os::raw::c_uint;
1401}
1402extern "C" {
1403    pub fn snd_pcm_chmap_parse_string(str_: *const ::std::os::raw::c_char) -> *mut snd_pcm_chmap_t;
1404}
1405extern "C" {
1406    pub fn snd_pcm_recover(
1407        pcm: *mut snd_pcm_t,
1408        err: ::std::os::raw::c_int,
1409        silent: ::std::os::raw::c_int,
1410    ) -> ::std::os::raw::c_int;
1411}
1412extern "C" {
1413    pub fn snd_pcm_set_params(
1414        pcm: *mut snd_pcm_t,
1415        format: snd_pcm_format_t,
1416        access: snd_pcm_access_t,
1417        channels: ::std::os::raw::c_uint,
1418        rate: ::std::os::raw::c_uint,
1419        soft_resample: ::std::os::raw::c_int,
1420        latency: ::std::os::raw::c_uint,
1421    ) -> ::std::os::raw::c_int;
1422}
1423extern "C" {
1424    pub fn snd_pcm_get_params(
1425        pcm: *mut snd_pcm_t,
1426        buffer_size: *mut snd_pcm_uframes_t,
1427        period_size: *mut snd_pcm_uframes_t,
1428    ) -> ::std::os::raw::c_int;
1429}
1430extern "C" {
1431    pub fn snd_pcm_info_sizeof() -> usize;
1432}
1433extern "C" {
1434    pub fn snd_pcm_info_malloc(ptr: *mut *mut snd_pcm_info_t) -> ::std::os::raw::c_int;
1435}
1436extern "C" {
1437    pub fn snd_pcm_info_free(obj: *mut snd_pcm_info_t);
1438}
1439extern "C" {
1440    pub fn snd_pcm_info_copy(dst: *mut snd_pcm_info_t, src: *const snd_pcm_info_t);
1441}
1442extern "C" {
1443    pub fn snd_pcm_info_get_device(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
1444}
1445extern "C" {
1446    pub fn snd_pcm_info_get_subdevice(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
1447}
1448extern "C" {
1449    pub fn snd_pcm_info_get_stream(obj: *const snd_pcm_info_t) -> snd_pcm_stream_t;
1450}
1451extern "C" {
1452    pub fn snd_pcm_info_get_card(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_int;
1453}
1454extern "C" {
1455    pub fn snd_pcm_info_get_id(obj: *const snd_pcm_info_t) -> *const ::std::os::raw::c_char;
1456}
1457extern "C" {
1458    pub fn snd_pcm_info_get_name(obj: *const snd_pcm_info_t) -> *const ::std::os::raw::c_char;
1459}
1460extern "C" {
1461    pub fn snd_pcm_info_get_subdevice_name(
1462        obj: *const snd_pcm_info_t,
1463    ) -> *const ::std::os::raw::c_char;
1464}
1465extern "C" {
1466    pub fn snd_pcm_info_get_class(obj: *const snd_pcm_info_t) -> snd_pcm_class_t;
1467}
1468extern "C" {
1469    pub fn snd_pcm_info_get_subclass(obj: *const snd_pcm_info_t) -> snd_pcm_subclass_t;
1470}
1471extern "C" {
1472    pub fn snd_pcm_info_get_subdevices_count(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
1473}
1474extern "C" {
1475    pub fn snd_pcm_info_get_subdevices_avail(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
1476}
1477extern "C" {
1478    pub fn snd_pcm_info_get_sync(obj: *const snd_pcm_info_t) -> snd_pcm_sync_id_t;
1479}
1480extern "C" {
1481    pub fn snd_pcm_info_set_device(obj: *mut snd_pcm_info_t, val: ::std::os::raw::c_uint);
1482}
1483extern "C" {
1484    pub fn snd_pcm_info_set_subdevice(obj: *mut snd_pcm_info_t, val: ::std::os::raw::c_uint);
1485}
1486extern "C" {
1487    pub fn snd_pcm_info_set_stream(obj: *mut snd_pcm_info_t, val: snd_pcm_stream_t);
1488}
1489extern "C" {
1490    pub fn snd_pcm_hw_params_any(
1491        pcm: *mut snd_pcm_t,
1492        params: *mut snd_pcm_hw_params_t,
1493    ) -> ::std::os::raw::c_int;
1494}
1495extern "C" {
1496    pub fn snd_pcm_hw_params_can_mmap_sample_resolution(
1497        params: *const snd_pcm_hw_params_t,
1498    ) -> ::std::os::raw::c_int;
1499}
1500extern "C" {
1501    pub fn snd_pcm_hw_params_is_double(params: *const snd_pcm_hw_params_t)
1502        -> ::std::os::raw::c_int;
1503}
1504extern "C" {
1505    pub fn snd_pcm_hw_params_is_batch(params: *const snd_pcm_hw_params_t) -> ::std::os::raw::c_int;
1506}
1507extern "C" {
1508    pub fn snd_pcm_hw_params_is_block_transfer(
1509        params: *const snd_pcm_hw_params_t,
1510    ) -> ::std::os::raw::c_int;
1511}
1512extern "C" {
1513    pub fn snd_pcm_hw_params_is_monotonic(
1514        params: *const snd_pcm_hw_params_t,
1515    ) -> ::std::os::raw::c_int;
1516}
1517extern "C" {
1518    pub fn snd_pcm_hw_params_can_overrange(
1519        params: *const snd_pcm_hw_params_t,
1520    ) -> ::std::os::raw::c_int;
1521}
1522extern "C" {
1523    pub fn snd_pcm_hw_params_can_pause(params: *const snd_pcm_hw_params_t)
1524        -> ::std::os::raw::c_int;
1525}
1526extern "C" {
1527    pub fn snd_pcm_hw_params_can_resume(
1528        params: *const snd_pcm_hw_params_t,
1529    ) -> ::std::os::raw::c_int;
1530}
1531extern "C" {
1532    pub fn snd_pcm_hw_params_is_half_duplex(
1533        params: *const snd_pcm_hw_params_t,
1534    ) -> ::std::os::raw::c_int;
1535}
1536extern "C" {
1537    pub fn snd_pcm_hw_params_is_joint_duplex(
1538        params: *const snd_pcm_hw_params_t,
1539    ) -> ::std::os::raw::c_int;
1540}
1541extern "C" {
1542    pub fn snd_pcm_hw_params_can_sync_start(
1543        params: *const snd_pcm_hw_params_t,
1544    ) -> ::std::os::raw::c_int;
1545}
1546extern "C" {
1547    pub fn snd_pcm_hw_params_can_disable_period_wakeup(
1548        params: *const snd_pcm_hw_params_t,
1549    ) -> ::std::os::raw::c_int;
1550}
1551extern "C" {
1552    pub fn snd_pcm_hw_params_supports_audio_wallclock_ts(
1553        params: *const snd_pcm_hw_params_t,
1554    ) -> ::std::os::raw::c_int;
1555}
1556extern "C" {
1557    pub fn snd_pcm_hw_params_supports_audio_ts_type(
1558        params: *const snd_pcm_hw_params_t,
1559        type_: ::std::os::raw::c_int,
1560    ) -> ::std::os::raw::c_int;
1561}
1562extern "C" {
1563    pub fn snd_pcm_hw_params_get_rate_numden(
1564        params: *const snd_pcm_hw_params_t,
1565        rate_num: *mut ::std::os::raw::c_uint,
1566        rate_den: *mut ::std::os::raw::c_uint,
1567    ) -> ::std::os::raw::c_int;
1568}
1569extern "C" {
1570    pub fn snd_pcm_hw_params_get_sbits(params: *const snd_pcm_hw_params_t)
1571        -> ::std::os::raw::c_int;
1572}
1573extern "C" {
1574    pub fn snd_pcm_hw_params_get_fifo_size(
1575        params: *const snd_pcm_hw_params_t,
1576    ) -> ::std::os::raw::c_int;
1577}
1578extern "C" {
1579    pub fn snd_pcm_hw_params_sizeof() -> usize;
1580}
1581extern "C" {
1582    pub fn snd_pcm_hw_params_malloc(ptr: *mut *mut snd_pcm_hw_params_t) -> ::std::os::raw::c_int;
1583}
1584extern "C" {
1585    pub fn snd_pcm_hw_params_free(obj: *mut snd_pcm_hw_params_t);
1586}
1587extern "C" {
1588    pub fn snd_pcm_hw_params_copy(dst: *mut snd_pcm_hw_params_t, src: *const snd_pcm_hw_params_t);
1589}
1590extern "C" {
1591    pub fn snd_pcm_hw_params_get_access(
1592        params: *const snd_pcm_hw_params_t,
1593        _access: *mut snd_pcm_access_t,
1594    ) -> ::std::os::raw::c_int;
1595}
1596extern "C" {
1597    pub fn snd_pcm_hw_params_test_access(
1598        pcm: *mut snd_pcm_t,
1599        params: *mut snd_pcm_hw_params_t,
1600        _access: snd_pcm_access_t,
1601    ) -> ::std::os::raw::c_int;
1602}
1603extern "C" {
1604    pub fn snd_pcm_hw_params_set_access(
1605        pcm: *mut snd_pcm_t,
1606        params: *mut snd_pcm_hw_params_t,
1607        _access: snd_pcm_access_t,
1608    ) -> ::std::os::raw::c_int;
1609}
1610extern "C" {
1611    pub fn snd_pcm_hw_params_set_access_first(
1612        pcm: *mut snd_pcm_t,
1613        params: *mut snd_pcm_hw_params_t,
1614        _access: *mut snd_pcm_access_t,
1615    ) -> ::std::os::raw::c_int;
1616}
1617extern "C" {
1618    pub fn snd_pcm_hw_params_set_access_last(
1619        pcm: *mut snd_pcm_t,
1620        params: *mut snd_pcm_hw_params_t,
1621        _access: *mut snd_pcm_access_t,
1622    ) -> ::std::os::raw::c_int;
1623}
1624extern "C" {
1625    pub fn snd_pcm_hw_params_set_access_mask(
1626        pcm: *mut snd_pcm_t,
1627        params: *mut snd_pcm_hw_params_t,
1628        mask: *mut snd_pcm_access_mask_t,
1629    ) -> ::std::os::raw::c_int;
1630}
1631extern "C" {
1632    pub fn snd_pcm_hw_params_get_access_mask(
1633        params: *mut snd_pcm_hw_params_t,
1634        mask: *mut snd_pcm_access_mask_t,
1635    ) -> ::std::os::raw::c_int;
1636}
1637extern "C" {
1638    pub fn snd_pcm_hw_params_get_format(
1639        params: *const snd_pcm_hw_params_t,
1640        val: *mut snd_pcm_format_t,
1641    ) -> ::std::os::raw::c_int;
1642}
1643extern "C" {
1644    pub fn snd_pcm_hw_params_test_format(
1645        pcm: *mut snd_pcm_t,
1646        params: *mut snd_pcm_hw_params_t,
1647        val: snd_pcm_format_t,
1648    ) -> ::std::os::raw::c_int;
1649}
1650extern "C" {
1651    pub fn snd_pcm_hw_params_set_format(
1652        pcm: *mut snd_pcm_t,
1653        params: *mut snd_pcm_hw_params_t,
1654        val: snd_pcm_format_t,
1655    ) -> ::std::os::raw::c_int;
1656}
1657extern "C" {
1658    pub fn snd_pcm_hw_params_set_format_first(
1659        pcm: *mut snd_pcm_t,
1660        params: *mut snd_pcm_hw_params_t,
1661        format: *mut snd_pcm_format_t,
1662    ) -> ::std::os::raw::c_int;
1663}
1664extern "C" {
1665    pub fn snd_pcm_hw_params_set_format_last(
1666        pcm: *mut snd_pcm_t,
1667        params: *mut snd_pcm_hw_params_t,
1668        format: *mut snd_pcm_format_t,
1669    ) -> ::std::os::raw::c_int;
1670}
1671extern "C" {
1672    pub fn snd_pcm_hw_params_set_format_mask(
1673        pcm: *mut snd_pcm_t,
1674        params: *mut snd_pcm_hw_params_t,
1675        mask: *mut snd_pcm_format_mask_t,
1676    ) -> ::std::os::raw::c_int;
1677}
1678extern "C" {
1679    pub fn snd_pcm_hw_params_get_format_mask(
1680        params: *mut snd_pcm_hw_params_t,
1681        mask: *mut snd_pcm_format_mask_t,
1682    );
1683}
1684extern "C" {
1685    pub fn snd_pcm_hw_params_get_subformat(
1686        params: *const snd_pcm_hw_params_t,
1687        subformat: *mut snd_pcm_subformat_t,
1688    ) -> ::std::os::raw::c_int;
1689}
1690extern "C" {
1691    pub fn snd_pcm_hw_params_test_subformat(
1692        pcm: *mut snd_pcm_t,
1693        params: *mut snd_pcm_hw_params_t,
1694        subformat: snd_pcm_subformat_t,
1695    ) -> ::std::os::raw::c_int;
1696}
1697extern "C" {
1698    pub fn snd_pcm_hw_params_set_subformat(
1699        pcm: *mut snd_pcm_t,
1700        params: *mut snd_pcm_hw_params_t,
1701        subformat: snd_pcm_subformat_t,
1702    ) -> ::std::os::raw::c_int;
1703}
1704extern "C" {
1705    pub fn snd_pcm_hw_params_set_subformat_first(
1706        pcm: *mut snd_pcm_t,
1707        params: *mut snd_pcm_hw_params_t,
1708        subformat: *mut snd_pcm_subformat_t,
1709    ) -> ::std::os::raw::c_int;
1710}
1711extern "C" {
1712    pub fn snd_pcm_hw_params_set_subformat_last(
1713        pcm: *mut snd_pcm_t,
1714        params: *mut snd_pcm_hw_params_t,
1715        subformat: *mut snd_pcm_subformat_t,
1716    ) -> ::std::os::raw::c_int;
1717}
1718extern "C" {
1719    pub fn snd_pcm_hw_params_set_subformat_mask(
1720        pcm: *mut snd_pcm_t,
1721        params: *mut snd_pcm_hw_params_t,
1722        mask: *mut snd_pcm_subformat_mask_t,
1723    ) -> ::std::os::raw::c_int;
1724}
1725extern "C" {
1726    pub fn snd_pcm_hw_params_get_subformat_mask(
1727        params: *mut snd_pcm_hw_params_t,
1728        mask: *mut snd_pcm_subformat_mask_t,
1729    );
1730}
1731extern "C" {
1732    pub fn snd_pcm_hw_params_get_channels(
1733        params: *const snd_pcm_hw_params_t,
1734        val: *mut ::std::os::raw::c_uint,
1735    ) -> ::std::os::raw::c_int;
1736}
1737extern "C" {
1738    pub fn snd_pcm_hw_params_get_channels_min(
1739        params: *const snd_pcm_hw_params_t,
1740        val: *mut ::std::os::raw::c_uint,
1741    ) -> ::std::os::raw::c_int;
1742}
1743extern "C" {
1744    pub fn snd_pcm_hw_params_get_channels_max(
1745        params: *const snd_pcm_hw_params_t,
1746        val: *mut ::std::os::raw::c_uint,
1747    ) -> ::std::os::raw::c_int;
1748}
1749extern "C" {
1750    pub fn snd_pcm_hw_params_test_channels(
1751        pcm: *mut snd_pcm_t,
1752        params: *mut snd_pcm_hw_params_t,
1753        val: ::std::os::raw::c_uint,
1754    ) -> ::std::os::raw::c_int;
1755}
1756extern "C" {
1757    pub fn snd_pcm_hw_params_set_channels(
1758        pcm: *mut snd_pcm_t,
1759        params: *mut snd_pcm_hw_params_t,
1760        val: ::std::os::raw::c_uint,
1761    ) -> ::std::os::raw::c_int;
1762}
1763extern "C" {
1764    pub fn snd_pcm_hw_params_set_channels_min(
1765        pcm: *mut snd_pcm_t,
1766        params: *mut snd_pcm_hw_params_t,
1767        val: *mut ::std::os::raw::c_uint,
1768    ) -> ::std::os::raw::c_int;
1769}
1770extern "C" {
1771    pub fn snd_pcm_hw_params_set_channels_max(
1772        pcm: *mut snd_pcm_t,
1773        params: *mut snd_pcm_hw_params_t,
1774        val: *mut ::std::os::raw::c_uint,
1775    ) -> ::std::os::raw::c_int;
1776}
1777extern "C" {
1778    pub fn snd_pcm_hw_params_set_channels_minmax(
1779        pcm: *mut snd_pcm_t,
1780        params: *mut snd_pcm_hw_params_t,
1781        min: *mut ::std::os::raw::c_uint,
1782        max: *mut ::std::os::raw::c_uint,
1783    ) -> ::std::os::raw::c_int;
1784}
1785extern "C" {
1786    pub fn snd_pcm_hw_params_set_channels_near(
1787        pcm: *mut snd_pcm_t,
1788        params: *mut snd_pcm_hw_params_t,
1789        val: *mut ::std::os::raw::c_uint,
1790    ) -> ::std::os::raw::c_int;
1791}
1792extern "C" {
1793    pub fn snd_pcm_hw_params_set_channels_first(
1794        pcm: *mut snd_pcm_t,
1795        params: *mut snd_pcm_hw_params_t,
1796        val: *mut ::std::os::raw::c_uint,
1797    ) -> ::std::os::raw::c_int;
1798}
1799extern "C" {
1800    pub fn snd_pcm_hw_params_set_channels_last(
1801        pcm: *mut snd_pcm_t,
1802        params: *mut snd_pcm_hw_params_t,
1803        val: *mut ::std::os::raw::c_uint,
1804    ) -> ::std::os::raw::c_int;
1805}
1806extern "C" {
1807    pub fn snd_pcm_hw_params_get_rate(
1808        params: *const snd_pcm_hw_params_t,
1809        val: *mut ::std::os::raw::c_uint,
1810        dir: *mut ::std::os::raw::c_int,
1811    ) -> ::std::os::raw::c_int;
1812}
1813extern "C" {
1814    pub fn snd_pcm_hw_params_get_rate_min(
1815        params: *const snd_pcm_hw_params_t,
1816        val: *mut ::std::os::raw::c_uint,
1817        dir: *mut ::std::os::raw::c_int,
1818    ) -> ::std::os::raw::c_int;
1819}
1820extern "C" {
1821    pub fn snd_pcm_hw_params_get_rate_max(
1822        params: *const snd_pcm_hw_params_t,
1823        val: *mut ::std::os::raw::c_uint,
1824        dir: *mut ::std::os::raw::c_int,
1825    ) -> ::std::os::raw::c_int;
1826}
1827extern "C" {
1828    pub fn snd_pcm_hw_params_test_rate(
1829        pcm: *mut snd_pcm_t,
1830        params: *mut snd_pcm_hw_params_t,
1831        val: ::std::os::raw::c_uint,
1832        dir: ::std::os::raw::c_int,
1833    ) -> ::std::os::raw::c_int;
1834}
1835extern "C" {
1836    pub fn snd_pcm_hw_params_set_rate(
1837        pcm: *mut snd_pcm_t,
1838        params: *mut snd_pcm_hw_params_t,
1839        val: ::std::os::raw::c_uint,
1840        dir: ::std::os::raw::c_int,
1841    ) -> ::std::os::raw::c_int;
1842}
1843extern "C" {
1844    pub fn snd_pcm_hw_params_set_rate_min(
1845        pcm: *mut snd_pcm_t,
1846        params: *mut snd_pcm_hw_params_t,
1847        val: *mut ::std::os::raw::c_uint,
1848        dir: *mut ::std::os::raw::c_int,
1849    ) -> ::std::os::raw::c_int;
1850}
1851extern "C" {
1852    pub fn snd_pcm_hw_params_set_rate_max(
1853        pcm: *mut snd_pcm_t,
1854        params: *mut snd_pcm_hw_params_t,
1855        val: *mut ::std::os::raw::c_uint,
1856        dir: *mut ::std::os::raw::c_int,
1857    ) -> ::std::os::raw::c_int;
1858}
1859extern "C" {
1860    pub fn snd_pcm_hw_params_set_rate_minmax(
1861        pcm: *mut snd_pcm_t,
1862        params: *mut snd_pcm_hw_params_t,
1863        min: *mut ::std::os::raw::c_uint,
1864        mindir: *mut ::std::os::raw::c_int,
1865        max: *mut ::std::os::raw::c_uint,
1866        maxdir: *mut ::std::os::raw::c_int,
1867    ) -> ::std::os::raw::c_int;
1868}
1869extern "C" {
1870    pub fn snd_pcm_hw_params_set_rate_near(
1871        pcm: *mut snd_pcm_t,
1872        params: *mut snd_pcm_hw_params_t,
1873        val: *mut ::std::os::raw::c_uint,
1874        dir: *mut ::std::os::raw::c_int,
1875    ) -> ::std::os::raw::c_int;
1876}
1877extern "C" {
1878    pub fn snd_pcm_hw_params_set_rate_first(
1879        pcm: *mut snd_pcm_t,
1880        params: *mut snd_pcm_hw_params_t,
1881        val: *mut ::std::os::raw::c_uint,
1882        dir: *mut ::std::os::raw::c_int,
1883    ) -> ::std::os::raw::c_int;
1884}
1885extern "C" {
1886    pub fn snd_pcm_hw_params_set_rate_last(
1887        pcm: *mut snd_pcm_t,
1888        params: *mut snd_pcm_hw_params_t,
1889        val: *mut ::std::os::raw::c_uint,
1890        dir: *mut ::std::os::raw::c_int,
1891    ) -> ::std::os::raw::c_int;
1892}
1893extern "C" {
1894    pub fn snd_pcm_hw_params_set_rate_resample(
1895        pcm: *mut snd_pcm_t,
1896        params: *mut snd_pcm_hw_params_t,
1897        val: ::std::os::raw::c_uint,
1898    ) -> ::std::os::raw::c_int;
1899}
1900extern "C" {
1901    pub fn snd_pcm_hw_params_get_rate_resample(
1902        pcm: *mut snd_pcm_t,
1903        params: *mut snd_pcm_hw_params_t,
1904        val: *mut ::std::os::raw::c_uint,
1905    ) -> ::std::os::raw::c_int;
1906}
1907extern "C" {
1908    pub fn snd_pcm_hw_params_set_export_buffer(
1909        pcm: *mut snd_pcm_t,
1910        params: *mut snd_pcm_hw_params_t,
1911        val: ::std::os::raw::c_uint,
1912    ) -> ::std::os::raw::c_int;
1913}
1914extern "C" {
1915    pub fn snd_pcm_hw_params_get_export_buffer(
1916        pcm: *mut snd_pcm_t,
1917        params: *mut snd_pcm_hw_params_t,
1918        val: *mut ::std::os::raw::c_uint,
1919    ) -> ::std::os::raw::c_int;
1920}
1921extern "C" {
1922    pub fn snd_pcm_hw_params_set_period_wakeup(
1923        pcm: *mut snd_pcm_t,
1924        params: *mut snd_pcm_hw_params_t,
1925        val: ::std::os::raw::c_uint,
1926    ) -> ::std::os::raw::c_int;
1927}
1928extern "C" {
1929    pub fn snd_pcm_hw_params_get_period_wakeup(
1930        pcm: *mut snd_pcm_t,
1931        params: *mut snd_pcm_hw_params_t,
1932        val: *mut ::std::os::raw::c_uint,
1933    ) -> ::std::os::raw::c_int;
1934}
1935extern "C" {
1936    pub fn snd_pcm_hw_params_get_period_time(
1937        params: *const snd_pcm_hw_params_t,
1938        val: *mut ::std::os::raw::c_uint,
1939        dir: *mut ::std::os::raw::c_int,
1940    ) -> ::std::os::raw::c_int;
1941}
1942extern "C" {
1943    pub fn snd_pcm_hw_params_get_period_time_min(
1944        params: *const snd_pcm_hw_params_t,
1945        val: *mut ::std::os::raw::c_uint,
1946        dir: *mut ::std::os::raw::c_int,
1947    ) -> ::std::os::raw::c_int;
1948}
1949extern "C" {
1950    pub fn snd_pcm_hw_params_get_period_time_max(
1951        params: *const snd_pcm_hw_params_t,
1952        val: *mut ::std::os::raw::c_uint,
1953        dir: *mut ::std::os::raw::c_int,
1954    ) -> ::std::os::raw::c_int;
1955}
1956extern "C" {
1957    pub fn snd_pcm_hw_params_test_period_time(
1958        pcm: *mut snd_pcm_t,
1959        params: *mut snd_pcm_hw_params_t,
1960        val: ::std::os::raw::c_uint,
1961        dir: ::std::os::raw::c_int,
1962    ) -> ::std::os::raw::c_int;
1963}
1964extern "C" {
1965    pub fn snd_pcm_hw_params_set_period_time(
1966        pcm: *mut snd_pcm_t,
1967        params: *mut snd_pcm_hw_params_t,
1968        val: ::std::os::raw::c_uint,
1969        dir: ::std::os::raw::c_int,
1970    ) -> ::std::os::raw::c_int;
1971}
1972extern "C" {
1973    pub fn snd_pcm_hw_params_set_period_time_min(
1974        pcm: *mut snd_pcm_t,
1975        params: *mut snd_pcm_hw_params_t,
1976        val: *mut ::std::os::raw::c_uint,
1977        dir: *mut ::std::os::raw::c_int,
1978    ) -> ::std::os::raw::c_int;
1979}
1980extern "C" {
1981    pub fn snd_pcm_hw_params_set_period_time_max(
1982        pcm: *mut snd_pcm_t,
1983        params: *mut snd_pcm_hw_params_t,
1984        val: *mut ::std::os::raw::c_uint,
1985        dir: *mut ::std::os::raw::c_int,
1986    ) -> ::std::os::raw::c_int;
1987}
1988extern "C" {
1989    pub fn snd_pcm_hw_params_set_period_time_minmax(
1990        pcm: *mut snd_pcm_t,
1991        params: *mut snd_pcm_hw_params_t,
1992        min: *mut ::std::os::raw::c_uint,
1993        mindir: *mut ::std::os::raw::c_int,
1994        max: *mut ::std::os::raw::c_uint,
1995        maxdir: *mut ::std::os::raw::c_int,
1996    ) -> ::std::os::raw::c_int;
1997}
1998extern "C" {
1999    pub fn snd_pcm_hw_params_set_period_time_near(
2000        pcm: *mut snd_pcm_t,
2001        params: *mut snd_pcm_hw_params_t,
2002        val: *mut ::std::os::raw::c_uint,
2003        dir: *mut ::std::os::raw::c_int,
2004    ) -> ::std::os::raw::c_int;
2005}
2006extern "C" {
2007    pub fn snd_pcm_hw_params_set_period_time_first(
2008        pcm: *mut snd_pcm_t,
2009        params: *mut snd_pcm_hw_params_t,
2010        val: *mut ::std::os::raw::c_uint,
2011        dir: *mut ::std::os::raw::c_int,
2012    ) -> ::std::os::raw::c_int;
2013}
2014extern "C" {
2015    pub fn snd_pcm_hw_params_set_period_time_last(
2016        pcm: *mut snd_pcm_t,
2017        params: *mut snd_pcm_hw_params_t,
2018        val: *mut ::std::os::raw::c_uint,
2019        dir: *mut ::std::os::raw::c_int,
2020    ) -> ::std::os::raw::c_int;
2021}
2022extern "C" {
2023    pub fn snd_pcm_hw_params_get_period_size(
2024        params: *const snd_pcm_hw_params_t,
2025        frames: *mut snd_pcm_uframes_t,
2026        dir: *mut ::std::os::raw::c_int,
2027    ) -> ::std::os::raw::c_int;
2028}
2029extern "C" {
2030    pub fn snd_pcm_hw_params_get_period_size_min(
2031        params: *const snd_pcm_hw_params_t,
2032        frames: *mut snd_pcm_uframes_t,
2033        dir: *mut ::std::os::raw::c_int,
2034    ) -> ::std::os::raw::c_int;
2035}
2036extern "C" {
2037    pub fn snd_pcm_hw_params_get_period_size_max(
2038        params: *const snd_pcm_hw_params_t,
2039        frames: *mut snd_pcm_uframes_t,
2040        dir: *mut ::std::os::raw::c_int,
2041    ) -> ::std::os::raw::c_int;
2042}
2043extern "C" {
2044    pub fn snd_pcm_hw_params_test_period_size(
2045        pcm: *mut snd_pcm_t,
2046        params: *mut snd_pcm_hw_params_t,
2047        val: snd_pcm_uframes_t,
2048        dir: ::std::os::raw::c_int,
2049    ) -> ::std::os::raw::c_int;
2050}
2051extern "C" {
2052    pub fn snd_pcm_hw_params_set_period_size(
2053        pcm: *mut snd_pcm_t,
2054        params: *mut snd_pcm_hw_params_t,
2055        val: snd_pcm_uframes_t,
2056        dir: ::std::os::raw::c_int,
2057    ) -> ::std::os::raw::c_int;
2058}
2059extern "C" {
2060    pub fn snd_pcm_hw_params_set_period_size_min(
2061        pcm: *mut snd_pcm_t,
2062        params: *mut snd_pcm_hw_params_t,
2063        val: *mut snd_pcm_uframes_t,
2064        dir: *mut ::std::os::raw::c_int,
2065    ) -> ::std::os::raw::c_int;
2066}
2067extern "C" {
2068    pub fn snd_pcm_hw_params_set_period_size_max(
2069        pcm: *mut snd_pcm_t,
2070        params: *mut snd_pcm_hw_params_t,
2071        val: *mut snd_pcm_uframes_t,
2072        dir: *mut ::std::os::raw::c_int,
2073    ) -> ::std::os::raw::c_int;
2074}
2075extern "C" {
2076    pub fn snd_pcm_hw_params_set_period_size_minmax(
2077        pcm: *mut snd_pcm_t,
2078        params: *mut snd_pcm_hw_params_t,
2079        min: *mut snd_pcm_uframes_t,
2080        mindir: *mut ::std::os::raw::c_int,
2081        max: *mut snd_pcm_uframes_t,
2082        maxdir: *mut ::std::os::raw::c_int,
2083    ) -> ::std::os::raw::c_int;
2084}
2085extern "C" {
2086    pub fn snd_pcm_hw_params_set_period_size_near(
2087        pcm: *mut snd_pcm_t,
2088        params: *mut snd_pcm_hw_params_t,
2089        val: *mut snd_pcm_uframes_t,
2090        dir: *mut ::std::os::raw::c_int,
2091    ) -> ::std::os::raw::c_int;
2092}
2093extern "C" {
2094    pub fn snd_pcm_hw_params_set_period_size_first(
2095        pcm: *mut snd_pcm_t,
2096        params: *mut snd_pcm_hw_params_t,
2097        val: *mut snd_pcm_uframes_t,
2098        dir: *mut ::std::os::raw::c_int,
2099    ) -> ::std::os::raw::c_int;
2100}
2101extern "C" {
2102    pub fn snd_pcm_hw_params_set_period_size_last(
2103        pcm: *mut snd_pcm_t,
2104        params: *mut snd_pcm_hw_params_t,
2105        val: *mut snd_pcm_uframes_t,
2106        dir: *mut ::std::os::raw::c_int,
2107    ) -> ::std::os::raw::c_int;
2108}
2109extern "C" {
2110    pub fn snd_pcm_hw_params_set_period_size_integer(
2111        pcm: *mut snd_pcm_t,
2112        params: *mut snd_pcm_hw_params_t,
2113    ) -> ::std::os::raw::c_int;
2114}
2115extern "C" {
2116    pub fn snd_pcm_hw_params_get_periods(
2117        params: *const snd_pcm_hw_params_t,
2118        val: *mut ::std::os::raw::c_uint,
2119        dir: *mut ::std::os::raw::c_int,
2120    ) -> ::std::os::raw::c_int;
2121}
2122extern "C" {
2123    pub fn snd_pcm_hw_params_get_periods_min(
2124        params: *const snd_pcm_hw_params_t,
2125        val: *mut ::std::os::raw::c_uint,
2126        dir: *mut ::std::os::raw::c_int,
2127    ) -> ::std::os::raw::c_int;
2128}
2129extern "C" {
2130    pub fn snd_pcm_hw_params_get_periods_max(
2131        params: *const snd_pcm_hw_params_t,
2132        val: *mut ::std::os::raw::c_uint,
2133        dir: *mut ::std::os::raw::c_int,
2134    ) -> ::std::os::raw::c_int;
2135}
2136extern "C" {
2137    pub fn snd_pcm_hw_params_test_periods(
2138        pcm: *mut snd_pcm_t,
2139        params: *mut snd_pcm_hw_params_t,
2140        val: ::std::os::raw::c_uint,
2141        dir: ::std::os::raw::c_int,
2142    ) -> ::std::os::raw::c_int;
2143}
2144extern "C" {
2145    pub fn snd_pcm_hw_params_set_periods(
2146        pcm: *mut snd_pcm_t,
2147        params: *mut snd_pcm_hw_params_t,
2148        val: ::std::os::raw::c_uint,
2149        dir: ::std::os::raw::c_int,
2150    ) -> ::std::os::raw::c_int;
2151}
2152extern "C" {
2153    pub fn snd_pcm_hw_params_set_periods_min(
2154        pcm: *mut snd_pcm_t,
2155        params: *mut snd_pcm_hw_params_t,
2156        val: *mut ::std::os::raw::c_uint,
2157        dir: *mut ::std::os::raw::c_int,
2158    ) -> ::std::os::raw::c_int;
2159}
2160extern "C" {
2161    pub fn snd_pcm_hw_params_set_periods_max(
2162        pcm: *mut snd_pcm_t,
2163        params: *mut snd_pcm_hw_params_t,
2164        val: *mut ::std::os::raw::c_uint,
2165        dir: *mut ::std::os::raw::c_int,
2166    ) -> ::std::os::raw::c_int;
2167}
2168extern "C" {
2169    pub fn snd_pcm_hw_params_set_periods_minmax(
2170        pcm: *mut snd_pcm_t,
2171        params: *mut snd_pcm_hw_params_t,
2172        min: *mut ::std::os::raw::c_uint,
2173        mindir: *mut ::std::os::raw::c_int,
2174        max: *mut ::std::os::raw::c_uint,
2175        maxdir: *mut ::std::os::raw::c_int,
2176    ) -> ::std::os::raw::c_int;
2177}
2178extern "C" {
2179    pub fn snd_pcm_hw_params_set_periods_near(
2180        pcm: *mut snd_pcm_t,
2181        params: *mut snd_pcm_hw_params_t,
2182        val: *mut ::std::os::raw::c_uint,
2183        dir: *mut ::std::os::raw::c_int,
2184    ) -> ::std::os::raw::c_int;
2185}
2186extern "C" {
2187    pub fn snd_pcm_hw_params_set_periods_first(
2188        pcm: *mut snd_pcm_t,
2189        params: *mut snd_pcm_hw_params_t,
2190        val: *mut ::std::os::raw::c_uint,
2191        dir: *mut ::std::os::raw::c_int,
2192    ) -> ::std::os::raw::c_int;
2193}
2194extern "C" {
2195    pub fn snd_pcm_hw_params_set_periods_last(
2196        pcm: *mut snd_pcm_t,
2197        params: *mut snd_pcm_hw_params_t,
2198        val: *mut ::std::os::raw::c_uint,
2199        dir: *mut ::std::os::raw::c_int,
2200    ) -> ::std::os::raw::c_int;
2201}
2202extern "C" {
2203    pub fn snd_pcm_hw_params_set_periods_integer(
2204        pcm: *mut snd_pcm_t,
2205        params: *mut snd_pcm_hw_params_t,
2206    ) -> ::std::os::raw::c_int;
2207}
2208extern "C" {
2209    pub fn snd_pcm_hw_params_get_buffer_time(
2210        params: *const snd_pcm_hw_params_t,
2211        val: *mut ::std::os::raw::c_uint,
2212        dir: *mut ::std::os::raw::c_int,
2213    ) -> ::std::os::raw::c_int;
2214}
2215extern "C" {
2216    pub fn snd_pcm_hw_params_get_buffer_time_min(
2217        params: *const snd_pcm_hw_params_t,
2218        val: *mut ::std::os::raw::c_uint,
2219        dir: *mut ::std::os::raw::c_int,
2220    ) -> ::std::os::raw::c_int;
2221}
2222extern "C" {
2223    pub fn snd_pcm_hw_params_get_buffer_time_max(
2224        params: *const snd_pcm_hw_params_t,
2225        val: *mut ::std::os::raw::c_uint,
2226        dir: *mut ::std::os::raw::c_int,
2227    ) -> ::std::os::raw::c_int;
2228}
2229extern "C" {
2230    pub fn snd_pcm_hw_params_test_buffer_time(
2231        pcm: *mut snd_pcm_t,
2232        params: *mut snd_pcm_hw_params_t,
2233        val: ::std::os::raw::c_uint,
2234        dir: ::std::os::raw::c_int,
2235    ) -> ::std::os::raw::c_int;
2236}
2237extern "C" {
2238    pub fn snd_pcm_hw_params_set_buffer_time(
2239        pcm: *mut snd_pcm_t,
2240        params: *mut snd_pcm_hw_params_t,
2241        val: ::std::os::raw::c_uint,
2242        dir: ::std::os::raw::c_int,
2243    ) -> ::std::os::raw::c_int;
2244}
2245extern "C" {
2246    pub fn snd_pcm_hw_params_set_buffer_time_min(
2247        pcm: *mut snd_pcm_t,
2248        params: *mut snd_pcm_hw_params_t,
2249        val: *mut ::std::os::raw::c_uint,
2250        dir: *mut ::std::os::raw::c_int,
2251    ) -> ::std::os::raw::c_int;
2252}
2253extern "C" {
2254    pub fn snd_pcm_hw_params_set_buffer_time_max(
2255        pcm: *mut snd_pcm_t,
2256        params: *mut snd_pcm_hw_params_t,
2257        val: *mut ::std::os::raw::c_uint,
2258        dir: *mut ::std::os::raw::c_int,
2259    ) -> ::std::os::raw::c_int;
2260}
2261extern "C" {
2262    pub fn snd_pcm_hw_params_set_buffer_time_minmax(
2263        pcm: *mut snd_pcm_t,
2264        params: *mut snd_pcm_hw_params_t,
2265        min: *mut ::std::os::raw::c_uint,
2266        mindir: *mut ::std::os::raw::c_int,
2267        max: *mut ::std::os::raw::c_uint,
2268        maxdir: *mut ::std::os::raw::c_int,
2269    ) -> ::std::os::raw::c_int;
2270}
2271extern "C" {
2272    pub fn snd_pcm_hw_params_set_buffer_time_near(
2273        pcm: *mut snd_pcm_t,
2274        params: *mut snd_pcm_hw_params_t,
2275        val: *mut ::std::os::raw::c_uint,
2276        dir: *mut ::std::os::raw::c_int,
2277    ) -> ::std::os::raw::c_int;
2278}
2279extern "C" {
2280    pub fn snd_pcm_hw_params_set_buffer_time_first(
2281        pcm: *mut snd_pcm_t,
2282        params: *mut snd_pcm_hw_params_t,
2283        val: *mut ::std::os::raw::c_uint,
2284        dir: *mut ::std::os::raw::c_int,
2285    ) -> ::std::os::raw::c_int;
2286}
2287extern "C" {
2288    pub fn snd_pcm_hw_params_set_buffer_time_last(
2289        pcm: *mut snd_pcm_t,
2290        params: *mut snd_pcm_hw_params_t,
2291        val: *mut ::std::os::raw::c_uint,
2292        dir: *mut ::std::os::raw::c_int,
2293    ) -> ::std::os::raw::c_int;
2294}
2295extern "C" {
2296    pub fn snd_pcm_hw_params_get_buffer_size(
2297        params: *const snd_pcm_hw_params_t,
2298        val: *mut snd_pcm_uframes_t,
2299    ) -> ::std::os::raw::c_int;
2300}
2301extern "C" {
2302    pub fn snd_pcm_hw_params_get_buffer_size_min(
2303        params: *const snd_pcm_hw_params_t,
2304        val: *mut snd_pcm_uframes_t,
2305    ) -> ::std::os::raw::c_int;
2306}
2307extern "C" {
2308    pub fn snd_pcm_hw_params_get_buffer_size_max(
2309        params: *const snd_pcm_hw_params_t,
2310        val: *mut snd_pcm_uframes_t,
2311    ) -> ::std::os::raw::c_int;
2312}
2313extern "C" {
2314    pub fn snd_pcm_hw_params_test_buffer_size(
2315        pcm: *mut snd_pcm_t,
2316        params: *mut snd_pcm_hw_params_t,
2317        val: snd_pcm_uframes_t,
2318    ) -> ::std::os::raw::c_int;
2319}
2320extern "C" {
2321    pub fn snd_pcm_hw_params_set_buffer_size(
2322        pcm: *mut snd_pcm_t,
2323        params: *mut snd_pcm_hw_params_t,
2324        val: snd_pcm_uframes_t,
2325    ) -> ::std::os::raw::c_int;
2326}
2327extern "C" {
2328    pub fn snd_pcm_hw_params_set_buffer_size_min(
2329        pcm: *mut snd_pcm_t,
2330        params: *mut snd_pcm_hw_params_t,
2331        val: *mut snd_pcm_uframes_t,
2332    ) -> ::std::os::raw::c_int;
2333}
2334extern "C" {
2335    pub fn snd_pcm_hw_params_set_buffer_size_max(
2336        pcm: *mut snd_pcm_t,
2337        params: *mut snd_pcm_hw_params_t,
2338        val: *mut snd_pcm_uframes_t,
2339    ) -> ::std::os::raw::c_int;
2340}
2341extern "C" {
2342    pub fn snd_pcm_hw_params_set_buffer_size_minmax(
2343        pcm: *mut snd_pcm_t,
2344        params: *mut snd_pcm_hw_params_t,
2345        min: *mut snd_pcm_uframes_t,
2346        max: *mut snd_pcm_uframes_t,
2347    ) -> ::std::os::raw::c_int;
2348}
2349extern "C" {
2350    pub fn snd_pcm_hw_params_set_buffer_size_near(
2351        pcm: *mut snd_pcm_t,
2352        params: *mut snd_pcm_hw_params_t,
2353        val: *mut snd_pcm_uframes_t,
2354    ) -> ::std::os::raw::c_int;
2355}
2356extern "C" {
2357    pub fn snd_pcm_hw_params_set_buffer_size_first(
2358        pcm: *mut snd_pcm_t,
2359        params: *mut snd_pcm_hw_params_t,
2360        val: *mut snd_pcm_uframes_t,
2361    ) -> ::std::os::raw::c_int;
2362}
2363extern "C" {
2364    pub fn snd_pcm_hw_params_set_buffer_size_last(
2365        pcm: *mut snd_pcm_t,
2366        params: *mut snd_pcm_hw_params_t,
2367        val: *mut snd_pcm_uframes_t,
2368    ) -> ::std::os::raw::c_int;
2369}
2370extern "C" {
2371    pub fn snd_pcm_hw_params_get_min_align(
2372        params: *const snd_pcm_hw_params_t,
2373        val: *mut snd_pcm_uframes_t,
2374    ) -> ::std::os::raw::c_int;
2375}
2376extern "C" {
2377    pub fn snd_pcm_sw_params_sizeof() -> usize;
2378}
2379extern "C" {
2380    pub fn snd_pcm_sw_params_malloc(ptr: *mut *mut snd_pcm_sw_params_t) -> ::std::os::raw::c_int;
2381}
2382extern "C" {
2383    pub fn snd_pcm_sw_params_free(obj: *mut snd_pcm_sw_params_t);
2384}
2385extern "C" {
2386    pub fn snd_pcm_sw_params_copy(dst: *mut snd_pcm_sw_params_t, src: *const snd_pcm_sw_params_t);
2387}
2388extern "C" {
2389    pub fn snd_pcm_sw_params_get_boundary(
2390        params: *const snd_pcm_sw_params_t,
2391        val: *mut snd_pcm_uframes_t,
2392    ) -> ::std::os::raw::c_int;
2393}
2394extern "C" {
2395    pub fn snd_pcm_sw_params_set_tstamp_mode(
2396        pcm: *mut snd_pcm_t,
2397        params: *mut snd_pcm_sw_params_t,
2398        val: snd_pcm_tstamp_t,
2399    ) -> ::std::os::raw::c_int;
2400}
2401extern "C" {
2402    pub fn snd_pcm_sw_params_get_tstamp_mode(
2403        params: *const snd_pcm_sw_params_t,
2404        val: *mut snd_pcm_tstamp_t,
2405    ) -> ::std::os::raw::c_int;
2406}
2407extern "C" {
2408    pub fn snd_pcm_sw_params_set_tstamp_type(
2409        pcm: *mut snd_pcm_t,
2410        params: *mut snd_pcm_sw_params_t,
2411        val: snd_pcm_tstamp_type_t,
2412    ) -> ::std::os::raw::c_int;
2413}
2414extern "C" {
2415    pub fn snd_pcm_sw_params_get_tstamp_type(
2416        params: *const snd_pcm_sw_params_t,
2417        val: *mut snd_pcm_tstamp_type_t,
2418    ) -> ::std::os::raw::c_int;
2419}
2420extern "C" {
2421    pub fn snd_pcm_sw_params_set_avail_min(
2422        pcm: *mut snd_pcm_t,
2423        params: *mut snd_pcm_sw_params_t,
2424        val: snd_pcm_uframes_t,
2425    ) -> ::std::os::raw::c_int;
2426}
2427extern "C" {
2428    pub fn snd_pcm_sw_params_get_avail_min(
2429        params: *const snd_pcm_sw_params_t,
2430        val: *mut snd_pcm_uframes_t,
2431    ) -> ::std::os::raw::c_int;
2432}
2433extern "C" {
2434    pub fn snd_pcm_sw_params_set_period_event(
2435        pcm: *mut snd_pcm_t,
2436        params: *mut snd_pcm_sw_params_t,
2437        val: ::std::os::raw::c_int,
2438    ) -> ::std::os::raw::c_int;
2439}
2440extern "C" {
2441    pub fn snd_pcm_sw_params_get_period_event(
2442        params: *const snd_pcm_sw_params_t,
2443        val: *mut ::std::os::raw::c_int,
2444    ) -> ::std::os::raw::c_int;
2445}
2446extern "C" {
2447    pub fn snd_pcm_sw_params_set_start_threshold(
2448        pcm: *mut snd_pcm_t,
2449        params: *mut snd_pcm_sw_params_t,
2450        val: snd_pcm_uframes_t,
2451    ) -> ::std::os::raw::c_int;
2452}
2453extern "C" {
2454    pub fn snd_pcm_sw_params_get_start_threshold(
2455        paramsm: *const snd_pcm_sw_params_t,
2456        val: *mut snd_pcm_uframes_t,
2457    ) -> ::std::os::raw::c_int;
2458}
2459extern "C" {
2460    pub fn snd_pcm_sw_params_set_stop_threshold(
2461        pcm: *mut snd_pcm_t,
2462        params: *mut snd_pcm_sw_params_t,
2463        val: snd_pcm_uframes_t,
2464    ) -> ::std::os::raw::c_int;
2465}
2466extern "C" {
2467    pub fn snd_pcm_sw_params_get_stop_threshold(
2468        params: *const snd_pcm_sw_params_t,
2469        val: *mut snd_pcm_uframes_t,
2470    ) -> ::std::os::raw::c_int;
2471}
2472extern "C" {
2473    pub fn snd_pcm_sw_params_set_silence_threshold(
2474        pcm: *mut snd_pcm_t,
2475        params: *mut snd_pcm_sw_params_t,
2476        val: snd_pcm_uframes_t,
2477    ) -> ::std::os::raw::c_int;
2478}
2479extern "C" {
2480    pub fn snd_pcm_sw_params_get_silence_threshold(
2481        params: *const snd_pcm_sw_params_t,
2482        val: *mut snd_pcm_uframes_t,
2483    ) -> ::std::os::raw::c_int;
2484}
2485extern "C" {
2486    pub fn snd_pcm_sw_params_set_silence_size(
2487        pcm: *mut snd_pcm_t,
2488        params: *mut snd_pcm_sw_params_t,
2489        val: snd_pcm_uframes_t,
2490    ) -> ::std::os::raw::c_int;
2491}
2492extern "C" {
2493    pub fn snd_pcm_sw_params_get_silence_size(
2494        params: *const snd_pcm_sw_params_t,
2495        val: *mut snd_pcm_uframes_t,
2496    ) -> ::std::os::raw::c_int;
2497}
2498extern "C" {
2499    pub fn snd_pcm_access_mask_sizeof() -> usize;
2500}
2501extern "C" {
2502    pub fn snd_pcm_access_mask_malloc(
2503        ptr: *mut *mut snd_pcm_access_mask_t,
2504    ) -> ::std::os::raw::c_int;
2505}
2506extern "C" {
2507    pub fn snd_pcm_access_mask_free(obj: *mut snd_pcm_access_mask_t);
2508}
2509extern "C" {
2510    pub fn snd_pcm_access_mask_copy(
2511        dst: *mut snd_pcm_access_mask_t,
2512        src: *const snd_pcm_access_mask_t,
2513    );
2514}
2515extern "C" {
2516    pub fn snd_pcm_access_mask_none(mask: *mut snd_pcm_access_mask_t);
2517}
2518extern "C" {
2519    pub fn snd_pcm_access_mask_any(mask: *mut snd_pcm_access_mask_t);
2520}
2521extern "C" {
2522    pub fn snd_pcm_access_mask_test(
2523        mask: *const snd_pcm_access_mask_t,
2524        val: snd_pcm_access_t,
2525    ) -> ::std::os::raw::c_int;
2526}
2527extern "C" {
2528    pub fn snd_pcm_access_mask_empty(mask: *const snd_pcm_access_mask_t) -> ::std::os::raw::c_int;
2529}
2530extern "C" {
2531    pub fn snd_pcm_access_mask_set(mask: *mut snd_pcm_access_mask_t, val: snd_pcm_access_t);
2532}
2533extern "C" {
2534    pub fn snd_pcm_access_mask_reset(mask: *mut snd_pcm_access_mask_t, val: snd_pcm_access_t);
2535}
2536extern "C" {
2537    pub fn snd_pcm_format_mask_sizeof() -> usize;
2538}
2539extern "C" {
2540    pub fn snd_pcm_format_mask_malloc(
2541        ptr: *mut *mut snd_pcm_format_mask_t,
2542    ) -> ::std::os::raw::c_int;
2543}
2544extern "C" {
2545    pub fn snd_pcm_format_mask_free(obj: *mut snd_pcm_format_mask_t);
2546}
2547extern "C" {
2548    pub fn snd_pcm_format_mask_copy(
2549        dst: *mut snd_pcm_format_mask_t,
2550        src: *const snd_pcm_format_mask_t,
2551    );
2552}
2553extern "C" {
2554    pub fn snd_pcm_format_mask_none(mask: *mut snd_pcm_format_mask_t);
2555}
2556extern "C" {
2557    pub fn snd_pcm_format_mask_any(mask: *mut snd_pcm_format_mask_t);
2558}
2559extern "C" {
2560    pub fn snd_pcm_format_mask_test(
2561        mask: *const snd_pcm_format_mask_t,
2562        val: snd_pcm_format_t,
2563    ) -> ::std::os::raw::c_int;
2564}
2565extern "C" {
2566    pub fn snd_pcm_format_mask_empty(mask: *const snd_pcm_format_mask_t) -> ::std::os::raw::c_int;
2567}
2568extern "C" {
2569    pub fn snd_pcm_format_mask_set(mask: *mut snd_pcm_format_mask_t, val: snd_pcm_format_t);
2570}
2571extern "C" {
2572    pub fn snd_pcm_format_mask_reset(mask: *mut snd_pcm_format_mask_t, val: snd_pcm_format_t);
2573}
2574extern "C" {
2575    pub fn snd_pcm_subformat_mask_sizeof() -> usize;
2576}
2577extern "C" {
2578    pub fn snd_pcm_subformat_mask_malloc(
2579        ptr: *mut *mut snd_pcm_subformat_mask_t,
2580    ) -> ::std::os::raw::c_int;
2581}
2582extern "C" {
2583    pub fn snd_pcm_subformat_mask_free(obj: *mut snd_pcm_subformat_mask_t);
2584}
2585extern "C" {
2586    pub fn snd_pcm_subformat_mask_copy(
2587        dst: *mut snd_pcm_subformat_mask_t,
2588        src: *const snd_pcm_subformat_mask_t,
2589    );
2590}
2591extern "C" {
2592    pub fn snd_pcm_subformat_mask_none(mask: *mut snd_pcm_subformat_mask_t);
2593}
2594extern "C" {
2595    pub fn snd_pcm_subformat_mask_any(mask: *mut snd_pcm_subformat_mask_t);
2596}
2597extern "C" {
2598    pub fn snd_pcm_subformat_mask_test(
2599        mask: *const snd_pcm_subformat_mask_t,
2600        val: snd_pcm_subformat_t,
2601    ) -> ::std::os::raw::c_int;
2602}
2603extern "C" {
2604    pub fn snd_pcm_subformat_mask_empty(
2605        mask: *const snd_pcm_subformat_mask_t,
2606    ) -> ::std::os::raw::c_int;
2607}
2608extern "C" {
2609    pub fn snd_pcm_subformat_mask_set(
2610        mask: *mut snd_pcm_subformat_mask_t,
2611        val: snd_pcm_subformat_t,
2612    );
2613}
2614extern "C" {
2615    pub fn snd_pcm_subformat_mask_reset(
2616        mask: *mut snd_pcm_subformat_mask_t,
2617        val: snd_pcm_subformat_t,
2618    );
2619}
2620extern "C" {
2621    pub fn snd_pcm_status_sizeof() -> usize;
2622}
2623extern "C" {
2624    pub fn snd_pcm_status_malloc(ptr: *mut *mut snd_pcm_status_t) -> ::std::os::raw::c_int;
2625}
2626extern "C" {
2627    pub fn snd_pcm_status_free(obj: *mut snd_pcm_status_t);
2628}
2629extern "C" {
2630    pub fn snd_pcm_status_copy(dst: *mut snd_pcm_status_t, src: *const snd_pcm_status_t);
2631}
2632extern "C" {
2633    pub fn snd_pcm_status_get_state(obj: *const snd_pcm_status_t) -> snd_pcm_state_t;
2634}
2635extern "C" {
2636    pub fn snd_pcm_status_get_trigger_tstamp(
2637        obj: *const snd_pcm_status_t,
2638        ptr: *mut snd_timestamp_t,
2639    );
2640}
2641extern "C" {
2642    pub fn snd_pcm_status_get_trigger_htstamp(
2643        obj: *const snd_pcm_status_t,
2644        ptr: *mut snd_htimestamp_t,
2645    );
2646}
2647extern "C" {
2648    pub fn snd_pcm_status_get_tstamp(obj: *const snd_pcm_status_t, ptr: *mut snd_timestamp_t);
2649}
2650extern "C" {
2651    pub fn snd_pcm_status_get_htstamp(obj: *const snd_pcm_status_t, ptr: *mut snd_htimestamp_t);
2652}
2653extern "C" {
2654    pub fn snd_pcm_status_get_audio_htstamp(
2655        obj: *const snd_pcm_status_t,
2656        ptr: *mut snd_htimestamp_t,
2657    );
2658}
2659extern "C" {
2660    pub fn snd_pcm_status_get_driver_htstamp(
2661        obj: *const snd_pcm_status_t,
2662        ptr: *mut snd_htimestamp_t,
2663    );
2664}
2665extern "C" {
2666    pub fn snd_pcm_status_get_audio_htstamp_report(
2667        obj: *const snd_pcm_status_t,
2668        audio_tstamp_report: *mut snd_pcm_audio_tstamp_report_t,
2669    );
2670}
2671extern "C" {
2672    pub fn snd_pcm_status_set_audio_htstamp_config(
2673        obj: *mut snd_pcm_status_t,
2674        audio_tstamp_config: *mut snd_pcm_audio_tstamp_config_t,
2675    );
2676}
2677extern "C" {
2678    pub fn snd_pcm_status_get_delay(obj: *const snd_pcm_status_t) -> snd_pcm_sframes_t;
2679}
2680extern "C" {
2681    pub fn snd_pcm_status_get_avail(obj: *const snd_pcm_status_t) -> snd_pcm_uframes_t;
2682}
2683extern "C" {
2684    pub fn snd_pcm_status_get_avail_max(obj: *const snd_pcm_status_t) -> snd_pcm_uframes_t;
2685}
2686extern "C" {
2687    pub fn snd_pcm_status_get_overrange(obj: *const snd_pcm_status_t) -> snd_pcm_uframes_t;
2688}
2689extern "C" {
2690    pub fn snd_pcm_type_name(type_: snd_pcm_type_t) -> *const ::std::os::raw::c_char;
2691}
2692extern "C" {
2693    pub fn snd_pcm_stream_name(stream: snd_pcm_stream_t) -> *const ::std::os::raw::c_char;
2694}
2695extern "C" {
2696    pub fn snd_pcm_access_name(_access: snd_pcm_access_t) -> *const ::std::os::raw::c_char;
2697}
2698extern "C" {
2699    pub fn snd_pcm_format_name(format: snd_pcm_format_t) -> *const ::std::os::raw::c_char;
2700}
2701extern "C" {
2702    pub fn snd_pcm_format_description(format: snd_pcm_format_t) -> *const ::std::os::raw::c_char;
2703}
2704extern "C" {
2705    pub fn snd_pcm_subformat_name(subformat: snd_pcm_subformat_t) -> *const ::std::os::raw::c_char;
2706}
2707extern "C" {
2708    pub fn snd_pcm_subformat_description(
2709        subformat: snd_pcm_subformat_t,
2710    ) -> *const ::std::os::raw::c_char;
2711}
2712extern "C" {
2713    pub fn snd_pcm_format_value(name: *const ::std::os::raw::c_char) -> snd_pcm_format_t;
2714}
2715extern "C" {
2716    pub fn snd_pcm_tstamp_mode_name(mode: snd_pcm_tstamp_t) -> *const ::std::os::raw::c_char;
2717}
2718extern "C" {
2719    pub fn snd_pcm_state_name(state: snd_pcm_state_t) -> *const ::std::os::raw::c_char;
2720}
2721extern "C" {
2722    pub fn snd_pcm_dump(pcm: *mut snd_pcm_t, out: *mut snd_output_t) -> ::std::os::raw::c_int;
2723}
2724extern "C" {
2725    pub fn snd_pcm_dump_hw_setup(
2726        pcm: *mut snd_pcm_t,
2727        out: *mut snd_output_t,
2728    ) -> ::std::os::raw::c_int;
2729}
2730extern "C" {
2731    pub fn snd_pcm_dump_sw_setup(
2732        pcm: *mut snd_pcm_t,
2733        out: *mut snd_output_t,
2734    ) -> ::std::os::raw::c_int;
2735}
2736extern "C" {
2737    pub fn snd_pcm_dump_setup(pcm: *mut snd_pcm_t, out: *mut snd_output_t)
2738        -> ::std::os::raw::c_int;
2739}
2740extern "C" {
2741    pub fn snd_pcm_hw_params_dump(
2742        params: *mut snd_pcm_hw_params_t,
2743        out: *mut snd_output_t,
2744    ) -> ::std::os::raw::c_int;
2745}
2746extern "C" {
2747    pub fn snd_pcm_sw_params_dump(
2748        params: *mut snd_pcm_sw_params_t,
2749        out: *mut snd_output_t,
2750    ) -> ::std::os::raw::c_int;
2751}
2752extern "C" {
2753    pub fn snd_pcm_status_dump(
2754        status: *mut snd_pcm_status_t,
2755        out: *mut snd_output_t,
2756    ) -> ::std::os::raw::c_int;
2757}
2758extern "C" {
2759    pub fn snd_pcm_mmap_begin(
2760        pcm: *mut snd_pcm_t,
2761        areas: *mut *const snd_pcm_channel_area_t,
2762        offset: *mut snd_pcm_uframes_t,
2763        frames: *mut snd_pcm_uframes_t,
2764    ) -> ::std::os::raw::c_int;
2765}
2766extern "C" {
2767    pub fn snd_pcm_mmap_commit(
2768        pcm: *mut snd_pcm_t,
2769        offset: snd_pcm_uframes_t,
2770        frames: snd_pcm_uframes_t,
2771    ) -> snd_pcm_sframes_t;
2772}
2773extern "C" {
2774    pub fn snd_pcm_mmap_writei(
2775        pcm: *mut snd_pcm_t,
2776        buffer: *const ::std::os::raw::c_void,
2777        size: snd_pcm_uframes_t,
2778    ) -> snd_pcm_sframes_t;
2779}
2780extern "C" {
2781    pub fn snd_pcm_mmap_readi(
2782        pcm: *mut snd_pcm_t,
2783        buffer: *mut ::std::os::raw::c_void,
2784        size: snd_pcm_uframes_t,
2785    ) -> snd_pcm_sframes_t;
2786}
2787extern "C" {
2788    pub fn snd_pcm_mmap_writen(
2789        pcm: *mut snd_pcm_t,
2790        bufs: *mut *mut ::std::os::raw::c_void,
2791        size: snd_pcm_uframes_t,
2792    ) -> snd_pcm_sframes_t;
2793}
2794extern "C" {
2795    pub fn snd_pcm_mmap_readn(
2796        pcm: *mut snd_pcm_t,
2797        bufs: *mut *mut ::std::os::raw::c_void,
2798        size: snd_pcm_uframes_t,
2799    ) -> snd_pcm_sframes_t;
2800}
2801extern "C" {
2802    pub fn snd_pcm_format_signed(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2803}
2804extern "C" {
2805    pub fn snd_pcm_format_unsigned(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2806}
2807extern "C" {
2808    pub fn snd_pcm_format_linear(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2809}
2810extern "C" {
2811    pub fn snd_pcm_format_float(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2812}
2813extern "C" {
2814    pub fn snd_pcm_format_little_endian(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2815}
2816extern "C" {
2817    pub fn snd_pcm_format_big_endian(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2818}
2819extern "C" {
2820    pub fn snd_pcm_format_cpu_endian(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2821}
2822extern "C" {
2823    pub fn snd_pcm_format_width(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2824}
2825extern "C" {
2826    pub fn snd_pcm_format_physical_width(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
2827}
2828extern "C" {
2829    pub fn snd_pcm_build_linear_format(
2830        width: ::std::os::raw::c_int,
2831        pwidth: ::std::os::raw::c_int,
2832        unsignd: ::std::os::raw::c_int,
2833        big_endian: ::std::os::raw::c_int,
2834    ) -> snd_pcm_format_t;
2835}
2836extern "C" {
2837    pub fn snd_pcm_format_size(format: snd_pcm_format_t, samples: usize) -> isize;
2838}
2839extern "C" {
2840    pub fn snd_pcm_format_silence(format: snd_pcm_format_t) -> u8;
2841}
2842extern "C" {
2843    pub fn snd_pcm_format_silence_16(format: snd_pcm_format_t) -> u16;
2844}
2845extern "C" {
2846    pub fn snd_pcm_format_silence_32(format: snd_pcm_format_t) -> u32;
2847}
2848extern "C" {
2849    pub fn snd_pcm_format_silence_64(format: snd_pcm_format_t) -> u64;
2850}
2851extern "C" {
2852    pub fn snd_pcm_format_set_silence(
2853        format: snd_pcm_format_t,
2854        buf: *mut ::std::os::raw::c_void,
2855        samples: ::std::os::raw::c_uint,
2856    ) -> ::std::os::raw::c_int;
2857}
2858extern "C" {
2859    pub fn snd_pcm_bytes_to_frames(pcm: *mut snd_pcm_t, bytes: isize) -> snd_pcm_sframes_t;
2860}
2861extern "C" {
2862    pub fn snd_pcm_frames_to_bytes(pcm: *mut snd_pcm_t, frames: snd_pcm_sframes_t) -> isize;
2863}
2864extern "C" {
2865    pub fn snd_pcm_bytes_to_samples(pcm: *mut snd_pcm_t, bytes: isize) -> ::std::os::raw::c_long;
2866}
2867extern "C" {
2868    pub fn snd_pcm_samples_to_bytes(pcm: *mut snd_pcm_t, samples: ::std::os::raw::c_long) -> isize;
2869}
2870extern "C" {
2871    pub fn snd_pcm_area_silence(
2872        dst_channel: *const snd_pcm_channel_area_t,
2873        dst_offset: snd_pcm_uframes_t,
2874        samples: ::std::os::raw::c_uint,
2875        format: snd_pcm_format_t,
2876    ) -> ::std::os::raw::c_int;
2877}
2878extern "C" {
2879    pub fn snd_pcm_areas_silence(
2880        dst_channels: *const snd_pcm_channel_area_t,
2881        dst_offset: snd_pcm_uframes_t,
2882        channels: ::std::os::raw::c_uint,
2883        frames: snd_pcm_uframes_t,
2884        format: snd_pcm_format_t,
2885    ) -> ::std::os::raw::c_int;
2886}
2887extern "C" {
2888    pub fn snd_pcm_area_copy(
2889        dst_channel: *const snd_pcm_channel_area_t,
2890        dst_offset: snd_pcm_uframes_t,
2891        src_channel: *const snd_pcm_channel_area_t,
2892        src_offset: snd_pcm_uframes_t,
2893        samples: ::std::os::raw::c_uint,
2894        format: snd_pcm_format_t,
2895    ) -> ::std::os::raw::c_int;
2896}
2897extern "C" {
2898    pub fn snd_pcm_areas_copy(
2899        dst_channels: *const snd_pcm_channel_area_t,
2900        dst_offset: snd_pcm_uframes_t,
2901        src_channels: *const snd_pcm_channel_area_t,
2902        src_offset: snd_pcm_uframes_t,
2903        channels: ::std::os::raw::c_uint,
2904        frames: snd_pcm_uframes_t,
2905        format: snd_pcm_format_t,
2906    ) -> ::std::os::raw::c_int;
2907}
2908extern "C" {
2909    pub fn snd_pcm_areas_copy_wrap(
2910        dst_channels: *const snd_pcm_channel_area_t,
2911        dst_offset: snd_pcm_uframes_t,
2912        dst_size: snd_pcm_uframes_t,
2913        src_channels: *const snd_pcm_channel_area_t,
2914        src_offset: snd_pcm_uframes_t,
2915        src_size: snd_pcm_uframes_t,
2916        channels: ::std::os::raw::c_uint,
2917        frames: snd_pcm_uframes_t,
2918        format: snd_pcm_format_t,
2919    ) -> ::std::os::raw::c_int;
2920}
2921pub const SND_PCM_HOOK_TYPE_HW_PARAMS: _snd_pcm_hook_type = 0;
2922pub const SND_PCM_HOOK_TYPE_HW_FREE: _snd_pcm_hook_type = 1;
2923pub const SND_PCM_HOOK_TYPE_CLOSE: _snd_pcm_hook_type = 2;
2924pub const SND_PCM_HOOK_TYPE_LAST: _snd_pcm_hook_type = 2;
2925pub type _snd_pcm_hook_type = ::std::os::raw::c_uint;
2926pub use self::_snd_pcm_hook_type as snd_pcm_hook_type_t;
2927#[repr(C)]
2928#[derive(Debug, Copy, Clone)]
2929pub struct _snd_pcm_hook {
2930    _unused: [u8; 0],
2931}
2932pub type snd_pcm_hook_t = _snd_pcm_hook;
2933pub type snd_pcm_hook_func_t =
2934    ::std::option::Option<unsafe extern "C" fn(hook: *mut snd_pcm_hook_t) -> ::std::os::raw::c_int>;
2935extern "C" {
2936    pub fn snd_pcm_hook_get_pcm(hook: *mut snd_pcm_hook_t) -> *mut snd_pcm_t;
2937}
2938extern "C" {
2939    pub fn snd_pcm_hook_get_private(hook: *mut snd_pcm_hook_t) -> *mut ::std::os::raw::c_void;
2940}
2941extern "C" {
2942    pub fn snd_pcm_hook_set_private(
2943        hook: *mut snd_pcm_hook_t,
2944        private_data: *mut ::std::os::raw::c_void,
2945    );
2946}
2947extern "C" {
2948    pub fn snd_pcm_hook_add(
2949        hookp: *mut *mut snd_pcm_hook_t,
2950        pcm: *mut snd_pcm_t,
2951        type_: snd_pcm_hook_type_t,
2952        func: snd_pcm_hook_func_t,
2953        private_data: *mut ::std::os::raw::c_void,
2954    ) -> ::std::os::raw::c_int;
2955}
2956extern "C" {
2957    pub fn snd_pcm_hook_remove(hook: *mut snd_pcm_hook_t) -> ::std::os::raw::c_int;
2958}
2959#[repr(C)]
2960#[derive(Debug, Copy, Clone)]
2961pub struct _snd_pcm_scope_ops {
2962    pub enable: ::std::option::Option<
2963        unsafe extern "C" fn(scope: *mut snd_pcm_scope_t) -> ::std::os::raw::c_int,
2964    >,
2965    pub disable: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
2966    pub start: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
2967    pub stop: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
2968    pub update: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
2969    pub reset: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
2970    pub close: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
2971}
2972pub type snd_pcm_scope_ops_t = _snd_pcm_scope_ops;
2973extern "C" {
2974    pub fn snd_pcm_meter_get_bufsize(pcm: *mut snd_pcm_t) -> snd_pcm_uframes_t;
2975}
2976extern "C" {
2977    pub fn snd_pcm_meter_get_channels(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_uint;
2978}
2979extern "C" {
2980    pub fn snd_pcm_meter_get_rate(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_uint;
2981}
2982extern "C" {
2983    pub fn snd_pcm_meter_get_now(pcm: *mut snd_pcm_t) -> snd_pcm_uframes_t;
2984}
2985extern "C" {
2986    pub fn snd_pcm_meter_get_boundary(pcm: *mut snd_pcm_t) -> snd_pcm_uframes_t;
2987}
2988extern "C" {
2989    pub fn snd_pcm_meter_add_scope(
2990        pcm: *mut snd_pcm_t,
2991        scope: *mut snd_pcm_scope_t,
2992    ) -> ::std::os::raw::c_int;
2993}
2994extern "C" {
2995    pub fn snd_pcm_meter_search_scope(
2996        pcm: *mut snd_pcm_t,
2997        name: *const ::std::os::raw::c_char,
2998    ) -> *mut snd_pcm_scope_t;
2999}
3000extern "C" {
3001    pub fn snd_pcm_scope_malloc(ptr: *mut *mut snd_pcm_scope_t) -> ::std::os::raw::c_int;
3002}
3003extern "C" {
3004    pub fn snd_pcm_scope_set_ops(scope: *mut snd_pcm_scope_t, val: *const snd_pcm_scope_ops_t);
3005}
3006extern "C" {
3007    pub fn snd_pcm_scope_set_name(scope: *mut snd_pcm_scope_t, val: *const ::std::os::raw::c_char);
3008}
3009extern "C" {
3010    pub fn snd_pcm_scope_get_name(scope: *mut snd_pcm_scope_t) -> *const ::std::os::raw::c_char;
3011}
3012extern "C" {
3013    pub fn snd_pcm_scope_get_callback_private(
3014        scope: *mut snd_pcm_scope_t,
3015    ) -> *mut ::std::os::raw::c_void;
3016}
3017extern "C" {
3018    pub fn snd_pcm_scope_set_callback_private(
3019        scope: *mut snd_pcm_scope_t,
3020        val: *mut ::std::os::raw::c_void,
3021    );
3022}
3023extern "C" {
3024    pub fn snd_pcm_scope_s16_open(
3025        pcm: *mut snd_pcm_t,
3026        name: *const ::std::os::raw::c_char,
3027        scopep: *mut *mut snd_pcm_scope_t,
3028    ) -> ::std::os::raw::c_int;
3029}
3030extern "C" {
3031    pub fn snd_pcm_scope_s16_get_channel_buffer(
3032        scope: *mut snd_pcm_scope_t,
3033        channel: ::std::os::raw::c_uint,
3034    ) -> *mut i16;
3035}
3036pub const SND_SPCM_LATENCY_STANDARD: _snd_spcm_latency = 0;
3037pub const SND_SPCM_LATENCY_MEDIUM: _snd_spcm_latency = 1;
3038pub const SND_SPCM_LATENCY_REALTIME: _snd_spcm_latency = 2;
3039pub type _snd_spcm_latency = ::std::os::raw::c_uint;
3040pub use self::_snd_spcm_latency as snd_spcm_latency_t;
3041pub const SND_SPCM_XRUN_IGNORE: _snd_spcm_xrun_type = 0;
3042pub const SND_SPCM_XRUN_STOP: _snd_spcm_xrun_type = 1;
3043pub type _snd_spcm_xrun_type = ::std::os::raw::c_uint;
3044pub use self::_snd_spcm_xrun_type as snd_spcm_xrun_type_t;
3045pub const SND_SPCM_DUPLEX_LIBERAL: _snd_spcm_duplex_type = 0;
3046pub const SND_SPCM_DUPLEX_PEDANTIC: _snd_spcm_duplex_type = 1;
3047pub type _snd_spcm_duplex_type = ::std::os::raw::c_uint;
3048pub use self::_snd_spcm_duplex_type as snd_spcm_duplex_type_t;
3049extern "C" {
3050    pub fn snd_spcm_init(
3051        pcm: *mut snd_pcm_t,
3052        rate: ::std::os::raw::c_uint,
3053        channels: ::std::os::raw::c_uint,
3054        format: snd_pcm_format_t,
3055        subformat: snd_pcm_subformat_t,
3056        latency: snd_spcm_latency_t,
3057        _access: snd_pcm_access_t,
3058        xrun_type: snd_spcm_xrun_type_t,
3059    ) -> ::std::os::raw::c_int;
3060}
3061extern "C" {
3062    pub fn snd_spcm_init_duplex(
3063        playback_pcm: *mut snd_pcm_t,
3064        capture_pcm: *mut snd_pcm_t,
3065        rate: ::std::os::raw::c_uint,
3066        channels: ::std::os::raw::c_uint,
3067        format: snd_pcm_format_t,
3068        subformat: snd_pcm_subformat_t,
3069        latency: snd_spcm_latency_t,
3070        _access: snd_pcm_access_t,
3071        xrun_type: snd_spcm_xrun_type_t,
3072        duplex_type: snd_spcm_duplex_type_t,
3073    ) -> ::std::os::raw::c_int;
3074}
3075extern "C" {
3076    pub fn snd_spcm_init_get_params(
3077        pcm: *mut snd_pcm_t,
3078        rate: *mut ::std::os::raw::c_uint,
3079        buffer_size: *mut snd_pcm_uframes_t,
3080        period_size: *mut snd_pcm_uframes_t,
3081    ) -> ::std::os::raw::c_int;
3082}
3083extern "C" {
3084    pub fn snd_pcm_start_mode_name(mode: snd_pcm_start_t) -> *const ::std::os::raw::c_char;
3085}
3086extern "C" {
3087    pub fn snd_pcm_xrun_mode_name(mode: snd_pcm_xrun_t) -> *const ::std::os::raw::c_char;
3088}
3089extern "C" {
3090    pub fn snd_pcm_sw_params_set_start_mode(
3091        pcm: *mut snd_pcm_t,
3092        params: *mut snd_pcm_sw_params_t,
3093        val: snd_pcm_start_t,
3094    ) -> ::std::os::raw::c_int;
3095}
3096extern "C" {
3097    pub fn snd_pcm_sw_params_get_start_mode(params: *const snd_pcm_sw_params_t) -> snd_pcm_start_t;
3098}
3099extern "C" {
3100    pub fn snd_pcm_sw_params_set_xrun_mode(
3101        pcm: *mut snd_pcm_t,
3102        params: *mut snd_pcm_sw_params_t,
3103        val: snd_pcm_xrun_t,
3104    ) -> ::std::os::raw::c_int;
3105}
3106extern "C" {
3107    pub fn snd_pcm_sw_params_get_xrun_mode(params: *const snd_pcm_sw_params_t) -> snd_pcm_xrun_t;
3108}
3109extern "C" {
3110    pub fn snd_pcm_sw_params_set_xfer_align(
3111        pcm: *mut snd_pcm_t,
3112        params: *mut snd_pcm_sw_params_t,
3113        val: snd_pcm_uframes_t,
3114    ) -> ::std::os::raw::c_int;
3115}
3116extern "C" {
3117    pub fn snd_pcm_sw_params_get_xfer_align(
3118        params: *const snd_pcm_sw_params_t,
3119        val: *mut snd_pcm_uframes_t,
3120    ) -> ::std::os::raw::c_int;
3121}
3122extern "C" {
3123    pub fn snd_pcm_sw_params_set_sleep_min(
3124        pcm: *mut snd_pcm_t,
3125        params: *mut snd_pcm_sw_params_t,
3126        val: ::std::os::raw::c_uint,
3127    ) -> ::std::os::raw::c_int;
3128}
3129extern "C" {
3130    pub fn snd_pcm_sw_params_get_sleep_min(
3131        params: *const snd_pcm_sw_params_t,
3132        val: *mut ::std::os::raw::c_uint,
3133    ) -> ::std::os::raw::c_int;
3134}
3135extern "C" {
3136    pub fn snd_pcm_hw_params_get_tick_time(
3137        params: *const snd_pcm_hw_params_t,
3138        val: *mut ::std::os::raw::c_uint,
3139        dir: *mut ::std::os::raw::c_int,
3140    ) -> ::std::os::raw::c_int;
3141}
3142extern "C" {
3143    pub fn snd_pcm_hw_params_get_tick_time_min(
3144        params: *const snd_pcm_hw_params_t,
3145        val: *mut ::std::os::raw::c_uint,
3146        dir: *mut ::std::os::raw::c_int,
3147    ) -> ::std::os::raw::c_int;
3148}
3149extern "C" {
3150    pub fn snd_pcm_hw_params_get_tick_time_max(
3151        params: *const snd_pcm_hw_params_t,
3152        val: *mut ::std::os::raw::c_uint,
3153        dir: *mut ::std::os::raw::c_int,
3154    ) -> ::std::os::raw::c_int;
3155}
3156extern "C" {
3157    pub fn snd_pcm_hw_params_test_tick_time(
3158        pcm: *mut snd_pcm_t,
3159        params: *mut snd_pcm_hw_params_t,
3160        val: ::std::os::raw::c_uint,
3161        dir: ::std::os::raw::c_int,
3162    ) -> ::std::os::raw::c_int;
3163}
3164extern "C" {
3165    pub fn snd_pcm_hw_params_set_tick_time(
3166        pcm: *mut snd_pcm_t,
3167        params: *mut snd_pcm_hw_params_t,
3168        val: ::std::os::raw::c_uint,
3169        dir: ::std::os::raw::c_int,
3170    ) -> ::std::os::raw::c_int;
3171}
3172extern "C" {
3173    pub fn snd_pcm_hw_params_set_tick_time_min(
3174        pcm: *mut snd_pcm_t,
3175        params: *mut snd_pcm_hw_params_t,
3176        val: *mut ::std::os::raw::c_uint,
3177        dir: *mut ::std::os::raw::c_int,
3178    ) -> ::std::os::raw::c_int;
3179}
3180extern "C" {
3181    pub fn snd_pcm_hw_params_set_tick_time_max(
3182        pcm: *mut snd_pcm_t,
3183        params: *mut snd_pcm_hw_params_t,
3184        val: *mut ::std::os::raw::c_uint,
3185        dir: *mut ::std::os::raw::c_int,
3186    ) -> ::std::os::raw::c_int;
3187}
3188extern "C" {
3189    pub fn snd_pcm_hw_params_set_tick_time_minmax(
3190        pcm: *mut snd_pcm_t,
3191        params: *mut snd_pcm_hw_params_t,
3192        min: *mut ::std::os::raw::c_uint,
3193        mindir: *mut ::std::os::raw::c_int,
3194        max: *mut ::std::os::raw::c_uint,
3195        maxdir: *mut ::std::os::raw::c_int,
3196    ) -> ::std::os::raw::c_int;
3197}
3198extern "C" {
3199    pub fn snd_pcm_hw_params_set_tick_time_near(
3200        pcm: *mut snd_pcm_t,
3201        params: *mut snd_pcm_hw_params_t,
3202        val: *mut ::std::os::raw::c_uint,
3203        dir: *mut ::std::os::raw::c_int,
3204    ) -> ::std::os::raw::c_int;
3205}
3206extern "C" {
3207    pub fn snd_pcm_hw_params_set_tick_time_first(
3208        pcm: *mut snd_pcm_t,
3209        params: *mut snd_pcm_hw_params_t,
3210        val: *mut ::std::os::raw::c_uint,
3211        dir: *mut ::std::os::raw::c_int,
3212    ) -> ::std::os::raw::c_int;
3213}
3214extern "C" {
3215    pub fn snd_pcm_hw_params_set_tick_time_last(
3216        pcm: *mut snd_pcm_t,
3217        params: *mut snd_pcm_hw_params_t,
3218        val: *mut ::std::os::raw::c_uint,
3219        dir: *mut ::std::os::raw::c_int,
3220    ) -> ::std::os::raw::c_int;
3221}
3222#[repr(C)]
3223#[derive(Debug, Copy, Clone)]
3224pub struct _snd_rawmidi_info {
3225    _unused: [u8; 0],
3226}
3227pub type snd_rawmidi_info_t = _snd_rawmidi_info;
3228#[repr(C)]
3229#[derive(Debug, Copy, Clone)]
3230pub struct _snd_rawmidi_params {
3231    _unused: [u8; 0],
3232}
3233pub type snd_rawmidi_params_t = _snd_rawmidi_params;
3234#[repr(C)]
3235#[derive(Debug, Copy, Clone)]
3236pub struct _snd_rawmidi_status {
3237    _unused: [u8; 0],
3238}
3239pub type snd_rawmidi_status_t = _snd_rawmidi_status;
3240pub const SND_RAWMIDI_STREAM_OUTPUT: _snd_rawmidi_stream = 0;
3241pub const SND_RAWMIDI_STREAM_INPUT: _snd_rawmidi_stream = 1;
3242pub const SND_RAWMIDI_STREAM_LAST: _snd_rawmidi_stream = 1;
3243pub type _snd_rawmidi_stream = ::std::os::raw::c_uint;
3244pub use self::_snd_rawmidi_stream as snd_rawmidi_stream_t;
3245#[repr(C)]
3246#[derive(Debug, Copy, Clone)]
3247pub struct _snd_rawmidi {
3248    _unused: [u8; 0],
3249}
3250pub type snd_rawmidi_t = _snd_rawmidi;
3251pub const SND_RAWMIDI_TYPE_HW: _snd_rawmidi_type = 0;
3252pub const SND_RAWMIDI_TYPE_SHM: _snd_rawmidi_type = 1;
3253pub const SND_RAWMIDI_TYPE_INET: _snd_rawmidi_type = 2;
3254pub const SND_RAWMIDI_TYPE_VIRTUAL: _snd_rawmidi_type = 3;
3255pub type _snd_rawmidi_type = ::std::os::raw::c_uint;
3256pub use self::_snd_rawmidi_type as snd_rawmidi_type_t;
3257extern "C" {
3258    pub fn snd_rawmidi_open(
3259        in_rmidi: *mut *mut snd_rawmidi_t,
3260        out_rmidi: *mut *mut snd_rawmidi_t,
3261        name: *const ::std::os::raw::c_char,
3262        mode: ::std::os::raw::c_int,
3263    ) -> ::std::os::raw::c_int;
3264}
3265extern "C" {
3266    pub fn snd_rawmidi_open_lconf(
3267        in_rmidi: *mut *mut snd_rawmidi_t,
3268        out_rmidi: *mut *mut snd_rawmidi_t,
3269        name: *const ::std::os::raw::c_char,
3270        mode: ::std::os::raw::c_int,
3271        lconf: *mut snd_config_t,
3272    ) -> ::std::os::raw::c_int;
3273}
3274extern "C" {
3275    pub fn snd_rawmidi_close(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
3276}
3277extern "C" {
3278    pub fn snd_rawmidi_poll_descriptors_count(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
3279}
3280extern "C" {
3281    pub fn snd_rawmidi_poll_descriptors(
3282        rmidi: *mut snd_rawmidi_t,
3283        pfds: *mut pollfd,
3284        space: ::std::os::raw::c_uint,
3285    ) -> ::std::os::raw::c_int;
3286}
3287extern "C" {
3288    pub fn snd_rawmidi_poll_descriptors_revents(
3289        rawmidi: *mut snd_rawmidi_t,
3290        pfds: *mut pollfd,
3291        nfds: ::std::os::raw::c_uint,
3292        revent: *mut ::std::os::raw::c_ushort,
3293    ) -> ::std::os::raw::c_int;
3294}
3295extern "C" {
3296    pub fn snd_rawmidi_nonblock(
3297        rmidi: *mut snd_rawmidi_t,
3298        nonblock: ::std::os::raw::c_int,
3299    ) -> ::std::os::raw::c_int;
3300}
3301extern "C" {
3302    pub fn snd_rawmidi_info_sizeof() -> usize;
3303}
3304extern "C" {
3305    pub fn snd_rawmidi_info_malloc(ptr: *mut *mut snd_rawmidi_info_t) -> ::std::os::raw::c_int;
3306}
3307extern "C" {
3308    pub fn snd_rawmidi_info_free(obj: *mut snd_rawmidi_info_t);
3309}
3310extern "C" {
3311    pub fn snd_rawmidi_info_copy(dst: *mut snd_rawmidi_info_t, src: *const snd_rawmidi_info_t);
3312}
3313extern "C" {
3314    pub fn snd_rawmidi_info_get_device(obj: *const snd_rawmidi_info_t) -> ::std::os::raw::c_uint;
3315}
3316extern "C" {
3317    pub fn snd_rawmidi_info_get_subdevice(obj: *const snd_rawmidi_info_t)
3318        -> ::std::os::raw::c_uint;
3319}
3320extern "C" {
3321    pub fn snd_rawmidi_info_get_stream(obj: *const snd_rawmidi_info_t) -> snd_rawmidi_stream_t;
3322}
3323extern "C" {
3324    pub fn snd_rawmidi_info_get_card(obj: *const snd_rawmidi_info_t) -> ::std::os::raw::c_int;
3325}
3326extern "C" {
3327    pub fn snd_rawmidi_info_get_flags(obj: *const snd_rawmidi_info_t) -> ::std::os::raw::c_uint;
3328}
3329extern "C" {
3330    pub fn snd_rawmidi_info_get_id(obj: *const snd_rawmidi_info_t)
3331        -> *const ::std::os::raw::c_char;
3332}
3333extern "C" {
3334    pub fn snd_rawmidi_info_get_name(
3335        obj: *const snd_rawmidi_info_t,
3336    ) -> *const ::std::os::raw::c_char;
3337}
3338extern "C" {
3339    pub fn snd_rawmidi_info_get_subdevice_name(
3340        obj: *const snd_rawmidi_info_t,
3341    ) -> *const ::std::os::raw::c_char;
3342}
3343extern "C" {
3344    pub fn snd_rawmidi_info_get_subdevices_count(
3345        obj: *const snd_rawmidi_info_t,
3346    ) -> ::std::os::raw::c_uint;
3347}
3348extern "C" {
3349    pub fn snd_rawmidi_info_get_subdevices_avail(
3350        obj: *const snd_rawmidi_info_t,
3351    ) -> ::std::os::raw::c_uint;
3352}
3353extern "C" {
3354    pub fn snd_rawmidi_info_set_device(obj: *mut snd_rawmidi_info_t, val: ::std::os::raw::c_uint);
3355}
3356extern "C" {
3357    pub fn snd_rawmidi_info_set_subdevice(
3358        obj: *mut snd_rawmidi_info_t,
3359        val: ::std::os::raw::c_uint,
3360    );
3361}
3362extern "C" {
3363    pub fn snd_rawmidi_info_set_stream(obj: *mut snd_rawmidi_info_t, val: snd_rawmidi_stream_t);
3364}
3365extern "C" {
3366    pub fn snd_rawmidi_info(
3367        rmidi: *mut snd_rawmidi_t,
3368        info: *mut snd_rawmidi_info_t,
3369    ) -> ::std::os::raw::c_int;
3370}
3371extern "C" {
3372    pub fn snd_rawmidi_params_sizeof() -> usize;
3373}
3374extern "C" {
3375    pub fn snd_rawmidi_params_malloc(ptr: *mut *mut snd_rawmidi_params_t) -> ::std::os::raw::c_int;
3376}
3377extern "C" {
3378    pub fn snd_rawmidi_params_free(obj: *mut snd_rawmidi_params_t);
3379}
3380extern "C" {
3381    pub fn snd_rawmidi_params_copy(
3382        dst: *mut snd_rawmidi_params_t,
3383        src: *const snd_rawmidi_params_t,
3384    );
3385}
3386extern "C" {
3387    pub fn snd_rawmidi_params_set_buffer_size(
3388        rmidi: *mut snd_rawmidi_t,
3389        params: *mut snd_rawmidi_params_t,
3390        val: usize,
3391    ) -> ::std::os::raw::c_int;
3392}
3393extern "C" {
3394    pub fn snd_rawmidi_params_get_buffer_size(params: *const snd_rawmidi_params_t) -> usize;
3395}
3396extern "C" {
3397    pub fn snd_rawmidi_params_set_avail_min(
3398        rmidi: *mut snd_rawmidi_t,
3399        params: *mut snd_rawmidi_params_t,
3400        val: usize,
3401    ) -> ::std::os::raw::c_int;
3402}
3403extern "C" {
3404    pub fn snd_rawmidi_params_get_avail_min(params: *const snd_rawmidi_params_t) -> usize;
3405}
3406extern "C" {
3407    pub fn snd_rawmidi_params_set_no_active_sensing(
3408        rmidi: *mut snd_rawmidi_t,
3409        params: *mut snd_rawmidi_params_t,
3410        val: ::std::os::raw::c_int,
3411    ) -> ::std::os::raw::c_int;
3412}
3413extern "C" {
3414    pub fn snd_rawmidi_params_get_no_active_sensing(
3415        params: *const snd_rawmidi_params_t,
3416    ) -> ::std::os::raw::c_int;
3417}
3418extern "C" {
3419    pub fn snd_rawmidi_params(
3420        rmidi: *mut snd_rawmidi_t,
3421        params: *mut snd_rawmidi_params_t,
3422    ) -> ::std::os::raw::c_int;
3423}
3424extern "C" {
3425    pub fn snd_rawmidi_params_current(
3426        rmidi: *mut snd_rawmidi_t,
3427        params: *mut snd_rawmidi_params_t,
3428    ) -> ::std::os::raw::c_int;
3429}
3430extern "C" {
3431    pub fn snd_rawmidi_status_sizeof() -> usize;
3432}
3433extern "C" {
3434    pub fn snd_rawmidi_status_malloc(ptr: *mut *mut snd_rawmidi_status_t) -> ::std::os::raw::c_int;
3435}
3436extern "C" {
3437    pub fn snd_rawmidi_status_free(obj: *mut snd_rawmidi_status_t);
3438}
3439extern "C" {
3440    pub fn snd_rawmidi_status_copy(
3441        dst: *mut snd_rawmidi_status_t,
3442        src: *const snd_rawmidi_status_t,
3443    );
3444}
3445extern "C" {
3446    pub fn snd_rawmidi_status_get_tstamp(
3447        obj: *const snd_rawmidi_status_t,
3448        ptr: *mut snd_htimestamp_t,
3449    );
3450}
3451extern "C" {
3452    pub fn snd_rawmidi_status_get_avail(obj: *const snd_rawmidi_status_t) -> usize;
3453}
3454extern "C" {
3455    pub fn snd_rawmidi_status_get_xruns(obj: *const snd_rawmidi_status_t) -> usize;
3456}
3457extern "C" {
3458    pub fn snd_rawmidi_status(
3459        rmidi: *mut snd_rawmidi_t,
3460        status: *mut snd_rawmidi_status_t,
3461    ) -> ::std::os::raw::c_int;
3462}
3463extern "C" {
3464    pub fn snd_rawmidi_drain(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
3465}
3466extern "C" {
3467    pub fn snd_rawmidi_drop(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
3468}
3469extern "C" {
3470    pub fn snd_rawmidi_write(
3471        rmidi: *mut snd_rawmidi_t,
3472        buffer: *const ::std::os::raw::c_void,
3473        size: usize,
3474    ) -> isize;
3475}
3476extern "C" {
3477    pub fn snd_rawmidi_read(
3478        rmidi: *mut snd_rawmidi_t,
3479        buffer: *mut ::std::os::raw::c_void,
3480        size: usize,
3481    ) -> isize;
3482}
3483extern "C" {
3484    pub fn snd_rawmidi_name(rmidi: *mut snd_rawmidi_t) -> *const ::std::os::raw::c_char;
3485}
3486extern "C" {
3487    pub fn snd_rawmidi_type(rmidi: *mut snd_rawmidi_t) -> snd_rawmidi_type_t;
3488}
3489extern "C" {
3490    pub fn snd_rawmidi_stream(rawmidi: *mut snd_rawmidi_t) -> snd_rawmidi_stream_t;
3491}
3492#[repr(C)]
3493#[derive(Debug, Copy, Clone)]
3494pub struct _snd_timer_id {
3495    _unused: [u8; 0],
3496}
3497pub type snd_timer_id_t = _snd_timer_id;
3498#[repr(C)]
3499#[derive(Debug, Copy, Clone)]
3500pub struct _snd_timer_ginfo {
3501    _unused: [u8; 0],
3502}
3503pub type snd_timer_ginfo_t = _snd_timer_ginfo;
3504#[repr(C)]
3505#[derive(Debug, Copy, Clone)]
3506pub struct _snd_timer_gparams {
3507    _unused: [u8; 0],
3508}
3509pub type snd_timer_gparams_t = _snd_timer_gparams;
3510#[repr(C)]
3511#[derive(Debug, Copy, Clone)]
3512pub struct _snd_timer_gstatus {
3513    _unused: [u8; 0],
3514}
3515pub type snd_timer_gstatus_t = _snd_timer_gstatus;
3516#[repr(C)]
3517#[derive(Debug, Copy, Clone)]
3518pub struct _snd_timer_info {
3519    _unused: [u8; 0],
3520}
3521pub type snd_timer_info_t = _snd_timer_info;
3522#[repr(C)]
3523#[derive(Debug, Copy, Clone)]
3524pub struct _snd_timer_params {
3525    _unused: [u8; 0],
3526}
3527pub type snd_timer_params_t = _snd_timer_params;
3528#[repr(C)]
3529#[derive(Debug, Copy, Clone)]
3530pub struct _snd_timer_status {
3531    _unused: [u8; 0],
3532}
3533pub type snd_timer_status_t = _snd_timer_status;
3534pub const SND_TIMER_CLASS_NONE: _snd_timer_class = -1;
3535pub const SND_TIMER_CLASS_SLAVE: _snd_timer_class = 0;
3536pub const SND_TIMER_CLASS_GLOBAL: _snd_timer_class = 1;
3537pub const SND_TIMER_CLASS_CARD: _snd_timer_class = 2;
3538pub const SND_TIMER_CLASS_PCM: _snd_timer_class = 3;
3539pub const SND_TIMER_CLASS_LAST: _snd_timer_class = 3;
3540pub type _snd_timer_class = ::std::os::raw::c_int;
3541pub use self::_snd_timer_class as snd_timer_class_t;
3542pub const SND_TIMER_SCLASS_NONE: _snd_timer_slave_class = 0;
3543pub const SND_TIMER_SCLASS_APPLICATION: _snd_timer_slave_class = 1;
3544pub const SND_TIMER_SCLASS_SEQUENCER: _snd_timer_slave_class = 2;
3545pub const SND_TIMER_SCLASS_OSS_SEQUENCER: _snd_timer_slave_class = 3;
3546pub const SND_TIMER_SCLASS_LAST: _snd_timer_slave_class = 3;
3547pub type _snd_timer_slave_class = ::std::os::raw::c_uint;
3548pub use self::_snd_timer_slave_class as snd_timer_slave_class_t;
3549pub const SND_TIMER_EVENT_RESOLUTION: _snd_timer_event = 0;
3550pub const SND_TIMER_EVENT_TICK: _snd_timer_event = 1;
3551pub const SND_TIMER_EVENT_START: _snd_timer_event = 2;
3552pub const SND_TIMER_EVENT_STOP: _snd_timer_event = 3;
3553pub const SND_TIMER_EVENT_CONTINUE: _snd_timer_event = 4;
3554pub const SND_TIMER_EVENT_PAUSE: _snd_timer_event = 5;
3555pub const SND_TIMER_EVENT_EARLY: _snd_timer_event = 6;
3556pub const SND_TIMER_EVENT_SUSPEND: _snd_timer_event = 7;
3557pub const SND_TIMER_EVENT_RESUME: _snd_timer_event = 8;
3558pub const SND_TIMER_EVENT_MSTART: _snd_timer_event = 12;
3559pub const SND_TIMER_EVENT_MSTOP: _snd_timer_event = 13;
3560pub const SND_TIMER_EVENT_MCONTINUE: _snd_timer_event = 14;
3561pub const SND_TIMER_EVENT_MPAUSE: _snd_timer_event = 15;
3562pub const SND_TIMER_EVENT_MSUSPEND: _snd_timer_event = 17;
3563pub const SND_TIMER_EVENT_MRESUME: _snd_timer_event = 18;
3564pub type _snd_timer_event = ::std::os::raw::c_uint;
3565pub use self::_snd_timer_event as snd_timer_event_t;
3566#[repr(C)]
3567#[derive(Debug, Copy, Clone)]
3568pub struct _snd_timer_read {
3569    pub resolution: ::std::os::raw::c_uint,
3570    pub ticks: ::std::os::raw::c_uint,
3571}
3572pub type snd_timer_read_t = _snd_timer_read;
3573#[repr(C)]
3574pub struct _snd_timer_tread {
3575    pub event: snd_timer_event_t,
3576    pub tstamp: snd_htimestamp_t,
3577    pub val: ::std::os::raw::c_uint,
3578}
3579pub type snd_timer_tread_t = _snd_timer_tread;
3580pub const SND_TIMER_TYPE_HW: _snd_timer_type = 0;
3581pub const SND_TIMER_TYPE_SHM: _snd_timer_type = 1;
3582pub const SND_TIMER_TYPE_INET: _snd_timer_type = 2;
3583pub type _snd_timer_type = ::std::os::raw::c_uint;
3584pub use self::_snd_timer_type as snd_timer_type_t;
3585#[repr(C)]
3586#[derive(Debug, Copy, Clone)]
3587pub struct _snd_timer_query {
3588    _unused: [u8; 0],
3589}
3590pub type snd_timer_query_t = _snd_timer_query;
3591#[repr(C)]
3592#[derive(Debug, Copy, Clone)]
3593pub struct _snd_timer {
3594    _unused: [u8; 0],
3595}
3596pub type snd_timer_t = _snd_timer;
3597extern "C" {
3598    pub fn snd_timer_query_open(
3599        handle: *mut *mut snd_timer_query_t,
3600        name: *const ::std::os::raw::c_char,
3601        mode: ::std::os::raw::c_int,
3602    ) -> ::std::os::raw::c_int;
3603}
3604extern "C" {
3605    pub fn snd_timer_query_open_lconf(
3606        handle: *mut *mut snd_timer_query_t,
3607        name: *const ::std::os::raw::c_char,
3608        mode: ::std::os::raw::c_int,
3609        lconf: *mut snd_config_t,
3610    ) -> ::std::os::raw::c_int;
3611}
3612extern "C" {
3613    pub fn snd_timer_query_close(handle: *mut snd_timer_query_t) -> ::std::os::raw::c_int;
3614}
3615extern "C" {
3616    pub fn snd_timer_query_next_device(
3617        handle: *mut snd_timer_query_t,
3618        tid: *mut snd_timer_id_t,
3619    ) -> ::std::os::raw::c_int;
3620}
3621extern "C" {
3622    pub fn snd_timer_query_info(
3623        handle: *mut snd_timer_query_t,
3624        info: *mut snd_timer_ginfo_t,
3625    ) -> ::std::os::raw::c_int;
3626}
3627extern "C" {
3628    pub fn snd_timer_query_params(
3629        handle: *mut snd_timer_query_t,
3630        params: *mut snd_timer_gparams_t,
3631    ) -> ::std::os::raw::c_int;
3632}
3633extern "C" {
3634    pub fn snd_timer_query_status(
3635        handle: *mut snd_timer_query_t,
3636        status: *mut snd_timer_gstatus_t,
3637    ) -> ::std::os::raw::c_int;
3638}
3639extern "C" {
3640    pub fn snd_timer_open(
3641        handle: *mut *mut snd_timer_t,
3642        name: *const ::std::os::raw::c_char,
3643        mode: ::std::os::raw::c_int,
3644    ) -> ::std::os::raw::c_int;
3645}
3646extern "C" {
3647    pub fn snd_timer_open_lconf(
3648        handle: *mut *mut snd_timer_t,
3649        name: *const ::std::os::raw::c_char,
3650        mode: ::std::os::raw::c_int,
3651        lconf: *mut snd_config_t,
3652    ) -> ::std::os::raw::c_int;
3653}
3654extern "C" {
3655    pub fn snd_timer_close(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
3656}
3657extern "C" {
3658    pub fn snd_async_add_timer_handler(
3659        handler: *mut *mut snd_async_handler_t,
3660        timer: *mut snd_timer_t,
3661        callback: snd_async_callback_t,
3662        private_data: *mut ::std::os::raw::c_void,
3663    ) -> ::std::os::raw::c_int;
3664}
3665extern "C" {
3666    pub fn snd_async_handler_get_timer(handler: *mut snd_async_handler_t) -> *mut snd_timer_t;
3667}
3668extern "C" {
3669    pub fn snd_timer_poll_descriptors_count(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
3670}
3671extern "C" {
3672    pub fn snd_timer_poll_descriptors(
3673        handle: *mut snd_timer_t,
3674        pfds: *mut pollfd,
3675        space: ::std::os::raw::c_uint,
3676    ) -> ::std::os::raw::c_int;
3677}
3678extern "C" {
3679    pub fn snd_timer_poll_descriptors_revents(
3680        timer: *mut snd_timer_t,
3681        pfds: *mut pollfd,
3682        nfds: ::std::os::raw::c_uint,
3683        revents: *mut ::std::os::raw::c_ushort,
3684    ) -> ::std::os::raw::c_int;
3685}
3686extern "C" {
3687    pub fn snd_timer_info(
3688        handle: *mut snd_timer_t,
3689        timer: *mut snd_timer_info_t,
3690    ) -> ::std::os::raw::c_int;
3691}
3692extern "C" {
3693    pub fn snd_timer_params(
3694        handle: *mut snd_timer_t,
3695        params: *mut snd_timer_params_t,
3696    ) -> ::std::os::raw::c_int;
3697}
3698extern "C" {
3699    pub fn snd_timer_status(
3700        handle: *mut snd_timer_t,
3701        status: *mut snd_timer_status_t,
3702    ) -> ::std::os::raw::c_int;
3703}
3704extern "C" {
3705    pub fn snd_timer_start(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
3706}
3707extern "C" {
3708    pub fn snd_timer_stop(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
3709}
3710extern "C" {
3711    pub fn snd_timer_continue(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
3712}
3713extern "C" {
3714    pub fn snd_timer_read(
3715        handle: *mut snd_timer_t,
3716        buffer: *mut ::std::os::raw::c_void,
3717        size: usize,
3718    ) -> isize;
3719}
3720extern "C" {
3721    pub fn snd_timer_id_sizeof() -> usize;
3722}
3723extern "C" {
3724    pub fn snd_timer_id_malloc(ptr: *mut *mut snd_timer_id_t) -> ::std::os::raw::c_int;
3725}
3726extern "C" {
3727    pub fn snd_timer_id_free(obj: *mut snd_timer_id_t);
3728}
3729extern "C" {
3730    pub fn snd_timer_id_copy(dst: *mut snd_timer_id_t, src: *const snd_timer_id_t);
3731}
3732extern "C" {
3733    pub fn snd_timer_id_set_class(id: *mut snd_timer_id_t, dev_class: ::std::os::raw::c_int);
3734}
3735extern "C" {
3736    pub fn snd_timer_id_get_class(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
3737}
3738extern "C" {
3739    pub fn snd_timer_id_set_sclass(id: *mut snd_timer_id_t, dev_sclass: ::std::os::raw::c_int);
3740}
3741extern "C" {
3742    pub fn snd_timer_id_get_sclass(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
3743}
3744extern "C" {
3745    pub fn snd_timer_id_set_card(id: *mut snd_timer_id_t, card: ::std::os::raw::c_int);
3746}
3747extern "C" {
3748    pub fn snd_timer_id_get_card(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
3749}
3750extern "C" {
3751    pub fn snd_timer_id_set_device(id: *mut snd_timer_id_t, device: ::std::os::raw::c_int);
3752}
3753extern "C" {
3754    pub fn snd_timer_id_get_device(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
3755}
3756extern "C" {
3757    pub fn snd_timer_id_set_subdevice(id: *mut snd_timer_id_t, subdevice: ::std::os::raw::c_int);
3758}
3759extern "C" {
3760    pub fn snd_timer_id_get_subdevice(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
3761}
3762extern "C" {
3763    pub fn snd_timer_ginfo_sizeof() -> usize;
3764}
3765extern "C" {
3766    pub fn snd_timer_ginfo_malloc(ptr: *mut *mut snd_timer_ginfo_t) -> ::std::os::raw::c_int;
3767}
3768extern "C" {
3769    pub fn snd_timer_ginfo_free(obj: *mut snd_timer_ginfo_t);
3770}
3771extern "C" {
3772    pub fn snd_timer_ginfo_copy(dst: *mut snd_timer_ginfo_t, src: *const snd_timer_ginfo_t);
3773}
3774extern "C" {
3775    pub fn snd_timer_ginfo_set_tid(
3776        obj: *mut snd_timer_ginfo_t,
3777        tid: *mut snd_timer_id_t,
3778    ) -> ::std::os::raw::c_int;
3779}
3780extern "C" {
3781    pub fn snd_timer_ginfo_get_tid(obj: *mut snd_timer_ginfo_t) -> *mut snd_timer_id_t;
3782}
3783extern "C" {
3784    pub fn snd_timer_ginfo_get_flags(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_uint;
3785}
3786extern "C" {
3787    pub fn snd_timer_ginfo_get_card(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_int;
3788}
3789extern "C" {
3790    pub fn snd_timer_ginfo_get_id(obj: *mut snd_timer_ginfo_t) -> *mut ::std::os::raw::c_char;
3791}
3792extern "C" {
3793    pub fn snd_timer_ginfo_get_name(obj: *mut snd_timer_ginfo_t) -> *mut ::std::os::raw::c_char;
3794}
3795extern "C" {
3796    pub fn snd_timer_ginfo_get_resolution(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_ulong;
3797}
3798extern "C" {
3799    pub fn snd_timer_ginfo_get_resolution_min(
3800        obj: *mut snd_timer_ginfo_t,
3801    ) -> ::std::os::raw::c_ulong;
3802}
3803extern "C" {
3804    pub fn snd_timer_ginfo_get_resolution_max(
3805        obj: *mut snd_timer_ginfo_t,
3806    ) -> ::std::os::raw::c_ulong;
3807}
3808extern "C" {
3809    pub fn snd_timer_ginfo_get_clients(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_uint;
3810}
3811extern "C" {
3812    pub fn snd_timer_info_sizeof() -> usize;
3813}
3814extern "C" {
3815    pub fn snd_timer_info_malloc(ptr: *mut *mut snd_timer_info_t) -> ::std::os::raw::c_int;
3816}
3817extern "C" {
3818    pub fn snd_timer_info_free(obj: *mut snd_timer_info_t);
3819}
3820extern "C" {
3821    pub fn snd_timer_info_copy(dst: *mut snd_timer_info_t, src: *const snd_timer_info_t);
3822}
3823extern "C" {
3824    pub fn snd_timer_info_is_slave(info: *mut snd_timer_info_t) -> ::std::os::raw::c_int;
3825}
3826extern "C" {
3827    pub fn snd_timer_info_get_card(info: *mut snd_timer_info_t) -> ::std::os::raw::c_int;
3828}
3829extern "C" {
3830    pub fn snd_timer_info_get_id(info: *mut snd_timer_info_t) -> *const ::std::os::raw::c_char;
3831}
3832extern "C" {
3833    pub fn snd_timer_info_get_name(info: *mut snd_timer_info_t) -> *const ::std::os::raw::c_char;
3834}
3835extern "C" {
3836    pub fn snd_timer_info_get_resolution(info: *mut snd_timer_info_t) -> ::std::os::raw::c_long;
3837}
3838extern "C" {
3839    pub fn snd_timer_params_sizeof() -> usize;
3840}
3841extern "C" {
3842    pub fn snd_timer_params_malloc(ptr: *mut *mut snd_timer_params_t) -> ::std::os::raw::c_int;
3843}
3844extern "C" {
3845    pub fn snd_timer_params_free(obj: *mut snd_timer_params_t);
3846}
3847extern "C" {
3848    pub fn snd_timer_params_copy(dst: *mut snd_timer_params_t, src: *const snd_timer_params_t);
3849}
3850extern "C" {
3851    pub fn snd_timer_params_set_auto_start(
3852        params: *mut snd_timer_params_t,
3853        auto_start: ::std::os::raw::c_int,
3854    ) -> ::std::os::raw::c_int;
3855}
3856extern "C" {
3857    pub fn snd_timer_params_get_auto_start(
3858        params: *mut snd_timer_params_t,
3859    ) -> ::std::os::raw::c_int;
3860}
3861extern "C" {
3862    pub fn snd_timer_params_set_exclusive(
3863        params: *mut snd_timer_params_t,
3864        exclusive: ::std::os::raw::c_int,
3865    ) -> ::std::os::raw::c_int;
3866}
3867extern "C" {
3868    pub fn snd_timer_params_get_exclusive(params: *mut snd_timer_params_t)
3869        -> ::std::os::raw::c_int;
3870}
3871extern "C" {
3872    pub fn snd_timer_params_set_early_event(
3873        params: *mut snd_timer_params_t,
3874        early_event: ::std::os::raw::c_int,
3875    ) -> ::std::os::raw::c_int;
3876}
3877extern "C" {
3878    pub fn snd_timer_params_get_early_event(
3879        params: *mut snd_timer_params_t,
3880    ) -> ::std::os::raw::c_int;
3881}
3882extern "C" {
3883    pub fn snd_timer_params_set_ticks(
3884        params: *mut snd_timer_params_t,
3885        ticks: ::std::os::raw::c_long,
3886    );
3887}
3888extern "C" {
3889    pub fn snd_timer_params_get_ticks(params: *mut snd_timer_params_t) -> ::std::os::raw::c_long;
3890}
3891extern "C" {
3892    pub fn snd_timer_params_set_queue_size(
3893        params: *mut snd_timer_params_t,
3894        queue_size: ::std::os::raw::c_long,
3895    );
3896}
3897extern "C" {
3898    pub fn snd_timer_params_get_queue_size(
3899        params: *mut snd_timer_params_t,
3900    ) -> ::std::os::raw::c_long;
3901}
3902extern "C" {
3903    pub fn snd_timer_params_set_filter(
3904        params: *mut snd_timer_params_t,
3905        filter: ::std::os::raw::c_uint,
3906    );
3907}
3908extern "C" {
3909    pub fn snd_timer_params_get_filter(params: *mut snd_timer_params_t) -> ::std::os::raw::c_uint;
3910}
3911extern "C" {
3912    pub fn snd_timer_status_sizeof() -> usize;
3913}
3914extern "C" {
3915    pub fn snd_timer_status_malloc(ptr: *mut *mut snd_timer_status_t) -> ::std::os::raw::c_int;
3916}
3917extern "C" {
3918    pub fn snd_timer_status_free(obj: *mut snd_timer_status_t);
3919}
3920extern "C" {
3921    pub fn snd_timer_status_copy(dst: *mut snd_timer_status_t, src: *const snd_timer_status_t);
3922}
3923extern "C" {
3924    pub fn snd_timer_status_get_timestamp(status: *mut snd_timer_status_t) -> snd_htimestamp_t;
3925}
3926extern "C" {
3927    pub fn snd_timer_status_get_resolution(
3928        status: *mut snd_timer_status_t,
3929    ) -> ::std::os::raw::c_long;
3930}
3931extern "C" {
3932    pub fn snd_timer_status_get_lost(status: *mut snd_timer_status_t) -> ::std::os::raw::c_long;
3933}
3934extern "C" {
3935    pub fn snd_timer_status_get_overrun(status: *mut snd_timer_status_t) -> ::std::os::raw::c_long;
3936}
3937extern "C" {
3938    pub fn snd_timer_status_get_queue(status: *mut snd_timer_status_t) -> ::std::os::raw::c_long;
3939}
3940extern "C" {
3941    pub fn snd_timer_info_get_ticks(info: *mut snd_timer_info_t) -> ::std::os::raw::c_long;
3942}
3943#[repr(C)]
3944#[derive(Debug, Copy, Clone)]
3945pub struct _snd_hwdep_info {
3946    _unused: [u8; 0],
3947}
3948pub type snd_hwdep_info_t = _snd_hwdep_info;
3949#[repr(C)]
3950#[derive(Debug, Copy, Clone)]
3951pub struct _snd_hwdep_dsp_status {
3952    _unused: [u8; 0],
3953}
3954pub type snd_hwdep_dsp_status_t = _snd_hwdep_dsp_status;
3955#[repr(C)]
3956#[derive(Debug, Copy, Clone)]
3957pub struct _snd_hwdep_dsp_image {
3958    _unused: [u8; 0],
3959}
3960pub type snd_hwdep_dsp_image_t = _snd_hwdep_dsp_image;
3961pub const SND_HWDEP_IFACE_OPL2: _snd_hwdep_iface = 0;
3962pub const SND_HWDEP_IFACE_OPL3: _snd_hwdep_iface = 1;
3963pub const SND_HWDEP_IFACE_OPL4: _snd_hwdep_iface = 2;
3964pub const SND_HWDEP_IFACE_SB16CSP: _snd_hwdep_iface = 3;
3965pub const SND_HWDEP_IFACE_EMU10K1: _snd_hwdep_iface = 4;
3966pub const SND_HWDEP_IFACE_YSS225: _snd_hwdep_iface = 5;
3967pub const SND_HWDEP_IFACE_ICS2115: _snd_hwdep_iface = 6;
3968pub const SND_HWDEP_IFACE_SSCAPE: _snd_hwdep_iface = 7;
3969pub const SND_HWDEP_IFACE_VX: _snd_hwdep_iface = 8;
3970pub const SND_HWDEP_IFACE_MIXART: _snd_hwdep_iface = 9;
3971pub const SND_HWDEP_IFACE_USX2Y: _snd_hwdep_iface = 10;
3972pub const SND_HWDEP_IFACE_EMUX_WAVETABLE: _snd_hwdep_iface = 11;
3973pub const SND_HWDEP_IFACE_BLUETOOTH: _snd_hwdep_iface = 12;
3974pub const SND_HWDEP_IFACE_USX2Y_PCM: _snd_hwdep_iface = 13;
3975pub const SND_HWDEP_IFACE_PCXHR: _snd_hwdep_iface = 14;
3976pub const SND_HWDEP_IFACE_SB_RC: _snd_hwdep_iface = 15;
3977pub const SND_HWDEP_IFACE_HDA: _snd_hwdep_iface = 16;
3978pub const SND_HWDEP_IFACE_USB_STREAM: _snd_hwdep_iface = 17;
3979pub const SND_HWDEP_IFACE_FW_DICE: _snd_hwdep_iface = 18;
3980pub const SND_HWDEP_IFACE_FW_FIREWORKS: _snd_hwdep_iface = 19;
3981pub const SND_HWDEP_IFACE_FW_BEBOB: _snd_hwdep_iface = 20;
3982pub const SND_HWDEP_IFACE_FW_OXFW: _snd_hwdep_iface = 21;
3983pub const SND_HWDEP_IFACE_FW_DIGI00X: _snd_hwdep_iface = 22;
3984pub const SND_HWDEP_IFACE_FW_TASCAM: _snd_hwdep_iface = 23;
3985pub const SND_HWDEP_IFACE_LINE6: _snd_hwdep_iface = 24;
3986pub const SND_HWDEP_IFACE_FW_MOTU: _snd_hwdep_iface = 25;
3987pub const SND_HWDEP_IFACE_FW_FIREFACE: _snd_hwdep_iface = 26;
3988pub const SND_HWDEP_IFACE_LAST: _snd_hwdep_iface = 26;
3989pub type _snd_hwdep_iface = ::std::os::raw::c_uint;
3990pub use self::_snd_hwdep_iface as snd_hwdep_iface_t;
3991pub const SND_HWDEP_TYPE_HW: _snd_hwdep_type = 0;
3992pub const SND_HWDEP_TYPE_SHM: _snd_hwdep_type = 1;
3993pub const SND_HWDEP_TYPE_INET: _snd_hwdep_type = 2;
3994pub type _snd_hwdep_type = ::std::os::raw::c_uint;
3995pub use self::_snd_hwdep_type as snd_hwdep_type_t;
3996#[repr(C)]
3997#[derive(Debug, Copy, Clone)]
3998pub struct _snd_hwdep {
3999    _unused: [u8; 0],
4000}
4001pub type snd_hwdep_t = _snd_hwdep;
4002extern "C" {
4003    pub fn snd_hwdep_open(
4004        hwdep: *mut *mut snd_hwdep_t,
4005        name: *const ::std::os::raw::c_char,
4006        mode: ::std::os::raw::c_int,
4007    ) -> ::std::os::raw::c_int;
4008}
4009extern "C" {
4010    pub fn snd_hwdep_close(hwdep: *mut snd_hwdep_t) -> ::std::os::raw::c_int;
4011}
4012extern "C" {
4013    pub fn snd_hwdep_poll_descriptors(
4014        hwdep: *mut snd_hwdep_t,
4015        pfds: *mut pollfd,
4016        space: ::std::os::raw::c_uint,
4017    ) -> ::std::os::raw::c_int;
4018}
4019extern "C" {
4020    pub fn snd_hwdep_poll_descriptors_count(hwdep: *mut snd_hwdep_t) -> ::std::os::raw::c_int;
4021}
4022extern "C" {
4023    pub fn snd_hwdep_poll_descriptors_revents(
4024        hwdep: *mut snd_hwdep_t,
4025        pfds: *mut pollfd,
4026        nfds: ::std::os::raw::c_uint,
4027        revents: *mut ::std::os::raw::c_ushort,
4028    ) -> ::std::os::raw::c_int;
4029}
4030extern "C" {
4031    pub fn snd_hwdep_nonblock(
4032        hwdep: *mut snd_hwdep_t,
4033        nonblock: ::std::os::raw::c_int,
4034    ) -> ::std::os::raw::c_int;
4035}
4036extern "C" {
4037    pub fn snd_hwdep_info(
4038        hwdep: *mut snd_hwdep_t,
4039        info: *mut snd_hwdep_info_t,
4040    ) -> ::std::os::raw::c_int;
4041}
4042extern "C" {
4043    pub fn snd_hwdep_dsp_status(
4044        hwdep: *mut snd_hwdep_t,
4045        status: *mut snd_hwdep_dsp_status_t,
4046    ) -> ::std::os::raw::c_int;
4047}
4048extern "C" {
4049    pub fn snd_hwdep_dsp_load(
4050        hwdep: *mut snd_hwdep_t,
4051        block: *mut snd_hwdep_dsp_image_t,
4052    ) -> ::std::os::raw::c_int;
4053}
4054extern "C" {
4055    pub fn snd_hwdep_ioctl(
4056        hwdep: *mut snd_hwdep_t,
4057        request: ::std::os::raw::c_uint,
4058        arg: *mut ::std::os::raw::c_void,
4059    ) -> ::std::os::raw::c_int;
4060}
4061extern "C" {
4062    pub fn snd_hwdep_write(
4063        hwdep: *mut snd_hwdep_t,
4064        buffer: *const ::std::os::raw::c_void,
4065        size: usize,
4066    ) -> isize;
4067}
4068extern "C" {
4069    pub fn snd_hwdep_read(
4070        hwdep: *mut snd_hwdep_t,
4071        buffer: *mut ::std::os::raw::c_void,
4072        size: usize,
4073    ) -> isize;
4074}
4075extern "C" {
4076    pub fn snd_hwdep_info_sizeof() -> usize;
4077}
4078extern "C" {
4079    pub fn snd_hwdep_info_malloc(ptr: *mut *mut snd_hwdep_info_t) -> ::std::os::raw::c_int;
4080}
4081extern "C" {
4082    pub fn snd_hwdep_info_free(obj: *mut snd_hwdep_info_t);
4083}
4084extern "C" {
4085    pub fn snd_hwdep_info_copy(dst: *mut snd_hwdep_info_t, src: *const snd_hwdep_info_t);
4086}
4087extern "C" {
4088    pub fn snd_hwdep_info_get_device(obj: *const snd_hwdep_info_t) -> ::std::os::raw::c_uint;
4089}
4090extern "C" {
4091    pub fn snd_hwdep_info_get_card(obj: *const snd_hwdep_info_t) -> ::std::os::raw::c_int;
4092}
4093extern "C" {
4094    pub fn snd_hwdep_info_get_id(obj: *const snd_hwdep_info_t) -> *const ::std::os::raw::c_char;
4095}
4096extern "C" {
4097    pub fn snd_hwdep_info_get_name(obj: *const snd_hwdep_info_t) -> *const ::std::os::raw::c_char;
4098}
4099extern "C" {
4100    pub fn snd_hwdep_info_get_iface(obj: *const snd_hwdep_info_t) -> snd_hwdep_iface_t;
4101}
4102extern "C" {
4103    pub fn snd_hwdep_info_set_device(obj: *mut snd_hwdep_info_t, val: ::std::os::raw::c_uint);
4104}
4105extern "C" {
4106    pub fn snd_hwdep_dsp_status_sizeof() -> usize;
4107}
4108extern "C" {
4109    pub fn snd_hwdep_dsp_status_malloc(
4110        ptr: *mut *mut snd_hwdep_dsp_status_t,
4111    ) -> ::std::os::raw::c_int;
4112}
4113extern "C" {
4114    pub fn snd_hwdep_dsp_status_free(obj: *mut snd_hwdep_dsp_status_t);
4115}
4116extern "C" {
4117    pub fn snd_hwdep_dsp_status_copy(
4118        dst: *mut snd_hwdep_dsp_status_t,
4119        src: *const snd_hwdep_dsp_status_t,
4120    );
4121}
4122extern "C" {
4123    pub fn snd_hwdep_dsp_status_get_version(
4124        obj: *const snd_hwdep_dsp_status_t,
4125    ) -> ::std::os::raw::c_uint;
4126}
4127extern "C" {
4128    pub fn snd_hwdep_dsp_status_get_id(
4129        obj: *const snd_hwdep_dsp_status_t,
4130    ) -> *const ::std::os::raw::c_char;
4131}
4132extern "C" {
4133    pub fn snd_hwdep_dsp_status_get_num_dsps(
4134        obj: *const snd_hwdep_dsp_status_t,
4135    ) -> ::std::os::raw::c_uint;
4136}
4137extern "C" {
4138    pub fn snd_hwdep_dsp_status_get_dsp_loaded(
4139        obj: *const snd_hwdep_dsp_status_t,
4140    ) -> ::std::os::raw::c_uint;
4141}
4142extern "C" {
4143    pub fn snd_hwdep_dsp_status_get_chip_ready(
4144        obj: *const snd_hwdep_dsp_status_t,
4145    ) -> ::std::os::raw::c_uint;
4146}
4147extern "C" {
4148    pub fn snd_hwdep_dsp_image_sizeof() -> usize;
4149}
4150extern "C" {
4151    pub fn snd_hwdep_dsp_image_malloc(
4152        ptr: *mut *mut snd_hwdep_dsp_image_t,
4153    ) -> ::std::os::raw::c_int;
4154}
4155extern "C" {
4156    pub fn snd_hwdep_dsp_image_free(obj: *mut snd_hwdep_dsp_image_t);
4157}
4158extern "C" {
4159    pub fn snd_hwdep_dsp_image_copy(
4160        dst: *mut snd_hwdep_dsp_image_t,
4161        src: *const snd_hwdep_dsp_image_t,
4162    );
4163}
4164extern "C" {
4165    pub fn snd_hwdep_dsp_image_get_index(
4166        obj: *const snd_hwdep_dsp_image_t,
4167    ) -> ::std::os::raw::c_uint;
4168}
4169extern "C" {
4170    pub fn snd_hwdep_dsp_image_get_name(
4171        obj: *const snd_hwdep_dsp_image_t,
4172    ) -> *const ::std::os::raw::c_char;
4173}
4174extern "C" {
4175    pub fn snd_hwdep_dsp_image_get_image(
4176        obj: *const snd_hwdep_dsp_image_t,
4177    ) -> *const ::std::os::raw::c_void;
4178}
4179extern "C" {
4180    pub fn snd_hwdep_dsp_image_get_length(obj: *const snd_hwdep_dsp_image_t) -> usize;
4181}
4182extern "C" {
4183    pub fn snd_hwdep_dsp_image_set_index(
4184        obj: *mut snd_hwdep_dsp_image_t,
4185        _index: ::std::os::raw::c_uint,
4186    );
4187}
4188extern "C" {
4189    pub fn snd_hwdep_dsp_image_set_name(
4190        obj: *mut snd_hwdep_dsp_image_t,
4191        name: *const ::std::os::raw::c_char,
4192    );
4193}
4194extern "C" {
4195    pub fn snd_hwdep_dsp_image_set_image(
4196        obj: *mut snd_hwdep_dsp_image_t,
4197        buffer: *mut ::std::os::raw::c_void,
4198    );
4199}
4200extern "C" {
4201    pub fn snd_hwdep_dsp_image_set_length(obj: *mut snd_hwdep_dsp_image_t, length: usize);
4202}
4203#[repr(C)]
4204#[derive(Copy, Clone)]
4205pub struct snd_aes_iec958 {
4206    pub status: [::std::os::raw::c_uchar; 24usize],
4207    pub subcode: [::std::os::raw::c_uchar; 147usize],
4208    pub pad: ::std::os::raw::c_uchar,
4209    pub dig_subframe: [::std::os::raw::c_uchar; 4usize],
4210}
4211pub type snd_aes_iec958_t = snd_aes_iec958;
4212#[repr(C)]
4213#[derive(Debug, Copy, Clone)]
4214pub struct _snd_ctl_card_info {
4215    _unused: [u8; 0],
4216}
4217pub type snd_ctl_card_info_t = _snd_ctl_card_info;
4218#[repr(C)]
4219#[derive(Debug, Copy, Clone)]
4220pub struct _snd_ctl_elem_id {
4221    _unused: [u8; 0],
4222}
4223pub type snd_ctl_elem_id_t = _snd_ctl_elem_id;
4224#[repr(C)]
4225#[derive(Debug, Copy, Clone)]
4226pub struct _snd_ctl_elem_list {
4227    _unused: [u8; 0],
4228}
4229pub type snd_ctl_elem_list_t = _snd_ctl_elem_list;
4230#[repr(C)]
4231#[derive(Debug, Copy, Clone)]
4232pub struct _snd_ctl_elem_info {
4233    _unused: [u8; 0],
4234}
4235pub type snd_ctl_elem_info_t = _snd_ctl_elem_info;
4236#[repr(C)]
4237#[derive(Debug, Copy, Clone)]
4238pub struct _snd_ctl_elem_value {
4239    _unused: [u8; 0],
4240}
4241pub type snd_ctl_elem_value_t = _snd_ctl_elem_value;
4242#[repr(C)]
4243#[derive(Debug, Copy, Clone)]
4244pub struct _snd_ctl_event {
4245    _unused: [u8; 0],
4246}
4247pub type snd_ctl_event_t = _snd_ctl_event;
4248pub const SND_CTL_ELEM_TYPE_NONE: _snd_ctl_elem_type = 0;
4249pub const SND_CTL_ELEM_TYPE_BOOLEAN: _snd_ctl_elem_type = 1;
4250pub const SND_CTL_ELEM_TYPE_INTEGER: _snd_ctl_elem_type = 2;
4251pub const SND_CTL_ELEM_TYPE_ENUMERATED: _snd_ctl_elem_type = 3;
4252pub const SND_CTL_ELEM_TYPE_BYTES: _snd_ctl_elem_type = 4;
4253pub const SND_CTL_ELEM_TYPE_IEC958: _snd_ctl_elem_type = 5;
4254pub const SND_CTL_ELEM_TYPE_INTEGER64: _snd_ctl_elem_type = 6;
4255pub const SND_CTL_ELEM_TYPE_LAST: _snd_ctl_elem_type = 6;
4256pub type _snd_ctl_elem_type = ::std::os::raw::c_uint;
4257pub use self::_snd_ctl_elem_type as snd_ctl_elem_type_t;
4258pub const SND_CTL_ELEM_IFACE_CARD: _snd_ctl_elem_iface = 0;
4259pub const SND_CTL_ELEM_IFACE_HWDEP: _snd_ctl_elem_iface = 1;
4260pub const SND_CTL_ELEM_IFACE_MIXER: _snd_ctl_elem_iface = 2;
4261pub const SND_CTL_ELEM_IFACE_PCM: _snd_ctl_elem_iface = 3;
4262pub const SND_CTL_ELEM_IFACE_RAWMIDI: _snd_ctl_elem_iface = 4;
4263pub const SND_CTL_ELEM_IFACE_TIMER: _snd_ctl_elem_iface = 5;
4264pub const SND_CTL_ELEM_IFACE_SEQUENCER: _snd_ctl_elem_iface = 6;
4265pub const SND_CTL_ELEM_IFACE_LAST: _snd_ctl_elem_iface = 6;
4266pub type _snd_ctl_elem_iface = ::std::os::raw::c_uint;
4267pub use self::_snd_ctl_elem_iface as snd_ctl_elem_iface_t;
4268pub const SND_CTL_EVENT_ELEM: _snd_ctl_event_type = 0;
4269pub const SND_CTL_EVENT_LAST: _snd_ctl_event_type = 0;
4270pub type _snd_ctl_event_type = ::std::os::raw::c_uint;
4271pub use self::_snd_ctl_event_type as snd_ctl_event_type_t;
4272pub const SND_CTL_TYPE_HW: _snd_ctl_type = 0;
4273pub const SND_CTL_TYPE_SHM: _snd_ctl_type = 1;
4274pub const SND_CTL_TYPE_INET: _snd_ctl_type = 2;
4275pub const SND_CTL_TYPE_EXT: _snd_ctl_type = 3;
4276pub type _snd_ctl_type = ::std::os::raw::c_uint;
4277pub use self::_snd_ctl_type as snd_ctl_type_t;
4278#[repr(C)]
4279#[derive(Debug, Copy, Clone)]
4280pub struct _snd_ctl {
4281    _unused: [u8; 0],
4282}
4283pub type snd_ctl_t = _snd_ctl;
4284#[repr(C)]
4285#[derive(Debug, Copy, Clone)]
4286pub struct _snd_sctl {
4287    _unused: [u8; 0],
4288}
4289pub type snd_sctl_t = _snd_sctl;
4290extern "C" {
4291    pub fn snd_card_load(card: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4292}
4293extern "C" {
4294    pub fn snd_card_next(card: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4295}
4296extern "C" {
4297    pub fn snd_card_get_index(name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
4298}
4299extern "C" {
4300    pub fn snd_card_get_name(
4301        card: ::std::os::raw::c_int,
4302        name: *mut *mut ::std::os::raw::c_char,
4303    ) -> ::std::os::raw::c_int;
4304}
4305extern "C" {
4306    pub fn snd_card_get_longname(
4307        card: ::std::os::raw::c_int,
4308        name: *mut *mut ::std::os::raw::c_char,
4309    ) -> ::std::os::raw::c_int;
4310}
4311extern "C" {
4312    pub fn snd_device_name_hint(
4313        card: ::std::os::raw::c_int,
4314        iface: *const ::std::os::raw::c_char,
4315        hints: *mut *mut *mut ::std::os::raw::c_void,
4316    ) -> ::std::os::raw::c_int;
4317}
4318extern "C" {
4319    pub fn snd_device_name_free_hint(
4320        hints: *mut *mut ::std::os::raw::c_void,
4321    ) -> ::std::os::raw::c_int;
4322}
4323extern "C" {
4324    pub fn snd_device_name_get_hint(
4325        hint: *const ::std::os::raw::c_void,
4326        id: *const ::std::os::raw::c_char,
4327    ) -> *mut ::std::os::raw::c_char;
4328}
4329extern "C" {
4330    pub fn snd_ctl_open(
4331        ctl: *mut *mut snd_ctl_t,
4332        name: *const ::std::os::raw::c_char,
4333        mode: ::std::os::raw::c_int,
4334    ) -> ::std::os::raw::c_int;
4335}
4336extern "C" {
4337    pub fn snd_ctl_open_lconf(
4338        ctl: *mut *mut snd_ctl_t,
4339        name: *const ::std::os::raw::c_char,
4340        mode: ::std::os::raw::c_int,
4341        lconf: *mut snd_config_t,
4342    ) -> ::std::os::raw::c_int;
4343}
4344extern "C" {
4345    pub fn snd_ctl_open_fallback(
4346        ctl: *mut *mut snd_ctl_t,
4347        root: *mut snd_config_t,
4348        name: *const ::std::os::raw::c_char,
4349        orig_name: *const ::std::os::raw::c_char,
4350        mode: ::std::os::raw::c_int,
4351    ) -> ::std::os::raw::c_int;
4352}
4353extern "C" {
4354    pub fn snd_ctl_close(ctl: *mut snd_ctl_t) -> ::std::os::raw::c_int;
4355}
4356extern "C" {
4357    pub fn snd_ctl_nonblock(
4358        ctl: *mut snd_ctl_t,
4359        nonblock: ::std::os::raw::c_int,
4360    ) -> ::std::os::raw::c_int;
4361}
4362extern "C" {
4363    pub fn snd_async_add_ctl_handler(
4364        handler: *mut *mut snd_async_handler_t,
4365        ctl: *mut snd_ctl_t,
4366        callback: snd_async_callback_t,
4367        private_data: *mut ::std::os::raw::c_void,
4368    ) -> ::std::os::raw::c_int;
4369}
4370extern "C" {
4371    pub fn snd_async_handler_get_ctl(handler: *mut snd_async_handler_t) -> *mut snd_ctl_t;
4372}
4373extern "C" {
4374    pub fn snd_ctl_poll_descriptors_count(ctl: *mut snd_ctl_t) -> ::std::os::raw::c_int;
4375}
4376extern "C" {
4377    pub fn snd_ctl_poll_descriptors(
4378        ctl: *mut snd_ctl_t,
4379        pfds: *mut pollfd,
4380        space: ::std::os::raw::c_uint,
4381    ) -> ::std::os::raw::c_int;
4382}
4383extern "C" {
4384    pub fn snd_ctl_poll_descriptors_revents(
4385        ctl: *mut snd_ctl_t,
4386        pfds: *mut pollfd,
4387        nfds: ::std::os::raw::c_uint,
4388        revents: *mut ::std::os::raw::c_ushort,
4389    ) -> ::std::os::raw::c_int;
4390}
4391extern "C" {
4392    pub fn snd_ctl_subscribe_events(
4393        ctl: *mut snd_ctl_t,
4394        subscribe: ::std::os::raw::c_int,
4395    ) -> ::std::os::raw::c_int;
4396}
4397extern "C" {
4398    pub fn snd_ctl_card_info(
4399        ctl: *mut snd_ctl_t,
4400        info: *mut snd_ctl_card_info_t,
4401    ) -> ::std::os::raw::c_int;
4402}
4403extern "C" {
4404    pub fn snd_ctl_elem_list(
4405        ctl: *mut snd_ctl_t,
4406        list: *mut snd_ctl_elem_list_t,
4407    ) -> ::std::os::raw::c_int;
4408}
4409extern "C" {
4410    pub fn snd_ctl_elem_info(
4411        ctl: *mut snd_ctl_t,
4412        info: *mut snd_ctl_elem_info_t,
4413    ) -> ::std::os::raw::c_int;
4414}
4415extern "C" {
4416    pub fn snd_ctl_elem_read(
4417        ctl: *mut snd_ctl_t,
4418        data: *mut snd_ctl_elem_value_t,
4419    ) -> ::std::os::raw::c_int;
4420}
4421extern "C" {
4422    pub fn snd_ctl_elem_write(
4423        ctl: *mut snd_ctl_t,
4424        data: *mut snd_ctl_elem_value_t,
4425    ) -> ::std::os::raw::c_int;
4426}
4427extern "C" {
4428    pub fn snd_ctl_elem_lock(
4429        ctl: *mut snd_ctl_t,
4430        id: *mut snd_ctl_elem_id_t,
4431    ) -> ::std::os::raw::c_int;
4432}
4433extern "C" {
4434    pub fn snd_ctl_elem_unlock(
4435        ctl: *mut snd_ctl_t,
4436        id: *mut snd_ctl_elem_id_t,
4437    ) -> ::std::os::raw::c_int;
4438}
4439extern "C" {
4440    pub fn snd_ctl_elem_tlv_read(
4441        ctl: *mut snd_ctl_t,
4442        id: *const snd_ctl_elem_id_t,
4443        tlv: *mut ::std::os::raw::c_uint,
4444        tlv_size: ::std::os::raw::c_uint,
4445    ) -> ::std::os::raw::c_int;
4446}
4447extern "C" {
4448    pub fn snd_ctl_elem_tlv_write(
4449        ctl: *mut snd_ctl_t,
4450        id: *const snd_ctl_elem_id_t,
4451        tlv: *const ::std::os::raw::c_uint,
4452    ) -> ::std::os::raw::c_int;
4453}
4454extern "C" {
4455    pub fn snd_ctl_elem_tlv_command(
4456        ctl: *mut snd_ctl_t,
4457        id: *const snd_ctl_elem_id_t,
4458        tlv: *const ::std::os::raw::c_uint,
4459    ) -> ::std::os::raw::c_int;
4460}
4461extern "C" {
4462    pub fn snd_ctl_hwdep_next_device(
4463        ctl: *mut snd_ctl_t,
4464        device: *mut ::std::os::raw::c_int,
4465    ) -> ::std::os::raw::c_int;
4466}
4467extern "C" {
4468    pub fn snd_ctl_hwdep_info(
4469        ctl: *mut snd_ctl_t,
4470        info: *mut snd_hwdep_info_t,
4471    ) -> ::std::os::raw::c_int;
4472}
4473extern "C" {
4474    pub fn snd_ctl_pcm_next_device(
4475        ctl: *mut snd_ctl_t,
4476        device: *mut ::std::os::raw::c_int,
4477    ) -> ::std::os::raw::c_int;
4478}
4479extern "C" {
4480    pub fn snd_ctl_pcm_info(
4481        ctl: *mut snd_ctl_t,
4482        info: *mut snd_pcm_info_t,
4483    ) -> ::std::os::raw::c_int;
4484}
4485extern "C" {
4486    pub fn snd_ctl_pcm_prefer_subdevice(
4487        ctl: *mut snd_ctl_t,
4488        subdev: ::std::os::raw::c_int,
4489    ) -> ::std::os::raw::c_int;
4490}
4491extern "C" {
4492    pub fn snd_ctl_rawmidi_next_device(
4493        ctl: *mut snd_ctl_t,
4494        device: *mut ::std::os::raw::c_int,
4495    ) -> ::std::os::raw::c_int;
4496}
4497extern "C" {
4498    pub fn snd_ctl_rawmidi_info(
4499        ctl: *mut snd_ctl_t,
4500        info: *mut snd_rawmidi_info_t,
4501    ) -> ::std::os::raw::c_int;
4502}
4503extern "C" {
4504    pub fn snd_ctl_rawmidi_prefer_subdevice(
4505        ctl: *mut snd_ctl_t,
4506        subdev: ::std::os::raw::c_int,
4507    ) -> ::std::os::raw::c_int;
4508}
4509extern "C" {
4510    pub fn snd_ctl_set_power_state(
4511        ctl: *mut snd_ctl_t,
4512        state: ::std::os::raw::c_uint,
4513    ) -> ::std::os::raw::c_int;
4514}
4515extern "C" {
4516    pub fn snd_ctl_get_power_state(
4517        ctl: *mut snd_ctl_t,
4518        state: *mut ::std::os::raw::c_uint,
4519    ) -> ::std::os::raw::c_int;
4520}
4521extern "C" {
4522    pub fn snd_ctl_read(ctl: *mut snd_ctl_t, event: *mut snd_ctl_event_t) -> ::std::os::raw::c_int;
4523}
4524extern "C" {
4525    pub fn snd_ctl_wait(
4526        ctl: *mut snd_ctl_t,
4527        timeout: ::std::os::raw::c_int,
4528    ) -> ::std::os::raw::c_int;
4529}
4530extern "C" {
4531    pub fn snd_ctl_name(ctl: *mut snd_ctl_t) -> *const ::std::os::raw::c_char;
4532}
4533extern "C" {
4534    pub fn snd_ctl_type(ctl: *mut snd_ctl_t) -> snd_ctl_type_t;
4535}
4536extern "C" {
4537    pub fn snd_ctl_elem_type_name(type_: snd_ctl_elem_type_t) -> *const ::std::os::raw::c_char;
4538}
4539extern "C" {
4540    pub fn snd_ctl_elem_iface_name(iface: snd_ctl_elem_iface_t) -> *const ::std::os::raw::c_char;
4541}
4542extern "C" {
4543    pub fn snd_ctl_event_type_name(type_: snd_ctl_event_type_t) -> *const ::std::os::raw::c_char;
4544}
4545extern "C" {
4546    pub fn snd_ctl_event_elem_get_mask(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
4547}
4548extern "C" {
4549    pub fn snd_ctl_event_elem_get_numid(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
4550}
4551extern "C" {
4552    pub fn snd_ctl_event_elem_get_id(obj: *const snd_ctl_event_t, ptr: *mut snd_ctl_elem_id_t);
4553}
4554extern "C" {
4555    pub fn snd_ctl_event_elem_get_interface(obj: *const snd_ctl_event_t) -> snd_ctl_elem_iface_t;
4556}
4557extern "C" {
4558    pub fn snd_ctl_event_elem_get_device(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
4559}
4560extern "C" {
4561    pub fn snd_ctl_event_elem_get_subdevice(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
4562}
4563extern "C" {
4564    pub fn snd_ctl_event_elem_get_name(
4565        obj: *const snd_ctl_event_t,
4566    ) -> *const ::std::os::raw::c_char;
4567}
4568extern "C" {
4569    pub fn snd_ctl_event_elem_get_index(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
4570}
4571extern "C" {
4572    pub fn snd_ctl_elem_list_alloc_space(
4573        obj: *mut snd_ctl_elem_list_t,
4574        entries: ::std::os::raw::c_uint,
4575    ) -> ::std::os::raw::c_int;
4576}
4577extern "C" {
4578    pub fn snd_ctl_elem_list_free_space(obj: *mut snd_ctl_elem_list_t);
4579}
4580extern "C" {
4581    pub fn snd_ctl_ascii_elem_id_get(id: *mut snd_ctl_elem_id_t) -> *mut ::std::os::raw::c_char;
4582}
4583extern "C" {
4584    pub fn snd_ctl_ascii_elem_id_parse(
4585        dst: *mut snd_ctl_elem_id_t,
4586        str_: *const ::std::os::raw::c_char,
4587    ) -> ::std::os::raw::c_int;
4588}
4589extern "C" {
4590    pub fn snd_ctl_ascii_value_parse(
4591        handle: *mut snd_ctl_t,
4592        dst: *mut snd_ctl_elem_value_t,
4593        info: *mut snd_ctl_elem_info_t,
4594        value: *const ::std::os::raw::c_char,
4595    ) -> ::std::os::raw::c_int;
4596}
4597extern "C" {
4598    pub fn snd_ctl_elem_id_sizeof() -> usize;
4599}
4600extern "C" {
4601    pub fn snd_ctl_elem_id_malloc(ptr: *mut *mut snd_ctl_elem_id_t) -> ::std::os::raw::c_int;
4602}
4603extern "C" {
4604    pub fn snd_ctl_elem_id_free(obj: *mut snd_ctl_elem_id_t);
4605}
4606extern "C" {
4607    pub fn snd_ctl_elem_id_clear(obj: *mut snd_ctl_elem_id_t);
4608}
4609extern "C" {
4610    pub fn snd_ctl_elem_id_copy(dst: *mut snd_ctl_elem_id_t, src: *const snd_ctl_elem_id_t);
4611}
4612extern "C" {
4613    pub fn snd_ctl_elem_id_get_numid(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
4614}
4615extern "C" {
4616    pub fn snd_ctl_elem_id_get_interface(obj: *const snd_ctl_elem_id_t) -> snd_ctl_elem_iface_t;
4617}
4618extern "C" {
4619    pub fn snd_ctl_elem_id_get_device(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
4620}
4621extern "C" {
4622    pub fn snd_ctl_elem_id_get_subdevice(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
4623}
4624extern "C" {
4625    pub fn snd_ctl_elem_id_get_name(obj: *const snd_ctl_elem_id_t)
4626        -> *const ::std::os::raw::c_char;
4627}
4628extern "C" {
4629    pub fn snd_ctl_elem_id_get_index(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
4630}
4631extern "C" {
4632    pub fn snd_ctl_elem_id_set_numid(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
4633}
4634extern "C" {
4635    pub fn snd_ctl_elem_id_set_interface(obj: *mut snd_ctl_elem_id_t, val: snd_ctl_elem_iface_t);
4636}
4637extern "C" {
4638    pub fn snd_ctl_elem_id_set_device(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
4639}
4640extern "C" {
4641    pub fn snd_ctl_elem_id_set_subdevice(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
4642}
4643extern "C" {
4644    pub fn snd_ctl_elem_id_set_name(
4645        obj: *mut snd_ctl_elem_id_t,
4646        val: *const ::std::os::raw::c_char,
4647    );
4648}
4649extern "C" {
4650    pub fn snd_ctl_elem_id_set_index(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
4651}
4652extern "C" {
4653    pub fn snd_ctl_card_info_sizeof() -> usize;
4654}
4655extern "C" {
4656    pub fn snd_ctl_card_info_malloc(ptr: *mut *mut snd_ctl_card_info_t) -> ::std::os::raw::c_int;
4657}
4658extern "C" {
4659    pub fn snd_ctl_card_info_free(obj: *mut snd_ctl_card_info_t);
4660}
4661extern "C" {
4662    pub fn snd_ctl_card_info_clear(obj: *mut snd_ctl_card_info_t);
4663}
4664extern "C" {
4665    pub fn snd_ctl_card_info_copy(dst: *mut snd_ctl_card_info_t, src: *const snd_ctl_card_info_t);
4666}
4667extern "C" {
4668    pub fn snd_ctl_card_info_get_card(obj: *const snd_ctl_card_info_t) -> ::std::os::raw::c_int;
4669}
4670extern "C" {
4671    pub fn snd_ctl_card_info_get_id(
4672        obj: *const snd_ctl_card_info_t,
4673    ) -> *const ::std::os::raw::c_char;
4674}
4675extern "C" {
4676    pub fn snd_ctl_card_info_get_driver(
4677        obj: *const snd_ctl_card_info_t,
4678    ) -> *const ::std::os::raw::c_char;
4679}
4680extern "C" {
4681    pub fn snd_ctl_card_info_get_name(
4682        obj: *const snd_ctl_card_info_t,
4683    ) -> *const ::std::os::raw::c_char;
4684}
4685extern "C" {
4686    pub fn snd_ctl_card_info_get_longname(
4687        obj: *const snd_ctl_card_info_t,
4688    ) -> *const ::std::os::raw::c_char;
4689}
4690extern "C" {
4691    pub fn snd_ctl_card_info_get_mixername(
4692        obj: *const snd_ctl_card_info_t,
4693    ) -> *const ::std::os::raw::c_char;
4694}
4695extern "C" {
4696    pub fn snd_ctl_card_info_get_components(
4697        obj: *const snd_ctl_card_info_t,
4698    ) -> *const ::std::os::raw::c_char;
4699}
4700extern "C" {
4701    pub fn snd_ctl_event_sizeof() -> usize;
4702}
4703extern "C" {
4704    pub fn snd_ctl_event_malloc(ptr: *mut *mut snd_ctl_event_t) -> ::std::os::raw::c_int;
4705}
4706extern "C" {
4707    pub fn snd_ctl_event_free(obj: *mut snd_ctl_event_t);
4708}
4709extern "C" {
4710    pub fn snd_ctl_event_clear(obj: *mut snd_ctl_event_t);
4711}
4712extern "C" {
4713    pub fn snd_ctl_event_copy(dst: *mut snd_ctl_event_t, src: *const snd_ctl_event_t);
4714}
4715extern "C" {
4716    pub fn snd_ctl_event_get_type(obj: *const snd_ctl_event_t) -> snd_ctl_event_type_t;
4717}
4718extern "C" {
4719    pub fn snd_ctl_elem_list_sizeof() -> usize;
4720}
4721extern "C" {
4722    pub fn snd_ctl_elem_list_malloc(ptr: *mut *mut snd_ctl_elem_list_t) -> ::std::os::raw::c_int;
4723}
4724extern "C" {
4725    pub fn snd_ctl_elem_list_free(obj: *mut snd_ctl_elem_list_t);
4726}
4727extern "C" {
4728    pub fn snd_ctl_elem_list_clear(obj: *mut snd_ctl_elem_list_t);
4729}
4730extern "C" {
4731    pub fn snd_ctl_elem_list_copy(dst: *mut snd_ctl_elem_list_t, src: *const snd_ctl_elem_list_t);
4732}
4733extern "C" {
4734    pub fn snd_ctl_elem_list_set_offset(obj: *mut snd_ctl_elem_list_t, val: ::std::os::raw::c_uint);
4735}
4736extern "C" {
4737    pub fn snd_ctl_elem_list_get_used(obj: *const snd_ctl_elem_list_t) -> ::std::os::raw::c_uint;
4738}
4739extern "C" {
4740    pub fn snd_ctl_elem_list_get_count(obj: *const snd_ctl_elem_list_t) -> ::std::os::raw::c_uint;
4741}
4742extern "C" {
4743    pub fn snd_ctl_elem_list_get_id(
4744        obj: *const snd_ctl_elem_list_t,
4745        idx: ::std::os::raw::c_uint,
4746        ptr: *mut snd_ctl_elem_id_t,
4747    );
4748}
4749extern "C" {
4750    pub fn snd_ctl_elem_list_get_numid(
4751        obj: *const snd_ctl_elem_list_t,
4752        idx: ::std::os::raw::c_uint,
4753    ) -> ::std::os::raw::c_uint;
4754}
4755extern "C" {
4756    pub fn snd_ctl_elem_list_get_interface(
4757        obj: *const snd_ctl_elem_list_t,
4758        idx: ::std::os::raw::c_uint,
4759    ) -> snd_ctl_elem_iface_t;
4760}
4761extern "C" {
4762    pub fn snd_ctl_elem_list_get_device(
4763        obj: *const snd_ctl_elem_list_t,
4764        idx: ::std::os::raw::c_uint,
4765    ) -> ::std::os::raw::c_uint;
4766}
4767extern "C" {
4768    pub fn snd_ctl_elem_list_get_subdevice(
4769        obj: *const snd_ctl_elem_list_t,
4770        idx: ::std::os::raw::c_uint,
4771    ) -> ::std::os::raw::c_uint;
4772}
4773extern "C" {
4774    pub fn snd_ctl_elem_list_get_name(
4775        obj: *const snd_ctl_elem_list_t,
4776        idx: ::std::os::raw::c_uint,
4777    ) -> *const ::std::os::raw::c_char;
4778}
4779extern "C" {
4780    pub fn snd_ctl_elem_list_get_index(
4781        obj: *const snd_ctl_elem_list_t,
4782        idx: ::std::os::raw::c_uint,
4783    ) -> ::std::os::raw::c_uint;
4784}
4785extern "C" {
4786    pub fn snd_ctl_elem_info_sizeof() -> usize;
4787}
4788extern "C" {
4789    pub fn snd_ctl_elem_info_malloc(ptr: *mut *mut snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4790}
4791extern "C" {
4792    pub fn snd_ctl_elem_info_free(obj: *mut snd_ctl_elem_info_t);
4793}
4794extern "C" {
4795    pub fn snd_ctl_elem_info_clear(obj: *mut snd_ctl_elem_info_t);
4796}
4797extern "C" {
4798    pub fn snd_ctl_elem_info_copy(dst: *mut snd_ctl_elem_info_t, src: *const snd_ctl_elem_info_t);
4799}
4800extern "C" {
4801    pub fn snd_ctl_elem_info_get_type(obj: *const snd_ctl_elem_info_t) -> snd_ctl_elem_type_t;
4802}
4803extern "C" {
4804    pub fn snd_ctl_elem_info_is_readable(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4805}
4806extern "C" {
4807    pub fn snd_ctl_elem_info_is_writable(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4808}
4809extern "C" {
4810    pub fn snd_ctl_elem_info_is_volatile(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4811}
4812extern "C" {
4813    pub fn snd_ctl_elem_info_is_inactive(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4814}
4815extern "C" {
4816    pub fn snd_ctl_elem_info_is_locked(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4817}
4818extern "C" {
4819    pub fn snd_ctl_elem_info_is_tlv_readable(
4820        obj: *const snd_ctl_elem_info_t,
4821    ) -> ::std::os::raw::c_int;
4822}
4823extern "C" {
4824    pub fn snd_ctl_elem_info_is_tlv_writable(
4825        obj: *const snd_ctl_elem_info_t,
4826    ) -> ::std::os::raw::c_int;
4827}
4828extern "C" {
4829    pub fn snd_ctl_elem_info_is_tlv_commandable(
4830        obj: *const snd_ctl_elem_info_t,
4831    ) -> ::std::os::raw::c_int;
4832}
4833extern "C" {
4834    pub fn snd_ctl_elem_info_is_owner(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4835}
4836extern "C" {
4837    pub fn snd_ctl_elem_info_is_user(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
4838}
4839extern "C" {
4840    pub fn snd_ctl_elem_info_get_owner(obj: *const snd_ctl_elem_info_t) -> pid_t;
4841}
4842extern "C" {
4843    pub fn snd_ctl_elem_info_get_count(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
4844}
4845extern "C" {
4846    pub fn snd_ctl_elem_info_get_min(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_long;
4847}
4848extern "C" {
4849    pub fn snd_ctl_elem_info_get_max(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_long;
4850}
4851extern "C" {
4852    pub fn snd_ctl_elem_info_get_step(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_long;
4853}
4854extern "C" {
4855    pub fn snd_ctl_elem_info_get_min64(
4856        obj: *const snd_ctl_elem_info_t,
4857    ) -> ::std::os::raw::c_longlong;
4858}
4859extern "C" {
4860    pub fn snd_ctl_elem_info_get_max64(
4861        obj: *const snd_ctl_elem_info_t,
4862    ) -> ::std::os::raw::c_longlong;
4863}
4864extern "C" {
4865    pub fn snd_ctl_elem_info_get_step64(
4866        obj: *const snd_ctl_elem_info_t,
4867    ) -> ::std::os::raw::c_longlong;
4868}
4869extern "C" {
4870    pub fn snd_ctl_elem_info_get_items(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
4871}
4872extern "C" {
4873    pub fn snd_ctl_elem_info_set_item(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
4874}
4875extern "C" {
4876    pub fn snd_ctl_elem_info_get_item_name(
4877        obj: *const snd_ctl_elem_info_t,
4878    ) -> *const ::std::os::raw::c_char;
4879}
4880extern "C" {
4881    pub fn snd_ctl_elem_info_get_dimensions(
4882        obj: *const snd_ctl_elem_info_t,
4883    ) -> ::std::os::raw::c_int;
4884}
4885extern "C" {
4886    pub fn snd_ctl_elem_info_get_dimension(
4887        obj: *const snd_ctl_elem_info_t,
4888        idx: ::std::os::raw::c_uint,
4889    ) -> ::std::os::raw::c_int;
4890}
4891extern "C" {
4892    pub fn snd_ctl_elem_info_set_dimension(
4893        info: *mut snd_ctl_elem_info_t,
4894        dimension: *const ::std::os::raw::c_int,
4895    ) -> ::std::os::raw::c_int;
4896}
4897extern "C" {
4898    pub fn snd_ctl_elem_info_get_id(obj: *const snd_ctl_elem_info_t, ptr: *mut snd_ctl_elem_id_t);
4899}
4900extern "C" {
4901    pub fn snd_ctl_elem_info_get_numid(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
4902}
4903extern "C" {
4904    pub fn snd_ctl_elem_info_get_interface(obj: *const snd_ctl_elem_info_t)
4905        -> snd_ctl_elem_iface_t;
4906}
4907extern "C" {
4908    pub fn snd_ctl_elem_info_get_device(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
4909}
4910extern "C" {
4911    pub fn snd_ctl_elem_info_get_subdevice(
4912        obj: *const snd_ctl_elem_info_t,
4913    ) -> ::std::os::raw::c_uint;
4914}
4915extern "C" {
4916    pub fn snd_ctl_elem_info_get_name(
4917        obj: *const snd_ctl_elem_info_t,
4918    ) -> *const ::std::os::raw::c_char;
4919}
4920extern "C" {
4921    pub fn snd_ctl_elem_info_get_index(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
4922}
4923extern "C" {
4924    pub fn snd_ctl_elem_info_set_id(obj: *mut snd_ctl_elem_info_t, ptr: *const snd_ctl_elem_id_t);
4925}
4926extern "C" {
4927    pub fn snd_ctl_elem_info_set_numid(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
4928}
4929extern "C" {
4930    pub fn snd_ctl_elem_info_set_interface(
4931        obj: *mut snd_ctl_elem_info_t,
4932        val: snd_ctl_elem_iface_t,
4933    );
4934}
4935extern "C" {
4936    pub fn snd_ctl_elem_info_set_device(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
4937}
4938extern "C" {
4939    pub fn snd_ctl_elem_info_set_subdevice(
4940        obj: *mut snd_ctl_elem_info_t,
4941        val: ::std::os::raw::c_uint,
4942    );
4943}
4944extern "C" {
4945    pub fn snd_ctl_elem_info_set_name(
4946        obj: *mut snd_ctl_elem_info_t,
4947        val: *const ::std::os::raw::c_char,
4948    );
4949}
4950extern "C" {
4951    pub fn snd_ctl_elem_info_set_index(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
4952}
4953extern "C" {
4954    pub fn snd_ctl_add_integer_elem_set(
4955        ctl: *mut snd_ctl_t,
4956        info: *mut snd_ctl_elem_info_t,
4957        element_count: ::std::os::raw::c_uint,
4958        member_count: ::std::os::raw::c_uint,
4959        min: ::std::os::raw::c_long,
4960        max: ::std::os::raw::c_long,
4961        step: ::std::os::raw::c_long,
4962    ) -> ::std::os::raw::c_int;
4963}
4964extern "C" {
4965    pub fn snd_ctl_add_integer64_elem_set(
4966        ctl: *mut snd_ctl_t,
4967        info: *mut snd_ctl_elem_info_t,
4968        element_count: ::std::os::raw::c_uint,
4969        member_count: ::std::os::raw::c_uint,
4970        min: ::std::os::raw::c_longlong,
4971        max: ::std::os::raw::c_longlong,
4972        step: ::std::os::raw::c_longlong,
4973    ) -> ::std::os::raw::c_int;
4974}
4975extern "C" {
4976    pub fn snd_ctl_add_boolean_elem_set(
4977        ctl: *mut snd_ctl_t,
4978        info: *mut snd_ctl_elem_info_t,
4979        element_count: ::std::os::raw::c_uint,
4980        member_count: ::std::os::raw::c_uint,
4981    ) -> ::std::os::raw::c_int;
4982}
4983extern "C" {
4984    pub fn snd_ctl_add_enumerated_elem_set(
4985        ctl: *mut snd_ctl_t,
4986        info: *mut snd_ctl_elem_info_t,
4987        element_count: ::std::os::raw::c_uint,
4988        member_count: ::std::os::raw::c_uint,
4989        items: ::std::os::raw::c_uint,
4990        labels: *const *const ::std::os::raw::c_char,
4991    ) -> ::std::os::raw::c_int;
4992}
4993extern "C" {
4994    pub fn snd_ctl_add_bytes_elem_set(
4995        ctl: *mut snd_ctl_t,
4996        info: *mut snd_ctl_elem_info_t,
4997        element_count: ::std::os::raw::c_uint,
4998        member_count: ::std::os::raw::c_uint,
4999    ) -> ::std::os::raw::c_int;
5000}
5001extern "C" {
5002    pub fn snd_ctl_elem_add_integer(
5003        ctl: *mut snd_ctl_t,
5004        id: *const snd_ctl_elem_id_t,
5005        count: ::std::os::raw::c_uint,
5006        imin: ::std::os::raw::c_long,
5007        imax: ::std::os::raw::c_long,
5008        istep: ::std::os::raw::c_long,
5009    ) -> ::std::os::raw::c_int;
5010}
5011extern "C" {
5012    pub fn snd_ctl_elem_add_integer64(
5013        ctl: *mut snd_ctl_t,
5014        id: *const snd_ctl_elem_id_t,
5015        count: ::std::os::raw::c_uint,
5016        imin: ::std::os::raw::c_longlong,
5017        imax: ::std::os::raw::c_longlong,
5018        istep: ::std::os::raw::c_longlong,
5019    ) -> ::std::os::raw::c_int;
5020}
5021extern "C" {
5022    pub fn snd_ctl_elem_add_boolean(
5023        ctl: *mut snd_ctl_t,
5024        id: *const snd_ctl_elem_id_t,
5025        count: ::std::os::raw::c_uint,
5026    ) -> ::std::os::raw::c_int;
5027}
5028extern "C" {
5029    pub fn snd_ctl_elem_add_enumerated(
5030        ctl: *mut snd_ctl_t,
5031        id: *const snd_ctl_elem_id_t,
5032        count: ::std::os::raw::c_uint,
5033        items: ::std::os::raw::c_uint,
5034        names: *const *const ::std::os::raw::c_char,
5035    ) -> ::std::os::raw::c_int;
5036}
5037extern "C" {
5038    pub fn snd_ctl_elem_add_iec958(
5039        ctl: *mut snd_ctl_t,
5040        id: *const snd_ctl_elem_id_t,
5041    ) -> ::std::os::raw::c_int;
5042}
5043extern "C" {
5044    pub fn snd_ctl_elem_remove(
5045        ctl: *mut snd_ctl_t,
5046        id: *mut snd_ctl_elem_id_t,
5047    ) -> ::std::os::raw::c_int;
5048}
5049extern "C" {
5050    pub fn snd_ctl_elem_value_sizeof() -> usize;
5051}
5052extern "C" {
5053    pub fn snd_ctl_elem_value_malloc(ptr: *mut *mut snd_ctl_elem_value_t) -> ::std::os::raw::c_int;
5054}
5055extern "C" {
5056    pub fn snd_ctl_elem_value_free(obj: *mut snd_ctl_elem_value_t);
5057}
5058extern "C" {
5059    pub fn snd_ctl_elem_value_clear(obj: *mut snd_ctl_elem_value_t);
5060}
5061extern "C" {
5062    pub fn snd_ctl_elem_value_copy(
5063        dst: *mut snd_ctl_elem_value_t,
5064        src: *const snd_ctl_elem_value_t,
5065    );
5066}
5067extern "C" {
5068    pub fn snd_ctl_elem_value_compare(
5069        left: *mut snd_ctl_elem_value_t,
5070        right: *const snd_ctl_elem_value_t,
5071    ) -> ::std::os::raw::c_int;
5072}
5073extern "C" {
5074    pub fn snd_ctl_elem_value_get_id(obj: *const snd_ctl_elem_value_t, ptr: *mut snd_ctl_elem_id_t);
5075}
5076extern "C" {
5077    pub fn snd_ctl_elem_value_get_numid(obj: *const snd_ctl_elem_value_t)
5078        -> ::std::os::raw::c_uint;
5079}
5080extern "C" {
5081    pub fn snd_ctl_elem_value_get_interface(
5082        obj: *const snd_ctl_elem_value_t,
5083    ) -> snd_ctl_elem_iface_t;
5084}
5085extern "C" {
5086    pub fn snd_ctl_elem_value_get_device(
5087        obj: *const snd_ctl_elem_value_t,
5088    ) -> ::std::os::raw::c_uint;
5089}
5090extern "C" {
5091    pub fn snd_ctl_elem_value_get_subdevice(
5092        obj: *const snd_ctl_elem_value_t,
5093    ) -> ::std::os::raw::c_uint;
5094}
5095extern "C" {
5096    pub fn snd_ctl_elem_value_get_name(
5097        obj: *const snd_ctl_elem_value_t,
5098    ) -> *const ::std::os::raw::c_char;
5099}
5100extern "C" {
5101    pub fn snd_ctl_elem_value_get_index(obj: *const snd_ctl_elem_value_t)
5102        -> ::std::os::raw::c_uint;
5103}
5104extern "C" {
5105    pub fn snd_ctl_elem_value_set_id(obj: *mut snd_ctl_elem_value_t, ptr: *const snd_ctl_elem_id_t);
5106}
5107extern "C" {
5108    pub fn snd_ctl_elem_value_set_numid(
5109        obj: *mut snd_ctl_elem_value_t,
5110        val: ::std::os::raw::c_uint,
5111    );
5112}
5113extern "C" {
5114    pub fn snd_ctl_elem_value_set_interface(
5115        obj: *mut snd_ctl_elem_value_t,
5116        val: snd_ctl_elem_iface_t,
5117    );
5118}
5119extern "C" {
5120    pub fn snd_ctl_elem_value_set_device(
5121        obj: *mut snd_ctl_elem_value_t,
5122        val: ::std::os::raw::c_uint,
5123    );
5124}
5125extern "C" {
5126    pub fn snd_ctl_elem_value_set_subdevice(
5127        obj: *mut snd_ctl_elem_value_t,
5128        val: ::std::os::raw::c_uint,
5129    );
5130}
5131extern "C" {
5132    pub fn snd_ctl_elem_value_set_name(
5133        obj: *mut snd_ctl_elem_value_t,
5134        val: *const ::std::os::raw::c_char,
5135    );
5136}
5137extern "C" {
5138    pub fn snd_ctl_elem_value_set_index(
5139        obj: *mut snd_ctl_elem_value_t,
5140        val: ::std::os::raw::c_uint,
5141    );
5142}
5143extern "C" {
5144    pub fn snd_ctl_elem_value_get_boolean(
5145        obj: *const snd_ctl_elem_value_t,
5146        idx: ::std::os::raw::c_uint,
5147    ) -> ::std::os::raw::c_int;
5148}
5149extern "C" {
5150    pub fn snd_ctl_elem_value_get_integer(
5151        obj: *const snd_ctl_elem_value_t,
5152        idx: ::std::os::raw::c_uint,
5153    ) -> ::std::os::raw::c_long;
5154}
5155extern "C" {
5156    pub fn snd_ctl_elem_value_get_integer64(
5157        obj: *const snd_ctl_elem_value_t,
5158        idx: ::std::os::raw::c_uint,
5159    ) -> ::std::os::raw::c_longlong;
5160}
5161extern "C" {
5162    pub fn snd_ctl_elem_value_get_enumerated(
5163        obj: *const snd_ctl_elem_value_t,
5164        idx: ::std::os::raw::c_uint,
5165    ) -> ::std::os::raw::c_uint;
5166}
5167extern "C" {
5168    pub fn snd_ctl_elem_value_get_byte(
5169        obj: *const snd_ctl_elem_value_t,
5170        idx: ::std::os::raw::c_uint,
5171    ) -> ::std::os::raw::c_uchar;
5172}
5173extern "C" {
5174    pub fn snd_ctl_elem_value_set_boolean(
5175        obj: *mut snd_ctl_elem_value_t,
5176        idx: ::std::os::raw::c_uint,
5177        val: ::std::os::raw::c_long,
5178    );
5179}
5180extern "C" {
5181    pub fn snd_ctl_elem_value_set_integer(
5182        obj: *mut snd_ctl_elem_value_t,
5183        idx: ::std::os::raw::c_uint,
5184        val: ::std::os::raw::c_long,
5185    );
5186}
5187extern "C" {
5188    pub fn snd_ctl_elem_value_set_integer64(
5189        obj: *mut snd_ctl_elem_value_t,
5190        idx: ::std::os::raw::c_uint,
5191        val: ::std::os::raw::c_longlong,
5192    );
5193}
5194extern "C" {
5195    pub fn snd_ctl_elem_value_set_enumerated(
5196        obj: *mut snd_ctl_elem_value_t,
5197        idx: ::std::os::raw::c_uint,
5198        val: ::std::os::raw::c_uint,
5199    );
5200}
5201extern "C" {
5202    pub fn snd_ctl_elem_value_set_byte(
5203        obj: *mut snd_ctl_elem_value_t,
5204        idx: ::std::os::raw::c_uint,
5205        val: ::std::os::raw::c_uchar,
5206    );
5207}
5208extern "C" {
5209    pub fn snd_ctl_elem_set_bytes(
5210        obj: *mut snd_ctl_elem_value_t,
5211        data: *mut ::std::os::raw::c_void,
5212        size: usize,
5213    );
5214}
5215extern "C" {
5216    pub fn snd_ctl_elem_value_get_bytes(
5217        obj: *const snd_ctl_elem_value_t,
5218    ) -> *const ::std::os::raw::c_void;
5219}
5220extern "C" {
5221    pub fn snd_ctl_elem_value_get_iec958(
5222        obj: *const snd_ctl_elem_value_t,
5223        ptr: *mut snd_aes_iec958_t,
5224    );
5225}
5226extern "C" {
5227    pub fn snd_ctl_elem_value_set_iec958(
5228        obj: *mut snd_ctl_elem_value_t,
5229        ptr: *const snd_aes_iec958_t,
5230    );
5231}
5232extern "C" {
5233    pub fn snd_tlv_parse_dB_info(
5234        tlv: *mut ::std::os::raw::c_uint,
5235        tlv_size: ::std::os::raw::c_uint,
5236        db_tlvp: *mut *mut ::std::os::raw::c_uint,
5237    ) -> ::std::os::raw::c_int;
5238}
5239extern "C" {
5240    pub fn snd_tlv_get_dB_range(
5241        tlv: *mut ::std::os::raw::c_uint,
5242        rangemin: ::std::os::raw::c_long,
5243        rangemax: ::std::os::raw::c_long,
5244        min: *mut ::std::os::raw::c_long,
5245        max: *mut ::std::os::raw::c_long,
5246    ) -> ::std::os::raw::c_int;
5247}
5248extern "C" {
5249    pub fn snd_tlv_convert_to_dB(
5250        tlv: *mut ::std::os::raw::c_uint,
5251        rangemin: ::std::os::raw::c_long,
5252        rangemax: ::std::os::raw::c_long,
5253        volume: ::std::os::raw::c_long,
5254        db_gain: *mut ::std::os::raw::c_long,
5255    ) -> ::std::os::raw::c_int;
5256}
5257extern "C" {
5258    pub fn snd_tlv_convert_from_dB(
5259        tlv: *mut ::std::os::raw::c_uint,
5260        rangemin: ::std::os::raw::c_long,
5261        rangemax: ::std::os::raw::c_long,
5262        db_gain: ::std::os::raw::c_long,
5263        value: *mut ::std::os::raw::c_long,
5264        xdir: ::std::os::raw::c_int,
5265    ) -> ::std::os::raw::c_int;
5266}
5267extern "C" {
5268    pub fn snd_ctl_get_dB_range(
5269        ctl: *mut snd_ctl_t,
5270        id: *const snd_ctl_elem_id_t,
5271        min: *mut ::std::os::raw::c_long,
5272        max: *mut ::std::os::raw::c_long,
5273    ) -> ::std::os::raw::c_int;
5274}
5275extern "C" {
5276    pub fn snd_ctl_convert_to_dB(
5277        ctl: *mut snd_ctl_t,
5278        id: *const snd_ctl_elem_id_t,
5279        volume: ::std::os::raw::c_long,
5280        db_gain: *mut ::std::os::raw::c_long,
5281    ) -> ::std::os::raw::c_int;
5282}
5283extern "C" {
5284    pub fn snd_ctl_convert_from_dB(
5285        ctl: *mut snd_ctl_t,
5286        id: *const snd_ctl_elem_id_t,
5287        db_gain: ::std::os::raw::c_long,
5288        value: *mut ::std::os::raw::c_long,
5289        xdir: ::std::os::raw::c_int,
5290    ) -> ::std::os::raw::c_int;
5291}
5292#[repr(C)]
5293#[derive(Debug, Copy, Clone)]
5294pub struct _snd_hctl_elem {
5295    _unused: [u8; 0],
5296}
5297pub type snd_hctl_elem_t = _snd_hctl_elem;
5298#[repr(C)]
5299#[derive(Debug, Copy, Clone)]
5300pub struct _snd_hctl {
5301    _unused: [u8; 0],
5302}
5303pub type snd_hctl_t = _snd_hctl;
5304pub type snd_hctl_compare_t = ::std::option::Option<
5305    unsafe extern "C" fn(
5306        e1: *const snd_hctl_elem_t,
5307        e2: *const snd_hctl_elem_t,
5308    ) -> ::std::os::raw::c_int,
5309>;
5310extern "C" {
5311    pub fn snd_hctl_compare_fast(
5312        c1: *const snd_hctl_elem_t,
5313        c2: *const snd_hctl_elem_t,
5314    ) -> ::std::os::raw::c_int;
5315}
5316pub type snd_hctl_callback_t = ::std::option::Option<
5317    unsafe extern "C" fn(
5318        hctl: *mut snd_hctl_t,
5319        mask: ::std::os::raw::c_uint,
5320        elem: *mut snd_hctl_elem_t,
5321    ) -> ::std::os::raw::c_int,
5322>;
5323pub type snd_hctl_elem_callback_t = ::std::option::Option<
5324    unsafe extern "C" fn(
5325        elem: *mut snd_hctl_elem_t,
5326        mask: ::std::os::raw::c_uint,
5327    ) -> ::std::os::raw::c_int,
5328>;
5329extern "C" {
5330    pub fn snd_hctl_open(
5331        hctl: *mut *mut snd_hctl_t,
5332        name: *const ::std::os::raw::c_char,
5333        mode: ::std::os::raw::c_int,
5334    ) -> ::std::os::raw::c_int;
5335}
5336extern "C" {
5337    pub fn snd_hctl_open_ctl(
5338        hctlp: *mut *mut snd_hctl_t,
5339        ctl: *mut snd_ctl_t,
5340    ) -> ::std::os::raw::c_int;
5341}
5342extern "C" {
5343    pub fn snd_hctl_close(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
5344}
5345extern "C" {
5346    pub fn snd_hctl_nonblock(
5347        hctl: *mut snd_hctl_t,
5348        nonblock: ::std::os::raw::c_int,
5349    ) -> ::std::os::raw::c_int;
5350}
5351extern "C" {
5352    pub fn snd_hctl_poll_descriptors_count(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
5353}
5354extern "C" {
5355    pub fn snd_hctl_poll_descriptors(
5356        hctl: *mut snd_hctl_t,
5357        pfds: *mut pollfd,
5358        space: ::std::os::raw::c_uint,
5359    ) -> ::std::os::raw::c_int;
5360}
5361extern "C" {
5362    pub fn snd_hctl_poll_descriptors_revents(
5363        ctl: *mut snd_hctl_t,
5364        pfds: *mut pollfd,
5365        nfds: ::std::os::raw::c_uint,
5366        revents: *mut ::std::os::raw::c_ushort,
5367    ) -> ::std::os::raw::c_int;
5368}
5369extern "C" {
5370    pub fn snd_hctl_get_count(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_uint;
5371}
5372extern "C" {
5373    pub fn snd_hctl_set_compare(
5374        hctl: *mut snd_hctl_t,
5375        hsort: snd_hctl_compare_t,
5376    ) -> ::std::os::raw::c_int;
5377}
5378extern "C" {
5379    pub fn snd_hctl_first_elem(hctl: *mut snd_hctl_t) -> *mut snd_hctl_elem_t;
5380}
5381extern "C" {
5382    pub fn snd_hctl_last_elem(hctl: *mut snd_hctl_t) -> *mut snd_hctl_elem_t;
5383}
5384extern "C" {
5385    pub fn snd_hctl_find_elem(
5386        hctl: *mut snd_hctl_t,
5387        id: *const snd_ctl_elem_id_t,
5388    ) -> *mut snd_hctl_elem_t;
5389}
5390extern "C" {
5391    pub fn snd_hctl_set_callback(hctl: *mut snd_hctl_t, callback: snd_hctl_callback_t);
5392}
5393extern "C" {
5394    pub fn snd_hctl_set_callback_private(hctl: *mut snd_hctl_t, data: *mut ::std::os::raw::c_void);
5395}
5396extern "C" {
5397    pub fn snd_hctl_get_callback_private(hctl: *mut snd_hctl_t) -> *mut ::std::os::raw::c_void;
5398}
5399extern "C" {
5400    pub fn snd_hctl_load(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
5401}
5402extern "C" {
5403    pub fn snd_hctl_free(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
5404}
5405extern "C" {
5406    pub fn snd_hctl_handle_events(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
5407}
5408extern "C" {
5409    pub fn snd_hctl_name(hctl: *mut snd_hctl_t) -> *const ::std::os::raw::c_char;
5410}
5411extern "C" {
5412    pub fn snd_hctl_wait(
5413        hctl: *mut snd_hctl_t,
5414        timeout: ::std::os::raw::c_int,
5415    ) -> ::std::os::raw::c_int;
5416}
5417extern "C" {
5418    pub fn snd_hctl_ctl(hctl: *mut snd_hctl_t) -> *mut snd_ctl_t;
5419}
5420extern "C" {
5421    pub fn snd_hctl_elem_next(elem: *mut snd_hctl_elem_t) -> *mut snd_hctl_elem_t;
5422}
5423extern "C" {
5424    pub fn snd_hctl_elem_prev(elem: *mut snd_hctl_elem_t) -> *mut snd_hctl_elem_t;
5425}
5426extern "C" {
5427    pub fn snd_hctl_elem_info(
5428        elem: *mut snd_hctl_elem_t,
5429        info: *mut snd_ctl_elem_info_t,
5430    ) -> ::std::os::raw::c_int;
5431}
5432extern "C" {
5433    pub fn snd_hctl_elem_read(
5434        elem: *mut snd_hctl_elem_t,
5435        value: *mut snd_ctl_elem_value_t,
5436    ) -> ::std::os::raw::c_int;
5437}
5438extern "C" {
5439    pub fn snd_hctl_elem_write(
5440        elem: *mut snd_hctl_elem_t,
5441        value: *mut snd_ctl_elem_value_t,
5442    ) -> ::std::os::raw::c_int;
5443}
5444extern "C" {
5445    pub fn snd_hctl_elem_tlv_read(
5446        elem: *mut snd_hctl_elem_t,
5447        tlv: *mut ::std::os::raw::c_uint,
5448        tlv_size: ::std::os::raw::c_uint,
5449    ) -> ::std::os::raw::c_int;
5450}
5451extern "C" {
5452    pub fn snd_hctl_elem_tlv_write(
5453        elem: *mut snd_hctl_elem_t,
5454        tlv: *const ::std::os::raw::c_uint,
5455    ) -> ::std::os::raw::c_int;
5456}
5457extern "C" {
5458    pub fn snd_hctl_elem_tlv_command(
5459        elem: *mut snd_hctl_elem_t,
5460        tlv: *const ::std::os::raw::c_uint,
5461    ) -> ::std::os::raw::c_int;
5462}
5463extern "C" {
5464    pub fn snd_hctl_elem_get_hctl(elem: *mut snd_hctl_elem_t) -> *mut snd_hctl_t;
5465}
5466extern "C" {
5467    pub fn snd_hctl_elem_get_id(obj: *const snd_hctl_elem_t, ptr: *mut snd_ctl_elem_id_t);
5468}
5469extern "C" {
5470    pub fn snd_hctl_elem_get_numid(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
5471}
5472extern "C" {
5473    pub fn snd_hctl_elem_get_interface(obj: *const snd_hctl_elem_t) -> snd_ctl_elem_iface_t;
5474}
5475extern "C" {
5476    pub fn snd_hctl_elem_get_device(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
5477}
5478extern "C" {
5479    pub fn snd_hctl_elem_get_subdevice(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
5480}
5481extern "C" {
5482    pub fn snd_hctl_elem_get_name(obj: *const snd_hctl_elem_t) -> *const ::std::os::raw::c_char;
5483}
5484extern "C" {
5485    pub fn snd_hctl_elem_get_index(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
5486}
5487extern "C" {
5488    pub fn snd_hctl_elem_set_callback(obj: *mut snd_hctl_elem_t, val: snd_hctl_elem_callback_t);
5489}
5490extern "C" {
5491    pub fn snd_hctl_elem_get_callback_private(
5492        obj: *const snd_hctl_elem_t,
5493    ) -> *mut ::std::os::raw::c_void;
5494}
5495extern "C" {
5496    pub fn snd_hctl_elem_set_callback_private(
5497        obj: *mut snd_hctl_elem_t,
5498        val: *mut ::std::os::raw::c_void,
5499    );
5500}
5501extern "C" {
5502    pub fn snd_sctl_build(
5503        ctl: *mut *mut snd_sctl_t,
5504        handle: *mut snd_ctl_t,
5505        config: *mut snd_config_t,
5506        private_data: *mut snd_config_t,
5507        mode: ::std::os::raw::c_int,
5508    ) -> ::std::os::raw::c_int;
5509}
5510extern "C" {
5511    pub fn snd_sctl_free(handle: *mut snd_sctl_t) -> ::std::os::raw::c_int;
5512}
5513extern "C" {
5514    pub fn snd_sctl_install(handle: *mut snd_sctl_t) -> ::std::os::raw::c_int;
5515}
5516extern "C" {
5517    pub fn snd_sctl_remove(handle: *mut snd_sctl_t) -> ::std::os::raw::c_int;
5518}
5519#[repr(C)]
5520#[derive(Debug, Copy, Clone)]
5521pub struct _snd_mixer {
5522    _unused: [u8; 0],
5523}
5524pub type snd_mixer_t = _snd_mixer;
5525#[repr(C)]
5526#[derive(Debug, Copy, Clone)]
5527pub struct _snd_mixer_class {
5528    _unused: [u8; 0],
5529}
5530pub type snd_mixer_class_t = _snd_mixer_class;
5531#[repr(C)]
5532#[derive(Debug, Copy, Clone)]
5533pub struct _snd_mixer_elem {
5534    _unused: [u8; 0],
5535}
5536pub type snd_mixer_elem_t = _snd_mixer_elem;
5537pub type snd_mixer_callback_t = ::std::option::Option<
5538    unsafe extern "C" fn(
5539        ctl: *mut snd_mixer_t,
5540        mask: ::std::os::raw::c_uint,
5541        elem: *mut snd_mixer_elem_t,
5542    ) -> ::std::os::raw::c_int,
5543>;
5544pub type snd_mixer_elem_callback_t = ::std::option::Option<
5545    unsafe extern "C" fn(
5546        elem: *mut snd_mixer_elem_t,
5547        mask: ::std::os::raw::c_uint,
5548    ) -> ::std::os::raw::c_int,
5549>;
5550pub type snd_mixer_compare_t = ::std::option::Option<
5551    unsafe extern "C" fn(
5552        e1: *const snd_mixer_elem_t,
5553        e2: *const snd_mixer_elem_t,
5554    ) -> ::std::os::raw::c_int,
5555>;
5556pub type snd_mixer_event_t = ::std::option::Option<
5557    unsafe extern "C" fn(
5558        class_: *mut snd_mixer_class_t,
5559        mask: ::std::os::raw::c_uint,
5560        helem: *mut snd_hctl_elem_t,
5561        melem: *mut snd_mixer_elem_t,
5562    ) -> ::std::os::raw::c_int,
5563>;
5564pub const SND_MIXER_ELEM_SIMPLE: _snd_mixer_elem_type = 0;
5565pub const SND_MIXER_ELEM_LAST: _snd_mixer_elem_type = 0;
5566pub type _snd_mixer_elem_type = ::std::os::raw::c_uint;
5567pub use self::_snd_mixer_elem_type as snd_mixer_elem_type_t;
5568extern "C" {
5569    pub fn snd_mixer_open(
5570        mixer: *mut *mut snd_mixer_t,
5571        mode: ::std::os::raw::c_int,
5572    ) -> ::std::os::raw::c_int;
5573}
5574extern "C" {
5575    pub fn snd_mixer_close(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
5576}
5577extern "C" {
5578    pub fn snd_mixer_first_elem(mixer: *mut snd_mixer_t) -> *mut snd_mixer_elem_t;
5579}
5580extern "C" {
5581    pub fn snd_mixer_last_elem(mixer: *mut snd_mixer_t) -> *mut snd_mixer_elem_t;
5582}
5583extern "C" {
5584    pub fn snd_mixer_handle_events(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
5585}
5586extern "C" {
5587    pub fn snd_mixer_attach(
5588        mixer: *mut snd_mixer_t,
5589        name: *const ::std::os::raw::c_char,
5590    ) -> ::std::os::raw::c_int;
5591}
5592extern "C" {
5593    pub fn snd_mixer_attach_hctl(
5594        mixer: *mut snd_mixer_t,
5595        hctl: *mut snd_hctl_t,
5596    ) -> ::std::os::raw::c_int;
5597}
5598extern "C" {
5599    pub fn snd_mixer_detach(
5600        mixer: *mut snd_mixer_t,
5601        name: *const ::std::os::raw::c_char,
5602    ) -> ::std::os::raw::c_int;
5603}
5604extern "C" {
5605    pub fn snd_mixer_detach_hctl(
5606        mixer: *mut snd_mixer_t,
5607        hctl: *mut snd_hctl_t,
5608    ) -> ::std::os::raw::c_int;
5609}
5610extern "C" {
5611    pub fn snd_mixer_get_hctl(
5612        mixer: *mut snd_mixer_t,
5613        name: *const ::std::os::raw::c_char,
5614        hctl: *mut *mut snd_hctl_t,
5615    ) -> ::std::os::raw::c_int;
5616}
5617extern "C" {
5618    pub fn snd_mixer_poll_descriptors_count(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
5619}
5620extern "C" {
5621    pub fn snd_mixer_poll_descriptors(
5622        mixer: *mut snd_mixer_t,
5623        pfds: *mut pollfd,
5624        space: ::std::os::raw::c_uint,
5625    ) -> ::std::os::raw::c_int;
5626}
5627extern "C" {
5628    pub fn snd_mixer_poll_descriptors_revents(
5629        mixer: *mut snd_mixer_t,
5630        pfds: *mut pollfd,
5631        nfds: ::std::os::raw::c_uint,
5632        revents: *mut ::std::os::raw::c_ushort,
5633    ) -> ::std::os::raw::c_int;
5634}
5635extern "C" {
5636    pub fn snd_mixer_load(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
5637}
5638extern "C" {
5639    pub fn snd_mixer_free(mixer: *mut snd_mixer_t);
5640}
5641extern "C" {
5642    pub fn snd_mixer_wait(
5643        mixer: *mut snd_mixer_t,
5644        timeout: ::std::os::raw::c_int,
5645    ) -> ::std::os::raw::c_int;
5646}
5647extern "C" {
5648    pub fn snd_mixer_set_compare(
5649        mixer: *mut snd_mixer_t,
5650        msort: snd_mixer_compare_t,
5651    ) -> ::std::os::raw::c_int;
5652}
5653extern "C" {
5654    pub fn snd_mixer_set_callback(obj: *mut snd_mixer_t, val: snd_mixer_callback_t);
5655}
5656extern "C" {
5657    pub fn snd_mixer_get_callback_private(obj: *const snd_mixer_t) -> *mut ::std::os::raw::c_void;
5658}
5659extern "C" {
5660    pub fn snd_mixer_set_callback_private(obj: *mut snd_mixer_t, val: *mut ::std::os::raw::c_void);
5661}
5662extern "C" {
5663    pub fn snd_mixer_get_count(obj: *const snd_mixer_t) -> ::std::os::raw::c_uint;
5664}
5665extern "C" {
5666    pub fn snd_mixer_class_unregister(clss: *mut snd_mixer_class_t) -> ::std::os::raw::c_int;
5667}
5668extern "C" {
5669    pub fn snd_mixer_elem_next(elem: *mut snd_mixer_elem_t) -> *mut snd_mixer_elem_t;
5670}
5671extern "C" {
5672    pub fn snd_mixer_elem_prev(elem: *mut snd_mixer_elem_t) -> *mut snd_mixer_elem_t;
5673}
5674extern "C" {
5675    pub fn snd_mixer_elem_set_callback(obj: *mut snd_mixer_elem_t, val: snd_mixer_elem_callback_t);
5676}
5677extern "C" {
5678    pub fn snd_mixer_elem_get_callback_private(
5679        obj: *const snd_mixer_elem_t,
5680    ) -> *mut ::std::os::raw::c_void;
5681}
5682extern "C" {
5683    pub fn snd_mixer_elem_set_callback_private(
5684        obj: *mut snd_mixer_elem_t,
5685        val: *mut ::std::os::raw::c_void,
5686    );
5687}
5688extern "C" {
5689    pub fn snd_mixer_elem_get_type(obj: *const snd_mixer_elem_t) -> snd_mixer_elem_type_t;
5690}
5691extern "C" {
5692    pub fn snd_mixer_class_register(
5693        class_: *mut snd_mixer_class_t,
5694        mixer: *mut snd_mixer_t,
5695    ) -> ::std::os::raw::c_int;
5696}
5697extern "C" {
5698    pub fn snd_mixer_elem_new(
5699        elem: *mut *mut snd_mixer_elem_t,
5700        type_: snd_mixer_elem_type_t,
5701        compare_weight: ::std::os::raw::c_int,
5702        private_data: *mut ::std::os::raw::c_void,
5703        private_free: ::std::option::Option<unsafe extern "C" fn(elem: *mut snd_mixer_elem_t)>,
5704    ) -> ::std::os::raw::c_int;
5705}
5706extern "C" {
5707    pub fn snd_mixer_elem_add(
5708        elem: *mut snd_mixer_elem_t,
5709        class_: *mut snd_mixer_class_t,
5710    ) -> ::std::os::raw::c_int;
5711}
5712extern "C" {
5713    pub fn snd_mixer_elem_remove(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5714}
5715extern "C" {
5716    pub fn snd_mixer_elem_free(elem: *mut snd_mixer_elem_t);
5717}
5718extern "C" {
5719    pub fn snd_mixer_elem_info(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5720}
5721extern "C" {
5722    pub fn snd_mixer_elem_value(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5723}
5724extern "C" {
5725    pub fn snd_mixer_elem_attach(
5726        melem: *mut snd_mixer_elem_t,
5727        helem: *mut snd_hctl_elem_t,
5728    ) -> ::std::os::raw::c_int;
5729}
5730extern "C" {
5731    pub fn snd_mixer_elem_detach(
5732        melem: *mut snd_mixer_elem_t,
5733        helem: *mut snd_hctl_elem_t,
5734    ) -> ::std::os::raw::c_int;
5735}
5736extern "C" {
5737    pub fn snd_mixer_elem_empty(melem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5738}
5739extern "C" {
5740    pub fn snd_mixer_elem_get_private(
5741        melem: *const snd_mixer_elem_t,
5742    ) -> *mut ::std::os::raw::c_void;
5743}
5744extern "C" {
5745    pub fn snd_mixer_class_sizeof() -> usize;
5746}
5747extern "C" {
5748    pub fn snd_mixer_class_malloc(ptr: *mut *mut snd_mixer_class_t) -> ::std::os::raw::c_int;
5749}
5750extern "C" {
5751    pub fn snd_mixer_class_free(obj: *mut snd_mixer_class_t);
5752}
5753extern "C" {
5754    pub fn snd_mixer_class_copy(dst: *mut snd_mixer_class_t, src: *const snd_mixer_class_t);
5755}
5756extern "C" {
5757    pub fn snd_mixer_class_get_mixer(class_: *const snd_mixer_class_t) -> *mut snd_mixer_t;
5758}
5759extern "C" {
5760    pub fn snd_mixer_class_get_event(class_: *const snd_mixer_class_t) -> snd_mixer_event_t;
5761}
5762extern "C" {
5763    pub fn snd_mixer_class_get_private(
5764        class_: *const snd_mixer_class_t,
5765    ) -> *mut ::std::os::raw::c_void;
5766}
5767extern "C" {
5768    pub fn snd_mixer_class_get_compare(class_: *const snd_mixer_class_t) -> snd_mixer_compare_t;
5769}
5770extern "C" {
5771    pub fn snd_mixer_class_set_event(
5772        class_: *mut snd_mixer_class_t,
5773        event: snd_mixer_event_t,
5774    ) -> ::std::os::raw::c_int;
5775}
5776extern "C" {
5777    pub fn snd_mixer_class_set_private(
5778        class_: *mut snd_mixer_class_t,
5779        private_data: *mut ::std::os::raw::c_void,
5780    ) -> ::std::os::raw::c_int;
5781}
5782extern "C" {
5783    pub fn snd_mixer_class_set_private_free(
5784        class_: *mut snd_mixer_class_t,
5785        private_free: ::std::option::Option<unsafe extern "C" fn(arg1: *mut snd_mixer_class_t)>,
5786    ) -> ::std::os::raw::c_int;
5787}
5788extern "C" {
5789    pub fn snd_mixer_class_set_compare(
5790        class_: *mut snd_mixer_class_t,
5791        compare: snd_mixer_compare_t,
5792    ) -> ::std::os::raw::c_int;
5793}
5794pub const SND_MIXER_SCHN_UNKNOWN: _snd_mixer_selem_channel_id = -1;
5795pub const SND_MIXER_SCHN_FRONT_LEFT: _snd_mixer_selem_channel_id = 0;
5796pub const SND_MIXER_SCHN_FRONT_RIGHT: _snd_mixer_selem_channel_id = 1;
5797pub const SND_MIXER_SCHN_REAR_LEFT: _snd_mixer_selem_channel_id = 2;
5798pub const SND_MIXER_SCHN_REAR_RIGHT: _snd_mixer_selem_channel_id = 3;
5799pub const SND_MIXER_SCHN_FRONT_CENTER: _snd_mixer_selem_channel_id = 4;
5800pub const SND_MIXER_SCHN_WOOFER: _snd_mixer_selem_channel_id = 5;
5801pub const SND_MIXER_SCHN_SIDE_LEFT: _snd_mixer_selem_channel_id = 6;
5802pub const SND_MIXER_SCHN_SIDE_RIGHT: _snd_mixer_selem_channel_id = 7;
5803pub const SND_MIXER_SCHN_REAR_CENTER: _snd_mixer_selem_channel_id = 8;
5804pub const SND_MIXER_SCHN_LAST: _snd_mixer_selem_channel_id = 31;
5805pub const SND_MIXER_SCHN_MONO: _snd_mixer_selem_channel_id = 0;
5806pub type _snd_mixer_selem_channel_id = ::std::os::raw::c_int;
5807pub use self::_snd_mixer_selem_channel_id as snd_mixer_selem_channel_id_t;
5808pub const SND_MIXER_SABSTRACT_NONE: snd_mixer_selem_regopt_abstract = 0;
5809pub const SND_MIXER_SABSTRACT_BASIC: snd_mixer_selem_regopt_abstract = 1;
5810pub type snd_mixer_selem_regopt_abstract = ::std::os::raw::c_uint;
5811#[repr(C)]
5812#[derive(Debug, Copy, Clone)]
5813pub struct snd_mixer_selem_regopt {
5814    pub ver: ::std::os::raw::c_int,
5815    pub abstract_: snd_mixer_selem_regopt_abstract,
5816    pub device: *const ::std::os::raw::c_char,
5817    pub playback_pcm: *mut snd_pcm_t,
5818    pub capture_pcm: *mut snd_pcm_t,
5819}
5820#[repr(C)]
5821#[derive(Debug, Copy, Clone)]
5822pub struct _snd_mixer_selem_id {
5823    _unused: [u8; 0],
5824}
5825pub type snd_mixer_selem_id_t = _snd_mixer_selem_id;
5826extern "C" {
5827    pub fn snd_mixer_selem_channel_name(
5828        channel: snd_mixer_selem_channel_id_t,
5829    ) -> *const ::std::os::raw::c_char;
5830}
5831extern "C" {
5832    pub fn snd_mixer_selem_register(
5833        mixer: *mut snd_mixer_t,
5834        options: *mut snd_mixer_selem_regopt,
5835        classp: *mut *mut snd_mixer_class_t,
5836    ) -> ::std::os::raw::c_int;
5837}
5838extern "C" {
5839    pub fn snd_mixer_selem_get_id(element: *mut snd_mixer_elem_t, id: *mut snd_mixer_selem_id_t);
5840}
5841extern "C" {
5842    pub fn snd_mixer_selem_get_name(elem: *mut snd_mixer_elem_t) -> *const ::std::os::raw::c_char;
5843}
5844extern "C" {
5845    pub fn snd_mixer_selem_get_index(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_uint;
5846}
5847extern "C" {
5848    pub fn snd_mixer_find_selem(
5849        mixer: *mut snd_mixer_t,
5850        id: *const snd_mixer_selem_id_t,
5851    ) -> *mut snd_mixer_elem_t;
5852}
5853extern "C" {
5854    pub fn snd_mixer_selem_is_active(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5855}
5856extern "C" {
5857    pub fn snd_mixer_selem_is_playback_mono(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5858}
5859extern "C" {
5860    pub fn snd_mixer_selem_has_playback_channel(
5861        obj: *mut snd_mixer_elem_t,
5862        channel: snd_mixer_selem_channel_id_t,
5863    ) -> ::std::os::raw::c_int;
5864}
5865extern "C" {
5866    pub fn snd_mixer_selem_is_capture_mono(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5867}
5868extern "C" {
5869    pub fn snd_mixer_selem_has_capture_channel(
5870        obj: *mut snd_mixer_elem_t,
5871        channel: snd_mixer_selem_channel_id_t,
5872    ) -> ::std::os::raw::c_int;
5873}
5874extern "C" {
5875    pub fn snd_mixer_selem_get_capture_group(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5876}
5877extern "C" {
5878    pub fn snd_mixer_selem_has_common_volume(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5879}
5880extern "C" {
5881    pub fn snd_mixer_selem_has_playback_volume(
5882        elem: *mut snd_mixer_elem_t,
5883    ) -> ::std::os::raw::c_int;
5884}
5885extern "C" {
5886    pub fn snd_mixer_selem_has_playback_volume_joined(
5887        elem: *mut snd_mixer_elem_t,
5888    ) -> ::std::os::raw::c_int;
5889}
5890extern "C" {
5891    pub fn snd_mixer_selem_has_capture_volume(elem: *mut snd_mixer_elem_t)
5892        -> ::std::os::raw::c_int;
5893}
5894extern "C" {
5895    pub fn snd_mixer_selem_has_capture_volume_joined(
5896        elem: *mut snd_mixer_elem_t,
5897    ) -> ::std::os::raw::c_int;
5898}
5899extern "C" {
5900    pub fn snd_mixer_selem_has_common_switch(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
5901}
5902extern "C" {
5903    pub fn snd_mixer_selem_has_playback_switch(
5904        elem: *mut snd_mixer_elem_t,
5905    ) -> ::std::os::raw::c_int;
5906}
5907extern "C" {
5908    pub fn snd_mixer_selem_has_playback_switch_joined(
5909        elem: *mut snd_mixer_elem_t,
5910    ) -> ::std::os::raw::c_int;
5911}
5912extern "C" {
5913    pub fn snd_mixer_selem_has_capture_switch(elem: *mut snd_mixer_elem_t)
5914        -> ::std::os::raw::c_int;
5915}
5916extern "C" {
5917    pub fn snd_mixer_selem_has_capture_switch_joined(
5918        elem: *mut snd_mixer_elem_t,
5919    ) -> ::std::os::raw::c_int;
5920}
5921extern "C" {
5922    pub fn snd_mixer_selem_has_capture_switch_exclusive(
5923        elem: *mut snd_mixer_elem_t,
5924    ) -> ::std::os::raw::c_int;
5925}
5926extern "C" {
5927    pub fn snd_mixer_selem_ask_playback_vol_dB(
5928        elem: *mut snd_mixer_elem_t,
5929        value: ::std::os::raw::c_long,
5930        dBvalue: *mut ::std::os::raw::c_long,
5931    ) -> ::std::os::raw::c_int;
5932}
5933extern "C" {
5934    pub fn snd_mixer_selem_ask_capture_vol_dB(
5935        elem: *mut snd_mixer_elem_t,
5936        value: ::std::os::raw::c_long,
5937        dBvalue: *mut ::std::os::raw::c_long,
5938    ) -> ::std::os::raw::c_int;
5939}
5940extern "C" {
5941    pub fn snd_mixer_selem_ask_playback_dB_vol(
5942        elem: *mut snd_mixer_elem_t,
5943        dBvalue: ::std::os::raw::c_long,
5944        dir: ::std::os::raw::c_int,
5945        value: *mut ::std::os::raw::c_long,
5946    ) -> ::std::os::raw::c_int;
5947}
5948extern "C" {
5949    pub fn snd_mixer_selem_ask_capture_dB_vol(
5950        elem: *mut snd_mixer_elem_t,
5951        dBvalue: ::std::os::raw::c_long,
5952        dir: ::std::os::raw::c_int,
5953        value: *mut ::std::os::raw::c_long,
5954    ) -> ::std::os::raw::c_int;
5955}
5956extern "C" {
5957    pub fn snd_mixer_selem_get_playback_volume(
5958        elem: *mut snd_mixer_elem_t,
5959        channel: snd_mixer_selem_channel_id_t,
5960        value: *mut ::std::os::raw::c_long,
5961    ) -> ::std::os::raw::c_int;
5962}
5963extern "C" {
5964    pub fn snd_mixer_selem_get_capture_volume(
5965        elem: *mut snd_mixer_elem_t,
5966        channel: snd_mixer_selem_channel_id_t,
5967        value: *mut ::std::os::raw::c_long,
5968    ) -> ::std::os::raw::c_int;
5969}
5970extern "C" {
5971    pub fn snd_mixer_selem_get_playback_dB(
5972        elem: *mut snd_mixer_elem_t,
5973        channel: snd_mixer_selem_channel_id_t,
5974        value: *mut ::std::os::raw::c_long,
5975    ) -> ::std::os::raw::c_int;
5976}
5977extern "C" {
5978    pub fn snd_mixer_selem_get_capture_dB(
5979        elem: *mut snd_mixer_elem_t,
5980        channel: snd_mixer_selem_channel_id_t,
5981        value: *mut ::std::os::raw::c_long,
5982    ) -> ::std::os::raw::c_int;
5983}
5984extern "C" {
5985    pub fn snd_mixer_selem_get_playback_switch(
5986        elem: *mut snd_mixer_elem_t,
5987        channel: snd_mixer_selem_channel_id_t,
5988        value: *mut ::std::os::raw::c_int,
5989    ) -> ::std::os::raw::c_int;
5990}
5991extern "C" {
5992    pub fn snd_mixer_selem_get_capture_switch(
5993        elem: *mut snd_mixer_elem_t,
5994        channel: snd_mixer_selem_channel_id_t,
5995        value: *mut ::std::os::raw::c_int,
5996    ) -> ::std::os::raw::c_int;
5997}
5998extern "C" {
5999    pub fn snd_mixer_selem_set_playback_volume(
6000        elem: *mut snd_mixer_elem_t,
6001        channel: snd_mixer_selem_channel_id_t,
6002        value: ::std::os::raw::c_long,
6003    ) -> ::std::os::raw::c_int;
6004}
6005extern "C" {
6006    pub fn snd_mixer_selem_set_capture_volume(
6007        elem: *mut snd_mixer_elem_t,
6008        channel: snd_mixer_selem_channel_id_t,
6009        value: ::std::os::raw::c_long,
6010    ) -> ::std::os::raw::c_int;
6011}
6012extern "C" {
6013    pub fn snd_mixer_selem_set_playback_dB(
6014        elem: *mut snd_mixer_elem_t,
6015        channel: snd_mixer_selem_channel_id_t,
6016        value: ::std::os::raw::c_long,
6017        dir: ::std::os::raw::c_int,
6018    ) -> ::std::os::raw::c_int;
6019}
6020extern "C" {
6021    pub fn snd_mixer_selem_set_capture_dB(
6022        elem: *mut snd_mixer_elem_t,
6023        channel: snd_mixer_selem_channel_id_t,
6024        value: ::std::os::raw::c_long,
6025        dir: ::std::os::raw::c_int,
6026    ) -> ::std::os::raw::c_int;
6027}
6028extern "C" {
6029    pub fn snd_mixer_selem_set_playback_volume_all(
6030        elem: *mut snd_mixer_elem_t,
6031        value: ::std::os::raw::c_long,
6032    ) -> ::std::os::raw::c_int;
6033}
6034extern "C" {
6035    pub fn snd_mixer_selem_set_capture_volume_all(
6036        elem: *mut snd_mixer_elem_t,
6037        value: ::std::os::raw::c_long,
6038    ) -> ::std::os::raw::c_int;
6039}
6040extern "C" {
6041    pub fn snd_mixer_selem_set_playback_dB_all(
6042        elem: *mut snd_mixer_elem_t,
6043        value: ::std::os::raw::c_long,
6044        dir: ::std::os::raw::c_int,
6045    ) -> ::std::os::raw::c_int;
6046}
6047extern "C" {
6048    pub fn snd_mixer_selem_set_capture_dB_all(
6049        elem: *mut snd_mixer_elem_t,
6050        value: ::std::os::raw::c_long,
6051        dir: ::std::os::raw::c_int,
6052    ) -> ::std::os::raw::c_int;
6053}
6054extern "C" {
6055    pub fn snd_mixer_selem_set_playback_switch(
6056        elem: *mut snd_mixer_elem_t,
6057        channel: snd_mixer_selem_channel_id_t,
6058        value: ::std::os::raw::c_int,
6059    ) -> ::std::os::raw::c_int;
6060}
6061extern "C" {
6062    pub fn snd_mixer_selem_set_capture_switch(
6063        elem: *mut snd_mixer_elem_t,
6064        channel: snd_mixer_selem_channel_id_t,
6065        value: ::std::os::raw::c_int,
6066    ) -> ::std::os::raw::c_int;
6067}
6068extern "C" {
6069    pub fn snd_mixer_selem_set_playback_switch_all(
6070        elem: *mut snd_mixer_elem_t,
6071        value: ::std::os::raw::c_int,
6072    ) -> ::std::os::raw::c_int;
6073}
6074extern "C" {
6075    pub fn snd_mixer_selem_set_capture_switch_all(
6076        elem: *mut snd_mixer_elem_t,
6077        value: ::std::os::raw::c_int,
6078    ) -> ::std::os::raw::c_int;
6079}
6080extern "C" {
6081    pub fn snd_mixer_selem_get_playback_volume_range(
6082        elem: *mut snd_mixer_elem_t,
6083        min: *mut ::std::os::raw::c_long,
6084        max: *mut ::std::os::raw::c_long,
6085    ) -> ::std::os::raw::c_int;
6086}
6087extern "C" {
6088    pub fn snd_mixer_selem_get_playback_dB_range(
6089        elem: *mut snd_mixer_elem_t,
6090        min: *mut ::std::os::raw::c_long,
6091        max: *mut ::std::os::raw::c_long,
6092    ) -> ::std::os::raw::c_int;
6093}
6094extern "C" {
6095    pub fn snd_mixer_selem_set_playback_volume_range(
6096        elem: *mut snd_mixer_elem_t,
6097        min: ::std::os::raw::c_long,
6098        max: ::std::os::raw::c_long,
6099    ) -> ::std::os::raw::c_int;
6100}
6101extern "C" {
6102    pub fn snd_mixer_selem_get_capture_volume_range(
6103        elem: *mut snd_mixer_elem_t,
6104        min: *mut ::std::os::raw::c_long,
6105        max: *mut ::std::os::raw::c_long,
6106    ) -> ::std::os::raw::c_int;
6107}
6108extern "C" {
6109    pub fn snd_mixer_selem_get_capture_dB_range(
6110        elem: *mut snd_mixer_elem_t,
6111        min: *mut ::std::os::raw::c_long,
6112        max: *mut ::std::os::raw::c_long,
6113    ) -> ::std::os::raw::c_int;
6114}
6115extern "C" {
6116    pub fn snd_mixer_selem_set_capture_volume_range(
6117        elem: *mut snd_mixer_elem_t,
6118        min: ::std::os::raw::c_long,
6119        max: ::std::os::raw::c_long,
6120    ) -> ::std::os::raw::c_int;
6121}
6122extern "C" {
6123    pub fn snd_mixer_selem_is_enumerated(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
6124}
6125extern "C" {
6126    pub fn snd_mixer_selem_is_enum_playback(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
6127}
6128extern "C" {
6129    pub fn snd_mixer_selem_is_enum_capture(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
6130}
6131extern "C" {
6132    pub fn snd_mixer_selem_get_enum_items(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
6133}
6134extern "C" {
6135    pub fn snd_mixer_selem_get_enum_item_name(
6136        elem: *mut snd_mixer_elem_t,
6137        idx: ::std::os::raw::c_uint,
6138        maxlen: usize,
6139        str_: *mut ::std::os::raw::c_char,
6140    ) -> ::std::os::raw::c_int;
6141}
6142extern "C" {
6143    pub fn snd_mixer_selem_get_enum_item(
6144        elem: *mut snd_mixer_elem_t,
6145        channel: snd_mixer_selem_channel_id_t,
6146        idxp: *mut ::std::os::raw::c_uint,
6147    ) -> ::std::os::raw::c_int;
6148}
6149extern "C" {
6150    pub fn snd_mixer_selem_set_enum_item(
6151        elem: *mut snd_mixer_elem_t,
6152        channel: snd_mixer_selem_channel_id_t,
6153        idx: ::std::os::raw::c_uint,
6154    ) -> ::std::os::raw::c_int;
6155}
6156extern "C" {
6157    pub fn snd_mixer_selem_id_sizeof() -> usize;
6158}
6159extern "C" {
6160    pub fn snd_mixer_selem_id_malloc(ptr: *mut *mut snd_mixer_selem_id_t) -> ::std::os::raw::c_int;
6161}
6162extern "C" {
6163    pub fn snd_mixer_selem_id_free(obj: *mut snd_mixer_selem_id_t);
6164}
6165extern "C" {
6166    pub fn snd_mixer_selem_id_copy(
6167        dst: *mut snd_mixer_selem_id_t,
6168        src: *const snd_mixer_selem_id_t,
6169    );
6170}
6171extern "C" {
6172    pub fn snd_mixer_selem_id_get_name(
6173        obj: *const snd_mixer_selem_id_t,
6174    ) -> *const ::std::os::raw::c_char;
6175}
6176extern "C" {
6177    pub fn snd_mixer_selem_id_get_index(obj: *const snd_mixer_selem_id_t)
6178        -> ::std::os::raw::c_uint;
6179}
6180extern "C" {
6181    pub fn snd_mixer_selem_id_set_name(
6182        obj: *mut snd_mixer_selem_id_t,
6183        val: *const ::std::os::raw::c_char,
6184    );
6185}
6186extern "C" {
6187    pub fn snd_mixer_selem_id_set_index(
6188        obj: *mut snd_mixer_selem_id_t,
6189        val: ::std::os::raw::c_uint,
6190    );
6191}
6192extern "C" {
6193    pub fn snd_mixer_selem_id_parse(
6194        dst: *mut snd_mixer_selem_id_t,
6195        str_: *const ::std::os::raw::c_char,
6196    ) -> ::std::os::raw::c_int;
6197}
6198pub type snd_seq_event_type_t = ::std::os::raw::c_uchar;
6199pub const SND_SEQ_EVENT_SYSTEM: snd_seq_event_type = 0;
6200pub const SND_SEQ_EVENT_RESULT: snd_seq_event_type = 1;
6201pub const SND_SEQ_EVENT_NOTE: snd_seq_event_type = 5;
6202pub const SND_SEQ_EVENT_NOTEON: snd_seq_event_type = 6;
6203pub const SND_SEQ_EVENT_NOTEOFF: snd_seq_event_type = 7;
6204pub const SND_SEQ_EVENT_KEYPRESS: snd_seq_event_type = 8;
6205pub const SND_SEQ_EVENT_CONTROLLER: snd_seq_event_type = 10;
6206pub const SND_SEQ_EVENT_PGMCHANGE: snd_seq_event_type = 11;
6207pub const SND_SEQ_EVENT_CHANPRESS: snd_seq_event_type = 12;
6208pub const SND_SEQ_EVENT_PITCHBEND: snd_seq_event_type = 13;
6209pub const SND_SEQ_EVENT_CONTROL14: snd_seq_event_type = 14;
6210pub const SND_SEQ_EVENT_NONREGPARAM: snd_seq_event_type = 15;
6211pub const SND_SEQ_EVENT_REGPARAM: snd_seq_event_type = 16;
6212pub const SND_SEQ_EVENT_SONGPOS: snd_seq_event_type = 20;
6213pub const SND_SEQ_EVENT_SONGSEL: snd_seq_event_type = 21;
6214pub const SND_SEQ_EVENT_QFRAME: snd_seq_event_type = 22;
6215pub const SND_SEQ_EVENT_TIMESIGN: snd_seq_event_type = 23;
6216pub const SND_SEQ_EVENT_KEYSIGN: snd_seq_event_type = 24;
6217pub const SND_SEQ_EVENT_START: snd_seq_event_type = 30;
6218pub const SND_SEQ_EVENT_CONTINUE: snd_seq_event_type = 31;
6219pub const SND_SEQ_EVENT_STOP: snd_seq_event_type = 32;
6220pub const SND_SEQ_EVENT_SETPOS_TICK: snd_seq_event_type = 33;
6221pub const SND_SEQ_EVENT_SETPOS_TIME: snd_seq_event_type = 34;
6222pub const SND_SEQ_EVENT_TEMPO: snd_seq_event_type = 35;
6223pub const SND_SEQ_EVENT_CLOCK: snd_seq_event_type = 36;
6224pub const SND_SEQ_EVENT_TICK: snd_seq_event_type = 37;
6225pub const SND_SEQ_EVENT_QUEUE_SKEW: snd_seq_event_type = 38;
6226pub const SND_SEQ_EVENT_SYNC_POS: snd_seq_event_type = 39;
6227pub const SND_SEQ_EVENT_TUNE_REQUEST: snd_seq_event_type = 40;
6228pub const SND_SEQ_EVENT_RESET: snd_seq_event_type = 41;
6229pub const SND_SEQ_EVENT_SENSING: snd_seq_event_type = 42;
6230pub const SND_SEQ_EVENT_ECHO: snd_seq_event_type = 50;
6231pub const SND_SEQ_EVENT_OSS: snd_seq_event_type = 51;
6232pub const SND_SEQ_EVENT_CLIENT_START: snd_seq_event_type = 60;
6233pub const SND_SEQ_EVENT_CLIENT_EXIT: snd_seq_event_type = 61;
6234pub const SND_SEQ_EVENT_CLIENT_CHANGE: snd_seq_event_type = 62;
6235pub const SND_SEQ_EVENT_PORT_START: snd_seq_event_type = 63;
6236pub const SND_SEQ_EVENT_PORT_EXIT: snd_seq_event_type = 64;
6237pub const SND_SEQ_EVENT_PORT_CHANGE: snd_seq_event_type = 65;
6238pub const SND_SEQ_EVENT_PORT_SUBSCRIBED: snd_seq_event_type = 66;
6239pub const SND_SEQ_EVENT_PORT_UNSUBSCRIBED: snd_seq_event_type = 67;
6240pub const SND_SEQ_EVENT_USR0: snd_seq_event_type = 90;
6241pub const SND_SEQ_EVENT_USR1: snd_seq_event_type = 91;
6242pub const SND_SEQ_EVENT_USR2: snd_seq_event_type = 92;
6243pub const SND_SEQ_EVENT_USR3: snd_seq_event_type = 93;
6244pub const SND_SEQ_EVENT_USR4: snd_seq_event_type = 94;
6245pub const SND_SEQ_EVENT_USR5: snd_seq_event_type = 95;
6246pub const SND_SEQ_EVENT_USR6: snd_seq_event_type = 96;
6247pub const SND_SEQ_EVENT_USR7: snd_seq_event_type = 97;
6248pub const SND_SEQ_EVENT_USR8: snd_seq_event_type = 98;
6249pub const SND_SEQ_EVENT_USR9: snd_seq_event_type = 99;
6250pub const SND_SEQ_EVENT_SYSEX: snd_seq_event_type = 130;
6251pub const SND_SEQ_EVENT_BOUNCE: snd_seq_event_type = 131;
6252pub const SND_SEQ_EVENT_USR_VAR0: snd_seq_event_type = 135;
6253pub const SND_SEQ_EVENT_USR_VAR1: snd_seq_event_type = 136;
6254pub const SND_SEQ_EVENT_USR_VAR2: snd_seq_event_type = 137;
6255pub const SND_SEQ_EVENT_USR_VAR3: snd_seq_event_type = 138;
6256pub const SND_SEQ_EVENT_USR_VAR4: snd_seq_event_type = 139;
6257pub const SND_SEQ_EVENT_NONE: snd_seq_event_type = 255;
6258pub type snd_seq_event_type = ::std::os::raw::c_uint;
6259#[repr(C)]
6260#[derive(Debug, Copy, Clone)]
6261pub struct snd_seq_addr {
6262    pub client: ::std::os::raw::c_uchar,
6263    pub port: ::std::os::raw::c_uchar,
6264}
6265pub type snd_seq_addr_t = snd_seq_addr;
6266#[repr(C)]
6267#[derive(Debug, Copy, Clone)]
6268pub struct snd_seq_connect {
6269    pub sender: snd_seq_addr_t,
6270    pub dest: snd_seq_addr_t,
6271}
6272pub type snd_seq_connect_t = snd_seq_connect;
6273#[repr(C)]
6274#[derive(Debug, Copy, Clone)]
6275pub struct snd_seq_real_time {
6276    pub tv_sec: ::std::os::raw::c_uint,
6277    pub tv_nsec: ::std::os::raw::c_uint,
6278}
6279pub type snd_seq_real_time_t = snd_seq_real_time;
6280pub type snd_seq_tick_time_t = ::std::os::raw::c_uint;
6281#[repr(C)]
6282#[derive(Copy, Clone)]
6283pub union snd_seq_timestamp {
6284    pub tick: snd_seq_tick_time_t,
6285    pub time: snd_seq_real_time,
6286}
6287pub type snd_seq_timestamp_t = snd_seq_timestamp;
6288#[repr(C)]
6289#[derive(Debug, Copy, Clone)]
6290pub struct snd_seq_ev_note {
6291    pub channel: ::std::os::raw::c_uchar,
6292    pub note: ::std::os::raw::c_uchar,
6293    pub velocity: ::std::os::raw::c_uchar,
6294    pub off_velocity: ::std::os::raw::c_uchar,
6295    pub duration: ::std::os::raw::c_uint,
6296}
6297pub type snd_seq_ev_note_t = snd_seq_ev_note;
6298#[repr(C)]
6299#[derive(Debug, Copy, Clone)]
6300pub struct snd_seq_ev_ctrl {
6301    pub channel: ::std::os::raw::c_uchar,
6302    pub unused: [::std::os::raw::c_uchar; 3usize],
6303    pub param: ::std::os::raw::c_uint,
6304    pub value: ::std::os::raw::c_int,
6305}
6306pub type snd_seq_ev_ctrl_t = snd_seq_ev_ctrl;
6307#[repr(C)]
6308#[derive(Debug, Copy, Clone)]
6309pub struct snd_seq_ev_raw8 {
6310    pub d: [::std::os::raw::c_uchar; 12usize],
6311}
6312pub type snd_seq_ev_raw8_t = snd_seq_ev_raw8;
6313#[repr(C)]
6314#[derive(Debug, Copy, Clone)]
6315pub struct snd_seq_ev_raw32 {
6316    pub d: [::std::os::raw::c_uint; 3usize],
6317}
6318pub type snd_seq_ev_raw32_t = snd_seq_ev_raw32;
6319#[repr(C, packed)]
6320#[derive(Debug, Copy, Clone)]
6321pub struct snd_seq_ev_ext {
6322    pub len: ::std::os::raw::c_uint,
6323    pub ptr: *mut ::std::os::raw::c_void,
6324}
6325pub type snd_seq_ev_ext_t = snd_seq_ev_ext;
6326#[repr(C)]
6327#[derive(Debug, Copy, Clone)]
6328pub struct snd_seq_result {
6329    pub event: ::std::os::raw::c_int,
6330    pub result: ::std::os::raw::c_int,
6331}
6332pub type snd_seq_result_t = snd_seq_result;
6333#[repr(C)]
6334#[derive(Debug, Copy, Clone)]
6335pub struct snd_seq_queue_skew {
6336    pub value: ::std::os::raw::c_uint,
6337    pub base: ::std::os::raw::c_uint,
6338}
6339pub type snd_seq_queue_skew_t = snd_seq_queue_skew;
6340#[repr(C)]
6341#[derive(Copy, Clone)]
6342pub struct snd_seq_ev_queue_control {
6343    pub queue: ::std::os::raw::c_uchar,
6344    pub unused: [::std::os::raw::c_uchar; 3usize],
6345    pub param: snd_seq_ev_queue_control__bindgen_ty_1,
6346}
6347#[repr(C)]
6348#[derive(Copy, Clone)]
6349pub union snd_seq_ev_queue_control__bindgen_ty_1 {
6350    pub value: ::std::os::raw::c_int,
6351    pub time: snd_seq_timestamp_t,
6352    pub position: ::std::os::raw::c_uint,
6353    pub skew: snd_seq_queue_skew_t,
6354    pub d32: [::std::os::raw::c_uint; 2usize],
6355    pub d8: [::std::os::raw::c_uchar; 8usize],
6356}
6357pub type snd_seq_ev_queue_control_t = snd_seq_ev_queue_control;
6358#[repr(C)]
6359#[derive(Copy, Clone)]
6360pub struct snd_seq_event {
6361    pub type_: snd_seq_event_type_t,
6362    pub flags: ::std::os::raw::c_uchar,
6363    pub tag: ::std::os::raw::c_uchar,
6364    pub queue: ::std::os::raw::c_uchar,
6365    pub time: snd_seq_timestamp_t,
6366    pub source: snd_seq_addr_t,
6367    pub dest: snd_seq_addr_t,
6368    pub data: snd_seq_event__bindgen_ty_1,
6369}
6370#[repr(C)]
6371#[derive(Copy, Clone)]
6372pub union snd_seq_event__bindgen_ty_1 {
6373    pub note: snd_seq_ev_note_t,
6374    pub control: snd_seq_ev_ctrl_t,
6375    pub raw8: snd_seq_ev_raw8_t,
6376    pub raw32: snd_seq_ev_raw32_t,
6377    pub ext: snd_seq_ev_ext_t,
6378    pub queue: snd_seq_ev_queue_control_t,
6379    pub time: snd_seq_timestamp_t,
6380    pub addr: snd_seq_addr_t,
6381    pub connect: snd_seq_connect_t,
6382    pub result: snd_seq_result_t,
6383}
6384pub type snd_seq_event_t = snd_seq_event;
6385#[repr(C)]
6386#[derive(Debug, Copy, Clone)]
6387pub struct _snd_seq {
6388    _unused: [u8; 0],
6389}
6390pub type snd_seq_t = _snd_seq;
6391pub const SND_SEQ_TYPE_HW: _snd_seq_type = 0;
6392pub const SND_SEQ_TYPE_SHM: _snd_seq_type = 1;
6393pub const SND_SEQ_TYPE_INET: _snd_seq_type = 2;
6394pub type _snd_seq_type = ::std::os::raw::c_uint;
6395pub use self::_snd_seq_type as snd_seq_type_t;
6396extern "C" {
6397    pub fn snd_seq_open(
6398        handle: *mut *mut snd_seq_t,
6399        name: *const ::std::os::raw::c_char,
6400        streams: ::std::os::raw::c_int,
6401        mode: ::std::os::raw::c_int,
6402    ) -> ::std::os::raw::c_int;
6403}
6404extern "C" {
6405    pub fn snd_seq_open_lconf(
6406        handle: *mut *mut snd_seq_t,
6407        name: *const ::std::os::raw::c_char,
6408        streams: ::std::os::raw::c_int,
6409        mode: ::std::os::raw::c_int,
6410        lconf: *mut snd_config_t,
6411    ) -> ::std::os::raw::c_int;
6412}
6413extern "C" {
6414    pub fn snd_seq_name(seq: *mut snd_seq_t) -> *const ::std::os::raw::c_char;
6415}
6416extern "C" {
6417    pub fn snd_seq_type(seq: *mut snd_seq_t) -> snd_seq_type_t;
6418}
6419extern "C" {
6420    pub fn snd_seq_close(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
6421}
6422extern "C" {
6423    pub fn snd_seq_poll_descriptors_count(
6424        handle: *mut snd_seq_t,
6425        events: ::std::os::raw::c_short,
6426    ) -> ::std::os::raw::c_int;
6427}
6428extern "C" {
6429    pub fn snd_seq_poll_descriptors(
6430        handle: *mut snd_seq_t,
6431        pfds: *mut pollfd,
6432        space: ::std::os::raw::c_uint,
6433        events: ::std::os::raw::c_short,
6434    ) -> ::std::os::raw::c_int;
6435}
6436extern "C" {
6437    pub fn snd_seq_poll_descriptors_revents(
6438        seq: *mut snd_seq_t,
6439        pfds: *mut pollfd,
6440        nfds: ::std::os::raw::c_uint,
6441        revents: *mut ::std::os::raw::c_ushort,
6442    ) -> ::std::os::raw::c_int;
6443}
6444extern "C" {
6445    pub fn snd_seq_nonblock(
6446        handle: *mut snd_seq_t,
6447        nonblock: ::std::os::raw::c_int,
6448    ) -> ::std::os::raw::c_int;
6449}
6450extern "C" {
6451    pub fn snd_seq_client_id(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
6452}
6453extern "C" {
6454    pub fn snd_seq_get_output_buffer_size(handle: *mut snd_seq_t) -> usize;
6455}
6456extern "C" {
6457    pub fn snd_seq_get_input_buffer_size(handle: *mut snd_seq_t) -> usize;
6458}
6459extern "C" {
6460    pub fn snd_seq_set_output_buffer_size(
6461        handle: *mut snd_seq_t,
6462        size: usize,
6463    ) -> ::std::os::raw::c_int;
6464}
6465extern "C" {
6466    pub fn snd_seq_set_input_buffer_size(
6467        handle: *mut snd_seq_t,
6468        size: usize,
6469    ) -> ::std::os::raw::c_int;
6470}
6471#[repr(C)]
6472#[derive(Debug, Copy, Clone)]
6473pub struct _snd_seq_system_info {
6474    _unused: [u8; 0],
6475}
6476pub type snd_seq_system_info_t = _snd_seq_system_info;
6477extern "C" {
6478    pub fn snd_seq_system_info_sizeof() -> usize;
6479}
6480extern "C" {
6481    pub fn snd_seq_system_info_malloc(
6482        ptr: *mut *mut snd_seq_system_info_t,
6483    ) -> ::std::os::raw::c_int;
6484}
6485extern "C" {
6486    pub fn snd_seq_system_info_free(ptr: *mut snd_seq_system_info_t);
6487}
6488extern "C" {
6489    pub fn snd_seq_system_info_copy(
6490        dst: *mut snd_seq_system_info_t,
6491        src: *const snd_seq_system_info_t,
6492    );
6493}
6494extern "C" {
6495    pub fn snd_seq_system_info_get_queues(
6496        info: *const snd_seq_system_info_t,
6497    ) -> ::std::os::raw::c_int;
6498}
6499extern "C" {
6500    pub fn snd_seq_system_info_get_clients(
6501        info: *const snd_seq_system_info_t,
6502    ) -> ::std::os::raw::c_int;
6503}
6504extern "C" {
6505    pub fn snd_seq_system_info_get_ports(
6506        info: *const snd_seq_system_info_t,
6507    ) -> ::std::os::raw::c_int;
6508}
6509extern "C" {
6510    pub fn snd_seq_system_info_get_channels(
6511        info: *const snd_seq_system_info_t,
6512    ) -> ::std::os::raw::c_int;
6513}
6514extern "C" {
6515    pub fn snd_seq_system_info_get_cur_clients(
6516        info: *const snd_seq_system_info_t,
6517    ) -> ::std::os::raw::c_int;
6518}
6519extern "C" {
6520    pub fn snd_seq_system_info_get_cur_queues(
6521        info: *const snd_seq_system_info_t,
6522    ) -> ::std::os::raw::c_int;
6523}
6524extern "C" {
6525    pub fn snd_seq_system_info(
6526        handle: *mut snd_seq_t,
6527        info: *mut snd_seq_system_info_t,
6528    ) -> ::std::os::raw::c_int;
6529}
6530#[repr(C)]
6531#[derive(Debug, Copy, Clone)]
6532pub struct _snd_seq_client_info {
6533    _unused: [u8; 0],
6534}
6535pub type snd_seq_client_info_t = _snd_seq_client_info;
6536pub const SND_SEQ_USER_CLIENT: snd_seq_client_type = 1;
6537pub const SND_SEQ_KERNEL_CLIENT: snd_seq_client_type = 2;
6538pub type snd_seq_client_type = ::std::os::raw::c_uint;
6539pub use self::snd_seq_client_type as snd_seq_client_type_t;
6540extern "C" {
6541    pub fn snd_seq_client_info_sizeof() -> usize;
6542}
6543extern "C" {
6544    pub fn snd_seq_client_info_malloc(
6545        ptr: *mut *mut snd_seq_client_info_t,
6546    ) -> ::std::os::raw::c_int;
6547}
6548extern "C" {
6549    pub fn snd_seq_client_info_free(ptr: *mut snd_seq_client_info_t);
6550}
6551extern "C" {
6552    pub fn snd_seq_client_info_copy(
6553        dst: *mut snd_seq_client_info_t,
6554        src: *const snd_seq_client_info_t,
6555    );
6556}
6557extern "C" {
6558    pub fn snd_seq_client_info_get_client(
6559        info: *const snd_seq_client_info_t,
6560    ) -> ::std::os::raw::c_int;
6561}
6562extern "C" {
6563    pub fn snd_seq_client_info_get_type(
6564        info: *const snd_seq_client_info_t,
6565    ) -> snd_seq_client_type_t;
6566}
6567extern "C" {
6568    pub fn snd_seq_client_info_get_name(
6569        info: *mut snd_seq_client_info_t,
6570    ) -> *const ::std::os::raw::c_char;
6571}
6572extern "C" {
6573    pub fn snd_seq_client_info_get_broadcast_filter(
6574        info: *const snd_seq_client_info_t,
6575    ) -> ::std::os::raw::c_int;
6576}
6577extern "C" {
6578    pub fn snd_seq_client_info_get_error_bounce(
6579        info: *const snd_seq_client_info_t,
6580    ) -> ::std::os::raw::c_int;
6581}
6582extern "C" {
6583    pub fn snd_seq_client_info_get_card(
6584        info: *const snd_seq_client_info_t,
6585    ) -> ::std::os::raw::c_int;
6586}
6587extern "C" {
6588    pub fn snd_seq_client_info_get_pid(info: *const snd_seq_client_info_t)
6589        -> ::std::os::raw::c_int;
6590}
6591extern "C" {
6592    pub fn snd_seq_client_info_get_event_filter(
6593        info: *const snd_seq_client_info_t,
6594    ) -> *const ::std::os::raw::c_uchar;
6595}
6596extern "C" {
6597    pub fn snd_seq_client_info_get_num_ports(
6598        info: *const snd_seq_client_info_t,
6599    ) -> ::std::os::raw::c_int;
6600}
6601extern "C" {
6602    pub fn snd_seq_client_info_get_event_lost(
6603        info: *const snd_seq_client_info_t,
6604    ) -> ::std::os::raw::c_int;
6605}
6606extern "C" {
6607    pub fn snd_seq_client_info_set_client(
6608        info: *mut snd_seq_client_info_t,
6609        client: ::std::os::raw::c_int,
6610    );
6611}
6612extern "C" {
6613    pub fn snd_seq_client_info_set_name(
6614        info: *mut snd_seq_client_info_t,
6615        name: *const ::std::os::raw::c_char,
6616    );
6617}
6618extern "C" {
6619    pub fn snd_seq_client_info_set_broadcast_filter(
6620        info: *mut snd_seq_client_info_t,
6621        val: ::std::os::raw::c_int,
6622    );
6623}
6624extern "C" {
6625    pub fn snd_seq_client_info_set_error_bounce(
6626        info: *mut snd_seq_client_info_t,
6627        val: ::std::os::raw::c_int,
6628    );
6629}
6630extern "C" {
6631    pub fn snd_seq_client_info_set_event_filter(
6632        info: *mut snd_seq_client_info_t,
6633        filter: *mut ::std::os::raw::c_uchar,
6634    );
6635}
6636extern "C" {
6637    pub fn snd_seq_client_info_event_filter_clear(info: *mut snd_seq_client_info_t);
6638}
6639extern "C" {
6640    pub fn snd_seq_client_info_event_filter_add(
6641        info: *mut snd_seq_client_info_t,
6642        event_type: ::std::os::raw::c_int,
6643    );
6644}
6645extern "C" {
6646    pub fn snd_seq_client_info_event_filter_del(
6647        info: *mut snd_seq_client_info_t,
6648        event_type: ::std::os::raw::c_int,
6649    );
6650}
6651extern "C" {
6652    pub fn snd_seq_client_info_event_filter_check(
6653        info: *mut snd_seq_client_info_t,
6654        event_type: ::std::os::raw::c_int,
6655    ) -> ::std::os::raw::c_int;
6656}
6657extern "C" {
6658    pub fn snd_seq_get_client_info(
6659        handle: *mut snd_seq_t,
6660        info: *mut snd_seq_client_info_t,
6661    ) -> ::std::os::raw::c_int;
6662}
6663extern "C" {
6664    pub fn snd_seq_get_any_client_info(
6665        handle: *mut snd_seq_t,
6666        client: ::std::os::raw::c_int,
6667        info: *mut snd_seq_client_info_t,
6668    ) -> ::std::os::raw::c_int;
6669}
6670extern "C" {
6671    pub fn snd_seq_set_client_info(
6672        handle: *mut snd_seq_t,
6673        info: *mut snd_seq_client_info_t,
6674    ) -> ::std::os::raw::c_int;
6675}
6676extern "C" {
6677    pub fn snd_seq_query_next_client(
6678        handle: *mut snd_seq_t,
6679        info: *mut snd_seq_client_info_t,
6680    ) -> ::std::os::raw::c_int;
6681}
6682#[repr(C)]
6683#[derive(Debug, Copy, Clone)]
6684pub struct _snd_seq_client_pool {
6685    _unused: [u8; 0],
6686}
6687pub type snd_seq_client_pool_t = _snd_seq_client_pool;
6688extern "C" {
6689    pub fn snd_seq_client_pool_sizeof() -> usize;
6690}
6691extern "C" {
6692    pub fn snd_seq_client_pool_malloc(
6693        ptr: *mut *mut snd_seq_client_pool_t,
6694    ) -> ::std::os::raw::c_int;
6695}
6696extern "C" {
6697    pub fn snd_seq_client_pool_free(ptr: *mut snd_seq_client_pool_t);
6698}
6699extern "C" {
6700    pub fn snd_seq_client_pool_copy(
6701        dst: *mut snd_seq_client_pool_t,
6702        src: *const snd_seq_client_pool_t,
6703    );
6704}
6705extern "C" {
6706    pub fn snd_seq_client_pool_get_client(
6707        info: *const snd_seq_client_pool_t,
6708    ) -> ::std::os::raw::c_int;
6709}
6710extern "C" {
6711    pub fn snd_seq_client_pool_get_output_pool(info: *const snd_seq_client_pool_t) -> usize;
6712}
6713extern "C" {
6714    pub fn snd_seq_client_pool_get_input_pool(info: *const snd_seq_client_pool_t) -> usize;
6715}
6716extern "C" {
6717    pub fn snd_seq_client_pool_get_output_room(info: *const snd_seq_client_pool_t) -> usize;
6718}
6719extern "C" {
6720    pub fn snd_seq_client_pool_get_output_free(info: *const snd_seq_client_pool_t) -> usize;
6721}
6722extern "C" {
6723    pub fn snd_seq_client_pool_get_input_free(info: *const snd_seq_client_pool_t) -> usize;
6724}
6725extern "C" {
6726    pub fn snd_seq_client_pool_set_output_pool(info: *mut snd_seq_client_pool_t, size: usize);
6727}
6728extern "C" {
6729    pub fn snd_seq_client_pool_set_input_pool(info: *mut snd_seq_client_pool_t, size: usize);
6730}
6731extern "C" {
6732    pub fn snd_seq_client_pool_set_output_room(info: *mut snd_seq_client_pool_t, size: usize);
6733}
6734extern "C" {
6735    pub fn snd_seq_get_client_pool(
6736        handle: *mut snd_seq_t,
6737        info: *mut snd_seq_client_pool_t,
6738    ) -> ::std::os::raw::c_int;
6739}
6740extern "C" {
6741    pub fn snd_seq_set_client_pool(
6742        handle: *mut snd_seq_t,
6743        info: *mut snd_seq_client_pool_t,
6744    ) -> ::std::os::raw::c_int;
6745}
6746#[repr(C)]
6747#[derive(Debug, Copy, Clone)]
6748pub struct _snd_seq_port_info {
6749    _unused: [u8; 0],
6750}
6751pub type snd_seq_port_info_t = _snd_seq_port_info;
6752extern "C" {
6753    pub fn snd_seq_port_info_sizeof() -> usize;
6754}
6755extern "C" {
6756    pub fn snd_seq_port_info_malloc(ptr: *mut *mut snd_seq_port_info_t) -> ::std::os::raw::c_int;
6757}
6758extern "C" {
6759    pub fn snd_seq_port_info_free(ptr: *mut snd_seq_port_info_t);
6760}
6761extern "C" {
6762    pub fn snd_seq_port_info_copy(dst: *mut snd_seq_port_info_t, src: *const snd_seq_port_info_t);
6763}
6764extern "C" {
6765    pub fn snd_seq_port_info_get_client(info: *const snd_seq_port_info_t) -> ::std::os::raw::c_int;
6766}
6767extern "C" {
6768    pub fn snd_seq_port_info_get_port(info: *const snd_seq_port_info_t) -> ::std::os::raw::c_int;
6769}
6770extern "C" {
6771    pub fn snd_seq_port_info_get_addr(info: *const snd_seq_port_info_t) -> *const snd_seq_addr_t;
6772}
6773extern "C" {
6774    pub fn snd_seq_port_info_get_name(
6775        info: *const snd_seq_port_info_t,
6776    ) -> *const ::std::os::raw::c_char;
6777}
6778extern "C" {
6779    pub fn snd_seq_port_info_get_capability(
6780        info: *const snd_seq_port_info_t,
6781    ) -> ::std::os::raw::c_uint;
6782}
6783extern "C" {
6784    pub fn snd_seq_port_info_get_type(info: *const snd_seq_port_info_t) -> ::std::os::raw::c_uint;
6785}
6786extern "C" {
6787    pub fn snd_seq_port_info_get_midi_channels(
6788        info: *const snd_seq_port_info_t,
6789    ) -> ::std::os::raw::c_int;
6790}
6791extern "C" {
6792    pub fn snd_seq_port_info_get_midi_voices(
6793        info: *const snd_seq_port_info_t,
6794    ) -> ::std::os::raw::c_int;
6795}
6796extern "C" {
6797    pub fn snd_seq_port_info_get_synth_voices(
6798        info: *const snd_seq_port_info_t,
6799    ) -> ::std::os::raw::c_int;
6800}
6801extern "C" {
6802    pub fn snd_seq_port_info_get_read_use(
6803        info: *const snd_seq_port_info_t,
6804    ) -> ::std::os::raw::c_int;
6805}
6806extern "C" {
6807    pub fn snd_seq_port_info_get_write_use(
6808        info: *const snd_seq_port_info_t,
6809    ) -> ::std::os::raw::c_int;
6810}
6811extern "C" {
6812    pub fn snd_seq_port_info_get_port_specified(
6813        info: *const snd_seq_port_info_t,
6814    ) -> ::std::os::raw::c_int;
6815}
6816extern "C" {
6817    pub fn snd_seq_port_info_get_timestamping(
6818        info: *const snd_seq_port_info_t,
6819    ) -> ::std::os::raw::c_int;
6820}
6821extern "C" {
6822    pub fn snd_seq_port_info_get_timestamp_real(
6823        info: *const snd_seq_port_info_t,
6824    ) -> ::std::os::raw::c_int;
6825}
6826extern "C" {
6827    pub fn snd_seq_port_info_get_timestamp_queue(
6828        info: *const snd_seq_port_info_t,
6829    ) -> ::std::os::raw::c_int;
6830}
6831extern "C" {
6832    pub fn snd_seq_port_info_set_client(
6833        info: *mut snd_seq_port_info_t,
6834        client: ::std::os::raw::c_int,
6835    );
6836}
6837extern "C" {
6838    pub fn snd_seq_port_info_set_port(info: *mut snd_seq_port_info_t, port: ::std::os::raw::c_int);
6839}
6840extern "C" {
6841    pub fn snd_seq_port_info_set_addr(info: *mut snd_seq_port_info_t, addr: *const snd_seq_addr_t);
6842}
6843extern "C" {
6844    pub fn snd_seq_port_info_set_name(
6845        info: *mut snd_seq_port_info_t,
6846        name: *const ::std::os::raw::c_char,
6847    );
6848}
6849extern "C" {
6850    pub fn snd_seq_port_info_set_capability(
6851        info: *mut snd_seq_port_info_t,
6852        capability: ::std::os::raw::c_uint,
6853    );
6854}
6855extern "C" {
6856    pub fn snd_seq_port_info_set_type(
6857        info: *mut snd_seq_port_info_t,
6858        type_: ::std::os::raw::c_uint,
6859    );
6860}
6861extern "C" {
6862    pub fn snd_seq_port_info_set_midi_channels(
6863        info: *mut snd_seq_port_info_t,
6864        channels: ::std::os::raw::c_int,
6865    );
6866}
6867extern "C" {
6868    pub fn snd_seq_port_info_set_midi_voices(
6869        info: *mut snd_seq_port_info_t,
6870        voices: ::std::os::raw::c_int,
6871    );
6872}
6873extern "C" {
6874    pub fn snd_seq_port_info_set_synth_voices(
6875        info: *mut snd_seq_port_info_t,
6876        voices: ::std::os::raw::c_int,
6877    );
6878}
6879extern "C" {
6880    pub fn snd_seq_port_info_set_port_specified(
6881        info: *mut snd_seq_port_info_t,
6882        val: ::std::os::raw::c_int,
6883    );
6884}
6885extern "C" {
6886    pub fn snd_seq_port_info_set_timestamping(
6887        info: *mut snd_seq_port_info_t,
6888        enable: ::std::os::raw::c_int,
6889    );
6890}
6891extern "C" {
6892    pub fn snd_seq_port_info_set_timestamp_real(
6893        info: *mut snd_seq_port_info_t,
6894        realtime: ::std::os::raw::c_int,
6895    );
6896}
6897extern "C" {
6898    pub fn snd_seq_port_info_set_timestamp_queue(
6899        info: *mut snd_seq_port_info_t,
6900        queue: ::std::os::raw::c_int,
6901    );
6902}
6903extern "C" {
6904    pub fn snd_seq_create_port(
6905        handle: *mut snd_seq_t,
6906        info: *mut snd_seq_port_info_t,
6907    ) -> ::std::os::raw::c_int;
6908}
6909extern "C" {
6910    pub fn snd_seq_delete_port(
6911        handle: *mut snd_seq_t,
6912        port: ::std::os::raw::c_int,
6913    ) -> ::std::os::raw::c_int;
6914}
6915extern "C" {
6916    pub fn snd_seq_get_port_info(
6917        handle: *mut snd_seq_t,
6918        port: ::std::os::raw::c_int,
6919        info: *mut snd_seq_port_info_t,
6920    ) -> ::std::os::raw::c_int;
6921}
6922extern "C" {
6923    pub fn snd_seq_get_any_port_info(
6924        handle: *mut snd_seq_t,
6925        client: ::std::os::raw::c_int,
6926        port: ::std::os::raw::c_int,
6927        info: *mut snd_seq_port_info_t,
6928    ) -> ::std::os::raw::c_int;
6929}
6930extern "C" {
6931    pub fn snd_seq_set_port_info(
6932        handle: *mut snd_seq_t,
6933        port: ::std::os::raw::c_int,
6934        info: *mut snd_seq_port_info_t,
6935    ) -> ::std::os::raw::c_int;
6936}
6937extern "C" {
6938    pub fn snd_seq_query_next_port(
6939        handle: *mut snd_seq_t,
6940        info: *mut snd_seq_port_info_t,
6941    ) -> ::std::os::raw::c_int;
6942}
6943#[repr(C)]
6944#[derive(Debug, Copy, Clone)]
6945pub struct _snd_seq_port_subscribe {
6946    _unused: [u8; 0],
6947}
6948pub type snd_seq_port_subscribe_t = _snd_seq_port_subscribe;
6949extern "C" {
6950    pub fn snd_seq_port_subscribe_sizeof() -> usize;
6951}
6952extern "C" {
6953    pub fn snd_seq_port_subscribe_malloc(
6954        ptr: *mut *mut snd_seq_port_subscribe_t,
6955    ) -> ::std::os::raw::c_int;
6956}
6957extern "C" {
6958    pub fn snd_seq_port_subscribe_free(ptr: *mut snd_seq_port_subscribe_t);
6959}
6960extern "C" {
6961    pub fn snd_seq_port_subscribe_copy(
6962        dst: *mut snd_seq_port_subscribe_t,
6963        src: *const snd_seq_port_subscribe_t,
6964    );
6965}
6966extern "C" {
6967    pub fn snd_seq_port_subscribe_get_sender(
6968        info: *const snd_seq_port_subscribe_t,
6969    ) -> *const snd_seq_addr_t;
6970}
6971extern "C" {
6972    pub fn snd_seq_port_subscribe_get_dest(
6973        info: *const snd_seq_port_subscribe_t,
6974    ) -> *const snd_seq_addr_t;
6975}
6976extern "C" {
6977    pub fn snd_seq_port_subscribe_get_queue(
6978        info: *const snd_seq_port_subscribe_t,
6979    ) -> ::std::os::raw::c_int;
6980}
6981extern "C" {
6982    pub fn snd_seq_port_subscribe_get_exclusive(
6983        info: *const snd_seq_port_subscribe_t,
6984    ) -> ::std::os::raw::c_int;
6985}
6986extern "C" {
6987    pub fn snd_seq_port_subscribe_get_time_update(
6988        info: *const snd_seq_port_subscribe_t,
6989    ) -> ::std::os::raw::c_int;
6990}
6991extern "C" {
6992    pub fn snd_seq_port_subscribe_get_time_real(
6993        info: *const snd_seq_port_subscribe_t,
6994    ) -> ::std::os::raw::c_int;
6995}
6996extern "C" {
6997    pub fn snd_seq_port_subscribe_set_sender(
6998        info: *mut snd_seq_port_subscribe_t,
6999        addr: *const snd_seq_addr_t,
7000    );
7001}
7002extern "C" {
7003    pub fn snd_seq_port_subscribe_set_dest(
7004        info: *mut snd_seq_port_subscribe_t,
7005        addr: *const snd_seq_addr_t,
7006    );
7007}
7008extern "C" {
7009    pub fn snd_seq_port_subscribe_set_queue(
7010        info: *mut snd_seq_port_subscribe_t,
7011        q: ::std::os::raw::c_int,
7012    );
7013}
7014extern "C" {
7015    pub fn snd_seq_port_subscribe_set_exclusive(
7016        info: *mut snd_seq_port_subscribe_t,
7017        val: ::std::os::raw::c_int,
7018    );
7019}
7020extern "C" {
7021    pub fn snd_seq_port_subscribe_set_time_update(
7022        info: *mut snd_seq_port_subscribe_t,
7023        val: ::std::os::raw::c_int,
7024    );
7025}
7026extern "C" {
7027    pub fn snd_seq_port_subscribe_set_time_real(
7028        info: *mut snd_seq_port_subscribe_t,
7029        val: ::std::os::raw::c_int,
7030    );
7031}
7032extern "C" {
7033    pub fn snd_seq_get_port_subscription(
7034        handle: *mut snd_seq_t,
7035        sub: *mut snd_seq_port_subscribe_t,
7036    ) -> ::std::os::raw::c_int;
7037}
7038extern "C" {
7039    pub fn snd_seq_subscribe_port(
7040        handle: *mut snd_seq_t,
7041        sub: *mut snd_seq_port_subscribe_t,
7042    ) -> ::std::os::raw::c_int;
7043}
7044extern "C" {
7045    pub fn snd_seq_unsubscribe_port(
7046        handle: *mut snd_seq_t,
7047        sub: *mut snd_seq_port_subscribe_t,
7048    ) -> ::std::os::raw::c_int;
7049}
7050#[repr(C)]
7051#[derive(Debug, Copy, Clone)]
7052pub struct _snd_seq_query_subscribe {
7053    _unused: [u8; 0],
7054}
7055pub type snd_seq_query_subscribe_t = _snd_seq_query_subscribe;
7056pub const SND_SEQ_QUERY_SUBS_READ: snd_seq_query_subs_type_t = 0;
7057pub const SND_SEQ_QUERY_SUBS_WRITE: snd_seq_query_subs_type_t = 1;
7058pub type snd_seq_query_subs_type_t = ::std::os::raw::c_uint;
7059extern "C" {
7060    pub fn snd_seq_query_subscribe_sizeof() -> usize;
7061}
7062extern "C" {
7063    pub fn snd_seq_query_subscribe_malloc(
7064        ptr: *mut *mut snd_seq_query_subscribe_t,
7065    ) -> ::std::os::raw::c_int;
7066}
7067extern "C" {
7068    pub fn snd_seq_query_subscribe_free(ptr: *mut snd_seq_query_subscribe_t);
7069}
7070extern "C" {
7071    pub fn snd_seq_query_subscribe_copy(
7072        dst: *mut snd_seq_query_subscribe_t,
7073        src: *const snd_seq_query_subscribe_t,
7074    );
7075}
7076extern "C" {
7077    pub fn snd_seq_query_subscribe_get_client(
7078        info: *const snd_seq_query_subscribe_t,
7079    ) -> ::std::os::raw::c_int;
7080}
7081extern "C" {
7082    pub fn snd_seq_query_subscribe_get_port(
7083        info: *const snd_seq_query_subscribe_t,
7084    ) -> ::std::os::raw::c_int;
7085}
7086extern "C" {
7087    pub fn snd_seq_query_subscribe_get_root(
7088        info: *const snd_seq_query_subscribe_t,
7089    ) -> *const snd_seq_addr_t;
7090}
7091extern "C" {
7092    pub fn snd_seq_query_subscribe_get_type(
7093        info: *const snd_seq_query_subscribe_t,
7094    ) -> snd_seq_query_subs_type_t;
7095}
7096extern "C" {
7097    pub fn snd_seq_query_subscribe_get_index(
7098        info: *const snd_seq_query_subscribe_t,
7099    ) -> ::std::os::raw::c_int;
7100}
7101extern "C" {
7102    pub fn snd_seq_query_subscribe_get_num_subs(
7103        info: *const snd_seq_query_subscribe_t,
7104    ) -> ::std::os::raw::c_int;
7105}
7106extern "C" {
7107    pub fn snd_seq_query_subscribe_get_addr(
7108        info: *const snd_seq_query_subscribe_t,
7109    ) -> *const snd_seq_addr_t;
7110}
7111extern "C" {
7112    pub fn snd_seq_query_subscribe_get_queue(
7113        info: *const snd_seq_query_subscribe_t,
7114    ) -> ::std::os::raw::c_int;
7115}
7116extern "C" {
7117    pub fn snd_seq_query_subscribe_get_exclusive(
7118        info: *const snd_seq_query_subscribe_t,
7119    ) -> ::std::os::raw::c_int;
7120}
7121extern "C" {
7122    pub fn snd_seq_query_subscribe_get_time_update(
7123        info: *const snd_seq_query_subscribe_t,
7124    ) -> ::std::os::raw::c_int;
7125}
7126extern "C" {
7127    pub fn snd_seq_query_subscribe_get_time_real(
7128        info: *const snd_seq_query_subscribe_t,
7129    ) -> ::std::os::raw::c_int;
7130}
7131extern "C" {
7132    pub fn snd_seq_query_subscribe_set_client(
7133        info: *mut snd_seq_query_subscribe_t,
7134        client: ::std::os::raw::c_int,
7135    );
7136}
7137extern "C" {
7138    pub fn snd_seq_query_subscribe_set_port(
7139        info: *mut snd_seq_query_subscribe_t,
7140        port: ::std::os::raw::c_int,
7141    );
7142}
7143extern "C" {
7144    pub fn snd_seq_query_subscribe_set_root(
7145        info: *mut snd_seq_query_subscribe_t,
7146        addr: *const snd_seq_addr_t,
7147    );
7148}
7149extern "C" {
7150    pub fn snd_seq_query_subscribe_set_type(
7151        info: *mut snd_seq_query_subscribe_t,
7152        type_: snd_seq_query_subs_type_t,
7153    );
7154}
7155extern "C" {
7156    pub fn snd_seq_query_subscribe_set_index(
7157        info: *mut snd_seq_query_subscribe_t,
7158        _index: ::std::os::raw::c_int,
7159    );
7160}
7161extern "C" {
7162    pub fn snd_seq_query_port_subscribers(
7163        seq: *mut snd_seq_t,
7164        subs: *mut snd_seq_query_subscribe_t,
7165    ) -> ::std::os::raw::c_int;
7166}
7167#[repr(C)]
7168#[derive(Debug, Copy, Clone)]
7169pub struct _snd_seq_queue_info {
7170    _unused: [u8; 0],
7171}
7172pub type snd_seq_queue_info_t = _snd_seq_queue_info;
7173#[repr(C)]
7174#[derive(Debug, Copy, Clone)]
7175pub struct _snd_seq_queue_status {
7176    _unused: [u8; 0],
7177}
7178pub type snd_seq_queue_status_t = _snd_seq_queue_status;
7179#[repr(C)]
7180#[derive(Debug, Copy, Clone)]
7181pub struct _snd_seq_queue_tempo {
7182    _unused: [u8; 0],
7183}
7184pub type snd_seq_queue_tempo_t = _snd_seq_queue_tempo;
7185#[repr(C)]
7186#[derive(Debug, Copy, Clone)]
7187pub struct _snd_seq_queue_timer {
7188    _unused: [u8; 0],
7189}
7190pub type snd_seq_queue_timer_t = _snd_seq_queue_timer;
7191extern "C" {
7192    pub fn snd_seq_queue_info_sizeof() -> usize;
7193}
7194extern "C" {
7195    pub fn snd_seq_queue_info_malloc(ptr: *mut *mut snd_seq_queue_info_t) -> ::std::os::raw::c_int;
7196}
7197extern "C" {
7198    pub fn snd_seq_queue_info_free(ptr: *mut snd_seq_queue_info_t);
7199}
7200extern "C" {
7201    pub fn snd_seq_queue_info_copy(
7202        dst: *mut snd_seq_queue_info_t,
7203        src: *const snd_seq_queue_info_t,
7204    );
7205}
7206extern "C" {
7207    pub fn snd_seq_queue_info_get_queue(info: *const snd_seq_queue_info_t)
7208        -> ::std::os::raw::c_int;
7209}
7210extern "C" {
7211    pub fn snd_seq_queue_info_get_name(
7212        info: *const snd_seq_queue_info_t,
7213    ) -> *const ::std::os::raw::c_char;
7214}
7215extern "C" {
7216    pub fn snd_seq_queue_info_get_owner(info: *const snd_seq_queue_info_t)
7217        -> ::std::os::raw::c_int;
7218}
7219extern "C" {
7220    pub fn snd_seq_queue_info_get_locked(
7221        info: *const snd_seq_queue_info_t,
7222    ) -> ::std::os::raw::c_int;
7223}
7224extern "C" {
7225    pub fn snd_seq_queue_info_get_flags(
7226        info: *const snd_seq_queue_info_t,
7227    ) -> ::std::os::raw::c_uint;
7228}
7229extern "C" {
7230    pub fn snd_seq_queue_info_set_name(
7231        info: *mut snd_seq_queue_info_t,
7232        name: *const ::std::os::raw::c_char,
7233    );
7234}
7235extern "C" {
7236    pub fn snd_seq_queue_info_set_owner(
7237        info: *mut snd_seq_queue_info_t,
7238        owner: ::std::os::raw::c_int,
7239    );
7240}
7241extern "C" {
7242    pub fn snd_seq_queue_info_set_locked(
7243        info: *mut snd_seq_queue_info_t,
7244        locked: ::std::os::raw::c_int,
7245    );
7246}
7247extern "C" {
7248    pub fn snd_seq_queue_info_set_flags(
7249        info: *mut snd_seq_queue_info_t,
7250        flags: ::std::os::raw::c_uint,
7251    );
7252}
7253extern "C" {
7254    pub fn snd_seq_create_queue(
7255        seq: *mut snd_seq_t,
7256        info: *mut snd_seq_queue_info_t,
7257    ) -> ::std::os::raw::c_int;
7258}
7259extern "C" {
7260    pub fn snd_seq_alloc_named_queue(
7261        seq: *mut snd_seq_t,
7262        name: *const ::std::os::raw::c_char,
7263    ) -> ::std::os::raw::c_int;
7264}
7265extern "C" {
7266    pub fn snd_seq_alloc_queue(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
7267}
7268extern "C" {
7269    pub fn snd_seq_free_queue(
7270        handle: *mut snd_seq_t,
7271        q: ::std::os::raw::c_int,
7272    ) -> ::std::os::raw::c_int;
7273}
7274extern "C" {
7275    pub fn snd_seq_get_queue_info(
7276        seq: *mut snd_seq_t,
7277        q: ::std::os::raw::c_int,
7278        info: *mut snd_seq_queue_info_t,
7279    ) -> ::std::os::raw::c_int;
7280}
7281extern "C" {
7282    pub fn snd_seq_set_queue_info(
7283        seq: *mut snd_seq_t,
7284        q: ::std::os::raw::c_int,
7285        info: *mut snd_seq_queue_info_t,
7286    ) -> ::std::os::raw::c_int;
7287}
7288extern "C" {
7289    pub fn snd_seq_query_named_queue(
7290        seq: *mut snd_seq_t,
7291        name: *const ::std::os::raw::c_char,
7292    ) -> ::std::os::raw::c_int;
7293}
7294extern "C" {
7295    pub fn snd_seq_get_queue_usage(
7296        handle: *mut snd_seq_t,
7297        q: ::std::os::raw::c_int,
7298    ) -> ::std::os::raw::c_int;
7299}
7300extern "C" {
7301    pub fn snd_seq_set_queue_usage(
7302        handle: *mut snd_seq_t,
7303        q: ::std::os::raw::c_int,
7304        used: ::std::os::raw::c_int,
7305    ) -> ::std::os::raw::c_int;
7306}
7307extern "C" {
7308    pub fn snd_seq_queue_status_sizeof() -> usize;
7309}
7310extern "C" {
7311    pub fn snd_seq_queue_status_malloc(
7312        ptr: *mut *mut snd_seq_queue_status_t,
7313    ) -> ::std::os::raw::c_int;
7314}
7315extern "C" {
7316    pub fn snd_seq_queue_status_free(ptr: *mut snd_seq_queue_status_t);
7317}
7318extern "C" {
7319    pub fn snd_seq_queue_status_copy(
7320        dst: *mut snd_seq_queue_status_t,
7321        src: *const snd_seq_queue_status_t,
7322    );
7323}
7324extern "C" {
7325    pub fn snd_seq_queue_status_get_queue(
7326        info: *const snd_seq_queue_status_t,
7327    ) -> ::std::os::raw::c_int;
7328}
7329extern "C" {
7330    pub fn snd_seq_queue_status_get_events(
7331        info: *const snd_seq_queue_status_t,
7332    ) -> ::std::os::raw::c_int;
7333}
7334extern "C" {
7335    pub fn snd_seq_queue_status_get_tick_time(
7336        info: *const snd_seq_queue_status_t,
7337    ) -> snd_seq_tick_time_t;
7338}
7339extern "C" {
7340    pub fn snd_seq_queue_status_get_real_time(
7341        info: *const snd_seq_queue_status_t,
7342    ) -> *const snd_seq_real_time_t;
7343}
7344extern "C" {
7345    pub fn snd_seq_queue_status_get_status(
7346        info: *const snd_seq_queue_status_t,
7347    ) -> ::std::os::raw::c_uint;
7348}
7349extern "C" {
7350    pub fn snd_seq_get_queue_status(
7351        handle: *mut snd_seq_t,
7352        q: ::std::os::raw::c_int,
7353        status: *mut snd_seq_queue_status_t,
7354    ) -> ::std::os::raw::c_int;
7355}
7356extern "C" {
7357    pub fn snd_seq_queue_tempo_sizeof() -> usize;
7358}
7359extern "C" {
7360    pub fn snd_seq_queue_tempo_malloc(
7361        ptr: *mut *mut snd_seq_queue_tempo_t,
7362    ) -> ::std::os::raw::c_int;
7363}
7364extern "C" {
7365    pub fn snd_seq_queue_tempo_free(ptr: *mut snd_seq_queue_tempo_t);
7366}
7367extern "C" {
7368    pub fn snd_seq_queue_tempo_copy(
7369        dst: *mut snd_seq_queue_tempo_t,
7370        src: *const snd_seq_queue_tempo_t,
7371    );
7372}
7373extern "C" {
7374    pub fn snd_seq_queue_tempo_get_queue(
7375        info: *const snd_seq_queue_tempo_t,
7376    ) -> ::std::os::raw::c_int;
7377}
7378extern "C" {
7379    pub fn snd_seq_queue_tempo_get_tempo(
7380        info: *const snd_seq_queue_tempo_t,
7381    ) -> ::std::os::raw::c_uint;
7382}
7383extern "C" {
7384    pub fn snd_seq_queue_tempo_get_ppq(info: *const snd_seq_queue_tempo_t)
7385        -> ::std::os::raw::c_int;
7386}
7387extern "C" {
7388    pub fn snd_seq_queue_tempo_get_skew(
7389        info: *const snd_seq_queue_tempo_t,
7390    ) -> ::std::os::raw::c_uint;
7391}
7392extern "C" {
7393    pub fn snd_seq_queue_tempo_get_skew_base(
7394        info: *const snd_seq_queue_tempo_t,
7395    ) -> ::std::os::raw::c_uint;
7396}
7397extern "C" {
7398    pub fn snd_seq_queue_tempo_set_tempo(
7399        info: *mut snd_seq_queue_tempo_t,
7400        tempo: ::std::os::raw::c_uint,
7401    );
7402}
7403extern "C" {
7404    pub fn snd_seq_queue_tempo_set_ppq(
7405        info: *mut snd_seq_queue_tempo_t,
7406        ppq: ::std::os::raw::c_int,
7407    );
7408}
7409extern "C" {
7410    pub fn snd_seq_queue_tempo_set_skew(
7411        info: *mut snd_seq_queue_tempo_t,
7412        skew: ::std::os::raw::c_uint,
7413    );
7414}
7415extern "C" {
7416    pub fn snd_seq_queue_tempo_set_skew_base(
7417        info: *mut snd_seq_queue_tempo_t,
7418        base: ::std::os::raw::c_uint,
7419    );
7420}
7421extern "C" {
7422    pub fn snd_seq_get_queue_tempo(
7423        handle: *mut snd_seq_t,
7424        q: ::std::os::raw::c_int,
7425        tempo: *mut snd_seq_queue_tempo_t,
7426    ) -> ::std::os::raw::c_int;
7427}
7428extern "C" {
7429    pub fn snd_seq_set_queue_tempo(
7430        handle: *mut snd_seq_t,
7431        q: ::std::os::raw::c_int,
7432        tempo: *mut snd_seq_queue_tempo_t,
7433    ) -> ::std::os::raw::c_int;
7434}
7435pub const SND_SEQ_TIMER_ALSA: snd_seq_queue_timer_type_t = 0;
7436pub const SND_SEQ_TIMER_MIDI_CLOCK: snd_seq_queue_timer_type_t = 1;
7437pub const SND_SEQ_TIMER_MIDI_TICK: snd_seq_queue_timer_type_t = 2;
7438pub type snd_seq_queue_timer_type_t = ::std::os::raw::c_uint;
7439extern "C" {
7440    pub fn snd_seq_queue_timer_sizeof() -> usize;
7441}
7442extern "C" {
7443    pub fn snd_seq_queue_timer_malloc(
7444        ptr: *mut *mut snd_seq_queue_timer_t,
7445    ) -> ::std::os::raw::c_int;
7446}
7447extern "C" {
7448    pub fn snd_seq_queue_timer_free(ptr: *mut snd_seq_queue_timer_t);
7449}
7450extern "C" {
7451    pub fn snd_seq_queue_timer_copy(
7452        dst: *mut snd_seq_queue_timer_t,
7453        src: *const snd_seq_queue_timer_t,
7454    );
7455}
7456extern "C" {
7457    pub fn snd_seq_queue_timer_get_queue(
7458        info: *const snd_seq_queue_timer_t,
7459    ) -> ::std::os::raw::c_int;
7460}
7461extern "C" {
7462    pub fn snd_seq_queue_timer_get_type(
7463        info: *const snd_seq_queue_timer_t,
7464    ) -> snd_seq_queue_timer_type_t;
7465}
7466extern "C" {
7467    pub fn snd_seq_queue_timer_get_id(info: *const snd_seq_queue_timer_t) -> *const snd_timer_id_t;
7468}
7469extern "C" {
7470    pub fn snd_seq_queue_timer_get_resolution(
7471        info: *const snd_seq_queue_timer_t,
7472    ) -> ::std::os::raw::c_uint;
7473}
7474extern "C" {
7475    pub fn snd_seq_queue_timer_set_type(
7476        info: *mut snd_seq_queue_timer_t,
7477        type_: snd_seq_queue_timer_type_t,
7478    );
7479}
7480extern "C" {
7481    pub fn snd_seq_queue_timer_set_id(info: *mut snd_seq_queue_timer_t, id: *const snd_timer_id_t);
7482}
7483extern "C" {
7484    pub fn snd_seq_queue_timer_set_resolution(
7485        info: *mut snd_seq_queue_timer_t,
7486        resolution: ::std::os::raw::c_uint,
7487    );
7488}
7489extern "C" {
7490    pub fn snd_seq_get_queue_timer(
7491        handle: *mut snd_seq_t,
7492        q: ::std::os::raw::c_int,
7493        timer: *mut snd_seq_queue_timer_t,
7494    ) -> ::std::os::raw::c_int;
7495}
7496extern "C" {
7497    pub fn snd_seq_set_queue_timer(
7498        handle: *mut snd_seq_t,
7499        q: ::std::os::raw::c_int,
7500        timer: *mut snd_seq_queue_timer_t,
7501    ) -> ::std::os::raw::c_int;
7502}
7503extern "C" {
7504    pub fn snd_seq_free_event(ev: *mut snd_seq_event_t) -> ::std::os::raw::c_int;
7505}
7506extern "C" {
7507    pub fn snd_seq_event_length(ev: *mut snd_seq_event_t) -> isize;
7508}
7509extern "C" {
7510    pub fn snd_seq_event_output(
7511        handle: *mut snd_seq_t,
7512        ev: *mut snd_seq_event_t,
7513    ) -> ::std::os::raw::c_int;
7514}
7515extern "C" {
7516    pub fn snd_seq_event_output_buffer(
7517        handle: *mut snd_seq_t,
7518        ev: *mut snd_seq_event_t,
7519    ) -> ::std::os::raw::c_int;
7520}
7521extern "C" {
7522    pub fn snd_seq_event_output_direct(
7523        handle: *mut snd_seq_t,
7524        ev: *mut snd_seq_event_t,
7525    ) -> ::std::os::raw::c_int;
7526}
7527extern "C" {
7528    pub fn snd_seq_event_input(
7529        handle: *mut snd_seq_t,
7530        ev: *mut *mut snd_seq_event_t,
7531    ) -> ::std::os::raw::c_int;
7532}
7533extern "C" {
7534    pub fn snd_seq_event_input_pending(
7535        seq: *mut snd_seq_t,
7536        fetch_sequencer: ::std::os::raw::c_int,
7537    ) -> ::std::os::raw::c_int;
7538}
7539extern "C" {
7540    pub fn snd_seq_drain_output(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
7541}
7542extern "C" {
7543    pub fn snd_seq_event_output_pending(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
7544}
7545extern "C" {
7546    pub fn snd_seq_extract_output(
7547        handle: *mut snd_seq_t,
7548        ev: *mut *mut snd_seq_event_t,
7549    ) -> ::std::os::raw::c_int;
7550}
7551extern "C" {
7552    pub fn snd_seq_drop_output(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
7553}
7554extern "C" {
7555    pub fn snd_seq_drop_output_buffer(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
7556}
7557extern "C" {
7558    pub fn snd_seq_drop_input(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
7559}
7560extern "C" {
7561    pub fn snd_seq_drop_input_buffer(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
7562}
7563#[repr(C)]
7564#[derive(Debug, Copy, Clone)]
7565pub struct _snd_seq_remove_events {
7566    _unused: [u8; 0],
7567}
7568pub type snd_seq_remove_events_t = _snd_seq_remove_events;
7569extern "C" {
7570    pub fn snd_seq_remove_events_sizeof() -> usize;
7571}
7572extern "C" {
7573    pub fn snd_seq_remove_events_malloc(
7574        ptr: *mut *mut snd_seq_remove_events_t,
7575    ) -> ::std::os::raw::c_int;
7576}
7577extern "C" {
7578    pub fn snd_seq_remove_events_free(ptr: *mut snd_seq_remove_events_t);
7579}
7580extern "C" {
7581    pub fn snd_seq_remove_events_copy(
7582        dst: *mut snd_seq_remove_events_t,
7583        src: *const snd_seq_remove_events_t,
7584    );
7585}
7586extern "C" {
7587    pub fn snd_seq_remove_events_get_condition(
7588        info: *const snd_seq_remove_events_t,
7589    ) -> ::std::os::raw::c_uint;
7590}
7591extern "C" {
7592    pub fn snd_seq_remove_events_get_queue(
7593        info: *const snd_seq_remove_events_t,
7594    ) -> ::std::os::raw::c_int;
7595}
7596extern "C" {
7597    pub fn snd_seq_remove_events_get_time(
7598        info: *const snd_seq_remove_events_t,
7599    ) -> *const snd_seq_timestamp_t;
7600}
7601extern "C" {
7602    pub fn snd_seq_remove_events_get_dest(
7603        info: *const snd_seq_remove_events_t,
7604    ) -> *const snd_seq_addr_t;
7605}
7606extern "C" {
7607    pub fn snd_seq_remove_events_get_channel(
7608        info: *const snd_seq_remove_events_t,
7609    ) -> ::std::os::raw::c_int;
7610}
7611extern "C" {
7612    pub fn snd_seq_remove_events_get_event_type(
7613        info: *const snd_seq_remove_events_t,
7614    ) -> ::std::os::raw::c_int;
7615}
7616extern "C" {
7617    pub fn snd_seq_remove_events_get_tag(
7618        info: *const snd_seq_remove_events_t,
7619    ) -> ::std::os::raw::c_int;
7620}
7621extern "C" {
7622    pub fn snd_seq_remove_events_set_condition(
7623        info: *mut snd_seq_remove_events_t,
7624        flags: ::std::os::raw::c_uint,
7625    );
7626}
7627extern "C" {
7628    pub fn snd_seq_remove_events_set_queue(
7629        info: *mut snd_seq_remove_events_t,
7630        queue: ::std::os::raw::c_int,
7631    );
7632}
7633extern "C" {
7634    pub fn snd_seq_remove_events_set_time(
7635        info: *mut snd_seq_remove_events_t,
7636        time: *const snd_seq_timestamp_t,
7637    );
7638}
7639extern "C" {
7640    pub fn snd_seq_remove_events_set_dest(
7641        info: *mut snd_seq_remove_events_t,
7642        addr: *const snd_seq_addr_t,
7643    );
7644}
7645extern "C" {
7646    pub fn snd_seq_remove_events_set_channel(
7647        info: *mut snd_seq_remove_events_t,
7648        channel: ::std::os::raw::c_int,
7649    );
7650}
7651extern "C" {
7652    pub fn snd_seq_remove_events_set_event_type(
7653        info: *mut snd_seq_remove_events_t,
7654        type_: ::std::os::raw::c_int,
7655    );
7656}
7657extern "C" {
7658    pub fn snd_seq_remove_events_set_tag(
7659        info: *mut snd_seq_remove_events_t,
7660        tag: ::std::os::raw::c_int,
7661    );
7662}
7663extern "C" {
7664    pub fn snd_seq_remove_events(
7665        handle: *mut snd_seq_t,
7666        info: *mut snd_seq_remove_events_t,
7667    ) -> ::std::os::raw::c_int;
7668}
7669extern "C" {
7670    pub fn snd_seq_set_bit(nr: ::std::os::raw::c_int, array: *mut ::std::os::raw::c_void);
7671}
7672extern "C" {
7673    pub fn snd_seq_unset_bit(nr: ::std::os::raw::c_int, array: *mut ::std::os::raw::c_void);
7674}
7675extern "C" {
7676    pub fn snd_seq_change_bit(
7677        nr: ::std::os::raw::c_int,
7678        array: *mut ::std::os::raw::c_void,
7679    ) -> ::std::os::raw::c_int;
7680}
7681extern "C" {
7682    pub fn snd_seq_get_bit(
7683        nr: ::std::os::raw::c_int,
7684        array: *mut ::std::os::raw::c_void,
7685    ) -> ::std::os::raw::c_int;
7686}
7687extern "C" {
7688    pub fn snd_seq_control_queue(
7689        seq: *mut snd_seq_t,
7690        q: ::std::os::raw::c_int,
7691        type_: ::std::os::raw::c_int,
7692        value: ::std::os::raw::c_int,
7693        ev: *mut snd_seq_event_t,
7694    ) -> ::std::os::raw::c_int;
7695}
7696extern "C" {
7697    pub fn snd_seq_create_simple_port(
7698        seq: *mut snd_seq_t,
7699        name: *const ::std::os::raw::c_char,
7700        caps: ::std::os::raw::c_uint,
7701        type_: ::std::os::raw::c_uint,
7702    ) -> ::std::os::raw::c_int;
7703}
7704extern "C" {
7705    pub fn snd_seq_delete_simple_port(
7706        seq: *mut snd_seq_t,
7707        port: ::std::os::raw::c_int,
7708    ) -> ::std::os::raw::c_int;
7709}
7710extern "C" {
7711    pub fn snd_seq_connect_from(
7712        seq: *mut snd_seq_t,
7713        my_port: ::std::os::raw::c_int,
7714        src_client: ::std::os::raw::c_int,
7715        src_port: ::std::os::raw::c_int,
7716    ) -> ::std::os::raw::c_int;
7717}
7718extern "C" {
7719    pub fn snd_seq_connect_to(
7720        seq: *mut snd_seq_t,
7721        my_port: ::std::os::raw::c_int,
7722        dest_client: ::std::os::raw::c_int,
7723        dest_port: ::std::os::raw::c_int,
7724    ) -> ::std::os::raw::c_int;
7725}
7726extern "C" {
7727    pub fn snd_seq_disconnect_from(
7728        seq: *mut snd_seq_t,
7729        my_port: ::std::os::raw::c_int,
7730        src_client: ::std::os::raw::c_int,
7731        src_port: ::std::os::raw::c_int,
7732    ) -> ::std::os::raw::c_int;
7733}
7734extern "C" {
7735    pub fn snd_seq_disconnect_to(
7736        seq: *mut snd_seq_t,
7737        my_port: ::std::os::raw::c_int,
7738        dest_client: ::std::os::raw::c_int,
7739        dest_port: ::std::os::raw::c_int,
7740    ) -> ::std::os::raw::c_int;
7741}
7742extern "C" {
7743    pub fn snd_seq_set_client_name(
7744        seq: *mut snd_seq_t,
7745        name: *const ::std::os::raw::c_char,
7746    ) -> ::std::os::raw::c_int;
7747}
7748extern "C" {
7749    pub fn snd_seq_set_client_event_filter(
7750        seq: *mut snd_seq_t,
7751        event_type: ::std::os::raw::c_int,
7752    ) -> ::std::os::raw::c_int;
7753}
7754extern "C" {
7755    pub fn snd_seq_set_client_pool_output(
7756        seq: *mut snd_seq_t,
7757        size: usize,
7758    ) -> ::std::os::raw::c_int;
7759}
7760extern "C" {
7761    pub fn snd_seq_set_client_pool_output_room(
7762        seq: *mut snd_seq_t,
7763        size: usize,
7764    ) -> ::std::os::raw::c_int;
7765}
7766extern "C" {
7767    pub fn snd_seq_set_client_pool_input(seq: *mut snd_seq_t, size: usize)
7768        -> ::std::os::raw::c_int;
7769}
7770extern "C" {
7771    pub fn snd_seq_sync_output_queue(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
7772}
7773extern "C" {
7774    pub fn snd_seq_parse_address(
7775        seq: *mut snd_seq_t,
7776        addr: *mut snd_seq_addr_t,
7777        str_: *const ::std::os::raw::c_char,
7778    ) -> ::std::os::raw::c_int;
7779}
7780extern "C" {
7781    pub fn snd_seq_reset_pool_output(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
7782}
7783extern "C" {
7784    pub fn snd_seq_reset_pool_input(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
7785}
7786#[repr(C)]
7787#[derive(Debug, Copy, Clone)]
7788pub struct snd_midi_event {
7789    _unused: [u8; 0],
7790}
7791pub type snd_midi_event_t = snd_midi_event;
7792extern "C" {
7793    pub fn snd_midi_event_new(
7794        bufsize: usize,
7795        rdev: *mut *mut snd_midi_event_t,
7796    ) -> ::std::os::raw::c_int;
7797}
7798extern "C" {
7799    pub fn snd_midi_event_resize_buffer(
7800        dev: *mut snd_midi_event_t,
7801        bufsize: usize,
7802    ) -> ::std::os::raw::c_int;
7803}
7804extern "C" {
7805    pub fn snd_midi_event_free(dev: *mut snd_midi_event_t);
7806}
7807extern "C" {
7808    pub fn snd_midi_event_init(dev: *mut snd_midi_event_t);
7809}
7810extern "C" {
7811    pub fn snd_midi_event_reset_encode(dev: *mut snd_midi_event_t);
7812}
7813extern "C" {
7814    pub fn snd_midi_event_reset_decode(dev: *mut snd_midi_event_t);
7815}
7816extern "C" {
7817    pub fn snd_midi_event_no_status(dev: *mut snd_midi_event_t, on: ::std::os::raw::c_int);
7818}
7819extern "C" {
7820    pub fn snd_midi_event_encode(
7821        dev: *mut snd_midi_event_t,
7822        buf: *const ::std::os::raw::c_uchar,
7823        count: ::std::os::raw::c_long,
7824        ev: *mut snd_seq_event_t,
7825    ) -> ::std::os::raw::c_long;
7826}
7827extern "C" {
7828    pub fn snd_midi_event_encode_byte(
7829        dev: *mut snd_midi_event_t,
7830        c: ::std::os::raw::c_int,
7831        ev: *mut snd_seq_event_t,
7832    ) -> ::std::os::raw::c_int;
7833}
7834extern "C" {
7835    pub fn snd_midi_event_decode(
7836        dev: *mut snd_midi_event_t,
7837        buf: *mut ::std::os::raw::c_uchar,
7838        count: ::std::os::raw::c_long,
7839        ev: *const snd_seq_event_t,
7840    ) -> ::std::os::raw::c_long;
7841}
7842pub type __builtin_va_list = [__va_list_tag; 1usize];
7843#[repr(C)]
7844#[derive(Debug, Copy, Clone)]
7845pub struct __va_list_tag {
7846    pub gp_offset: ::std::os::raw::c_uint,
7847    pub fp_offset: ::std::os::raw::c_uint,
7848    pub overflow_arg_area: *mut ::std::os::raw::c_void,
7849    pub reg_save_area: *mut ::std::os::raw::c_void,
7850}