quad_alsa_sys/
generated.rs

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