alsa_sys/
generated.rs

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