summaryrefslogtreecommitdiffstats
path: root/third_party/rust/alsa-sys
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/rust/alsa-sys
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/alsa-sys')
-rw-r--r--third_party/rust/alsa-sys/.cargo-checksum.json1
-rw-r--r--third_party/rust/alsa-sys/Cargo.toml29
-rw-r--r--third_party/rust/alsa-sys/LICENSE21
-rw-r--r--third_party/rust/alsa-sys/README.md6
-rw-r--r--third_party/rust/alsa-sys/build.rs16
-rwxr-xr-xthird_party/rust/alsa-sys/regenerate_bindings.sh4
-rw-r--r--third_party/rust/alsa-sys/src/generated.rs8745
-rw-r--r--third_party/rust/alsa-sys/src/lib.rs40
8 files changed, 8862 insertions, 0 deletions
diff --git a/third_party/rust/alsa-sys/.cargo-checksum.json b/third_party/rust/alsa-sys/.cargo-checksum.json
new file mode 100644
index 0000000000..ff132b40d6
--- /dev/null
+++ b/third_party/rust/alsa-sys/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"709564bceccc44d3314d06ce59e61c11c30e6c861a784c886ca813d64ad9765d","LICENSE":"219766b3420f49f6204143c5f3ef750888fb6de29ce5f63e909f146e90b375a2","README.md":"263763eb2baff7d9e3db7d96b54a0679d0f05c42198ac9a685f5482137d4340e","build.rs":"47195d700b895b8901570c281ff3a99ca0dd1535df52f92f990a89d215ea831a","regenerate_bindings.sh":"71afbc324170622c8337b9e6bb0ab6d621ab72093231da37d780ffc79b2a0c0c","src/generated.rs":"6841b36de61a1998bc54ca5b41c8d2b3fcd300aeb48c7b60f4655f0823664668","src/lib.rs":"0aa55bfdc6fe3ab69082f8fc79217846f11d9d40c3104228255456b07840570e"},"package":"db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527"} \ No newline at end of file
diff --git a/third_party/rust/alsa-sys/Cargo.toml b/third_party/rust/alsa-sys/Cargo.toml
new file mode 100644
index 0000000000..180ed96880
--- /dev/null
+++ b/third_party/rust/alsa-sys/Cargo.toml
@@ -0,0 +1,29 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+edition = "2018"
+name = "alsa-sys"
+version = "0.3.1"
+authors = ["Pierre Krieger <pierre.krieger1708@gmail.com>", "David Henningsson <coding@diwic.se>"]
+build = "build.rs"
+links = "alsa"
+description = "FFI bindings for the ALSA project (Advanced Linux Sound Architecture)"
+documentation = "http://docs.rs/alsa-sys"
+keywords = ["ALSA", "audio", "sound"]
+categories = ["os::unix-apis", "external-ffi-bindings", "multimedia::audio"]
+license = "MIT"
+repository = "https://github.com/diwic/alsa-sys"
+[dependencies.libc]
+version = "0.2.65"
+[build-dependencies.pkg-config]
+version = "0.3"
diff --git a/third_party/rust/alsa-sys/LICENSE b/third_party/rust/alsa-sys/LICENSE
new file mode 100644
index 0000000000..1d287e86c3
--- /dev/null
+++ b/third_party/rust/alsa-sys/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 diwic
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/third_party/rust/alsa-sys/README.md b/third_party/rust/alsa-sys/README.md
new file mode 100644
index 0000000000..d796093418
--- /dev/null
+++ b/third_party/rust/alsa-sys/README.md
@@ -0,0 +1,6 @@
+# alsa-sys
+
+Rust raw FFI bindings for ALSA.
+
+To avoid too long build times, the finished binding is committed into this repository.
+If you need to regenerate it, run `regenerate_bindings.sh` (and have `bindgen` set up when you do so).
diff --git a/third_party/rust/alsa-sys/build.rs b/third_party/rust/alsa-sys/build.rs
new file mode 100644
index 0000000000..9132dcdb6a
--- /dev/null
+++ b/third_party/rust/alsa-sys/build.rs
@@ -0,0 +1,16 @@
+extern crate pkg_config;
+
+fn main() {
+ if let Err(e) = pkg_config::probe_library("alsa") {
+ match e {
+ pkg_config::Error::Failure { .. } => panic! (
+ "Pkg-config failed - usually this is because alsa development headers are not installed.\n\n\
+ For Fedora users:\n# dnf install alsa-lib-devel\n\n\
+ For Debian/Ubuntu users:\n# apt-get install libasound2-dev\n\n\
+ pkg_config details:\n{}",
+ e
+ ),
+ _ => panic!("{}", e)
+ }
+ }
+}
diff --git a/third_party/rust/alsa-sys/regenerate_bindings.sh b/third_party/rust/alsa-sys/regenerate_bindings.sh
new file mode 100755
index 0000000000..a1d33d6c02
--- /dev/null
+++ b/third_party/rust/alsa-sys/regenerate_bindings.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+bindgen --size_t-is-usize --no-recursive-whitelist --no-prepend-enum-name --no-layout-tests \
+--generate "functions,types" --whitelist-function="snd_.*" --whitelist-type="_?snd_.*" \
+/usr/include/alsa/asoundlib.h -o src/generated.rs
diff --git a/third_party/rust/alsa-sys/src/generated.rs b/third_party/rust/alsa-sys/src/generated.rs
new file mode 100644
index 0000000000..7d4053c109
--- /dev/null
+++ b/third_party/rust/alsa-sys/src/generated.rs
@@ -0,0 +1,8745 @@
+/* automatically generated by rust-bindgen */
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct __BindgenBitfieldUnit<Storage, Align> {
+ storage: Storage,
+ align: [Align; 0],
+}
+impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align> {
+ #[inline]
+ pub const fn new(storage: Storage) -> Self {
+ Self { storage, align: [] }
+ }
+}
+impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>
+where
+ Storage: AsRef<[u8]> + AsMut<[u8]>,
+{
+ #[inline]
+ pub fn get_bit(&self, index: usize) -> bool {
+ debug_assert!(index / 8 < self.storage.as_ref().len());
+ let byte_index = index / 8;
+ let byte = self.storage.as_ref()[byte_index];
+ let bit_index = if cfg!(target_endian = "big") {
+ 7 - (index % 8)
+ } else {
+ index % 8
+ };
+ let mask = 1 << bit_index;
+ byte & mask == mask
+ }
+ #[inline]
+ pub fn set_bit(&mut self, index: usize, val: bool) {
+ debug_assert!(index / 8 < self.storage.as_ref().len());
+ let byte_index = index / 8;
+ let byte = &mut self.storage.as_mut()[byte_index];
+ let bit_index = if cfg!(target_endian = "big") {
+ 7 - (index % 8)
+ } else {
+ index % 8
+ };
+ let mask = 1 << bit_index;
+ if val {
+ *byte |= mask;
+ } else {
+ *byte &= !mask;
+ }
+ }
+ #[inline]
+ pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
+ debug_assert!(bit_width <= 64);
+ debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
+ debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
+ let mut val = 0;
+ for i in 0..(bit_width as usize) {
+ if self.get_bit(i + bit_offset) {
+ let index = if cfg!(target_endian = "big") {
+ bit_width as usize - 1 - i
+ } else {
+ i
+ };
+ val |= 1 << index;
+ }
+ }
+ val
+ }
+ #[inline]
+ pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
+ debug_assert!(bit_width <= 64);
+ debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
+ debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
+ for i in 0..(bit_width as usize) {
+ let mask = 1 << i;
+ let val_bit_is_set = val & mask == mask;
+ let index = if cfg!(target_endian = "big") {
+ bit_width as usize - 1 - i
+ } else {
+ i
+ };
+ self.set_bit(index + bit_offset, val_bit_is_set);
+ }
+ }
+}
+#[repr(C)]
+#[derive(Default)]
+pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
+impl<T> __IncompleteArrayField<T> {
+ #[inline]
+ pub const fn new() -> Self {
+ __IncompleteArrayField(::std::marker::PhantomData, [])
+ }
+ #[inline]
+ pub fn as_ptr(&self) -> *const T {
+ self as *const _ as *const T
+ }
+ #[inline]
+ pub fn as_mut_ptr(&mut self) -> *mut T {
+ self as *mut _ as *mut T
+ }
+ #[inline]
+ pub unsafe fn as_slice(&self, len: usize) -> &[T] {
+ ::std::slice::from_raw_parts(self.as_ptr(), len)
+ }
+ #[inline]
+ pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
+ ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
+ }
+}
+impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
+ fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ fmt.write_str("__IncompleteArrayField")
+ }
+}
+extern "C" {
+ #[doc = " \\defgroup Global Global defines and functions"]
+ #[doc = " Global defines and functions."]
+ #[doc = " \\par"]
+ #[doc = " The ALSA library implementation uses these macros and functions."]
+ #[doc = " Most applications probably do not need them."]
+ #[doc = " \\{"]
+ pub fn snd_asoundlib_version() -> *const ::std::os::raw::c_char;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_dlsym_link {
+ pub next: *mut snd_dlsym_link,
+ pub dlsym_name: *const ::std::os::raw::c_char,
+ pub dlsym_ptr: *const ::std::os::raw::c_void,
+}
+extern "C" {
+ pub fn snd_dlpath(
+ path: *mut ::std::os::raw::c_char,
+ path_len: usize,
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_dlopen(
+ file: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ errbuf: *mut ::std::os::raw::c_char,
+ errbuflen: usize,
+ ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_dlsym(
+ handle: *mut ::std::os::raw::c_void,
+ name: *const ::std::os::raw::c_char,
+ version: *const ::std::os::raw::c_char,
+ ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_dlclose(handle: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_async_handler {
+ _unused: [u8; 0],
+}
+#[doc = " \\brief Internal structure for an async notification client handler."]
+#[doc = ""]
+#[doc = " The ALSA library uses a pointer to this structure as a handle to an async"]
+#[doc = " notification object. Applications don't access its contents directly."]
+pub type snd_async_handler_t = _snd_async_handler;
+#[doc = " \\brief Async notification callback."]
+#[doc = ""]
+#[doc = " See the #snd_async_add_handler function for details."]
+pub type snd_async_callback_t =
+ ::std::option::Option<unsafe extern "C" fn(handler: *mut snd_async_handler_t)>;
+extern "C" {
+ pub fn snd_async_add_handler(
+ handler: *mut *mut snd_async_handler_t,
+ fd: ::std::os::raw::c_int,
+ callback: snd_async_callback_t,
+ private_data: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_del_handler(handler: *mut snd_async_handler_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_handler_get_fd(handler: *mut snd_async_handler_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_handler_get_signo(handler: *mut snd_async_handler_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_handler_get_callback_private(
+ handler: *mut snd_async_handler_t,
+ ) -> *mut ::std::os::raw::c_void;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_shm_area {
+ _unused: [u8; 0],
+}
+extern "C" {
+ pub fn snd_shm_area_create(
+ shmid: ::std::os::raw::c_int,
+ ptr: *mut ::std::os::raw::c_void,
+ ) -> *mut snd_shm_area;
+}
+extern "C" {
+ pub fn snd_shm_area_share(area: *mut snd_shm_area) -> *mut snd_shm_area;
+}
+extern "C" {
+ pub fn snd_shm_area_destroy(area: *mut snd_shm_area) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_user_file(
+ file: *const ::std::os::raw::c_char,
+ result: *mut *mut ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+#[doc = " Timestamp"]
+pub type snd_timestamp_t = timeval;
+#[doc = " Hi-res timestamp"]
+pub type snd_htimestamp_t = timespec;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_input {
+ _unused: [u8; 0],
+}
+#[doc = " \\brief Internal structure for an input object."]
+#[doc = ""]
+#[doc = " The ALSA library uses a pointer to this structure as a handle to an"]
+#[doc = " input object. Applications don't access its contents directly."]
+pub type snd_input_t = _snd_input;
+#[doc = " Input from a stdio stream."]
+pub const SND_INPUT_STDIO: _snd_input_type = 0;
+#[doc = " Input from a memory buffer."]
+pub const SND_INPUT_BUFFER: _snd_input_type = 1;
+#[doc = " Input type."]
+pub type _snd_input_type = u32;
+#[doc = " Input type."]
+pub use self::_snd_input_type as snd_input_type_t;
+extern "C" {
+ pub fn snd_input_stdio_open(
+ inputp: *mut *mut snd_input_t,
+ file: *const ::std::os::raw::c_char,
+ mode: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_input_stdio_attach(
+ inputp: *mut *mut snd_input_t,
+ fp: *mut FILE,
+ _close: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_input_buffer_open(
+ inputp: *mut *mut snd_input_t,
+ buffer: *const ::std::os::raw::c_char,
+ size: isize,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_input_close(input: *mut snd_input_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_input_scanf(
+ input: *mut snd_input_t,
+ format: *const ::std::os::raw::c_char,
+ ...
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_input_gets(
+ input: *mut snd_input_t,
+ str: *mut ::std::os::raw::c_char,
+ size: usize,
+ ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_input_getc(input: *mut snd_input_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_input_ungetc(
+ input: *mut snd_input_t,
+ c: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_output {
+ _unused: [u8; 0],
+}
+#[doc = " \\brief Internal structure for an output object."]
+#[doc = ""]
+#[doc = " The ALSA library uses a pointer to this structure as a handle to an"]
+#[doc = " output object. Applications don't access its contents directly."]
+pub type snd_output_t = _snd_output;
+#[doc = " Output to a stdio stream."]
+pub const SND_OUTPUT_STDIO: _snd_output_type = 0;
+#[doc = " Output to a memory buffer."]
+pub const SND_OUTPUT_BUFFER: _snd_output_type = 1;
+#[doc = " Output type."]
+pub type _snd_output_type = u32;
+#[doc = " Output type."]
+pub use self::_snd_output_type as snd_output_type_t;
+extern "C" {
+ pub fn snd_output_stdio_open(
+ outputp: *mut *mut snd_output_t,
+ file: *const ::std::os::raw::c_char,
+ mode: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_stdio_attach(
+ outputp: *mut *mut snd_output_t,
+ fp: *mut FILE,
+ _close: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_buffer_open(outputp: *mut *mut snd_output_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_buffer_string(
+ output: *mut snd_output_t,
+ buf: *mut *mut ::std::os::raw::c_char,
+ ) -> usize;
+}
+extern "C" {
+ pub fn snd_output_close(output: *mut snd_output_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_printf(
+ output: *mut snd_output_t,
+ format: *const ::std::os::raw::c_char,
+ ...
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_vprintf(
+ output: *mut snd_output_t,
+ format: *const ::std::os::raw::c_char,
+ args: *mut __va_list_tag,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_puts(
+ output: *mut snd_output_t,
+ str: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_putc(
+ output: *mut snd_output_t,
+ c: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_output_flush(output: *mut snd_output_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_strerror(errnum: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+#[doc = " \\brief Error handler callback."]
+#[doc = " \\param file Source file name."]
+#[doc = " \\param line Line number."]
+#[doc = " \\param function Function name."]
+#[doc = " \\param err Value of \\c errno, or 0 if not relevant."]
+#[doc = " \\param fmt \\c printf(3) format."]
+#[doc = " \\param ... \\c printf(3) arguments."]
+#[doc = ""]
+#[doc = " A function of this type is called by the ALSA library when an error occurs."]
+#[doc = " This function usually shows the message on the screen, and/or logs it."]
+pub type snd_lib_error_handler_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ file: *const ::std::os::raw::c_char,
+ line: ::std::os::raw::c_int,
+ function: *const ::std::os::raw::c_char,
+ err: ::std::os::raw::c_int,
+ fmt: *const ::std::os::raw::c_char,
+ ...
+ ),
+>;
+extern "C" {
+ pub fn snd_lib_error_set_handler(handler: snd_lib_error_handler_t) -> ::std::os::raw::c_int;
+}
+#[doc = " Local error handler function type"]
+pub type snd_local_error_handler_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ file: *const ::std::os::raw::c_char,
+ line: ::std::os::raw::c_int,
+ func: *const ::std::os::raw::c_char,
+ err: ::std::os::raw::c_int,
+ fmt: *const ::std::os::raw::c_char,
+ arg: *mut __va_list_tag,
+ ),
+>;
+extern "C" {
+ pub fn snd_lib_error_set_local(func: snd_local_error_handler_t) -> snd_local_error_handler_t;
+}
+#[doc = " Integer number."]
+pub const SND_CONFIG_TYPE_INTEGER: _snd_config_type = 0;
+#[doc = " 64-bit integer number."]
+pub const SND_CONFIG_TYPE_INTEGER64: _snd_config_type = 1;
+#[doc = " Real number."]
+pub const SND_CONFIG_TYPE_REAL: _snd_config_type = 2;
+#[doc = " Character string."]
+pub const SND_CONFIG_TYPE_STRING: _snd_config_type = 3;
+#[doc = " Pointer (runtime only, cannot be saved)."]
+pub const SND_CONFIG_TYPE_POINTER: _snd_config_type = 4;
+#[doc = " Compound node."]
+pub const SND_CONFIG_TYPE_COMPOUND: _snd_config_type = 1024;
+#[doc = " \\brief Configuration node type."]
+pub type _snd_config_type = u32;
+#[doc = " \\brief Configuration node type."]
+pub use self::_snd_config_type as snd_config_type_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_config {
+ _unused: [u8; 0],
+}
+#[doc = " \\brief Internal structure for a configuration node object."]
+#[doc = ""]
+#[doc = " The ALSA library uses a pointer to this structure as a handle to a"]
+#[doc = " configuration node. Applications don't access its contents directly."]
+pub type snd_config_t = _snd_config;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_config_iterator {
+ _unused: [u8; 0],
+}
+#[doc = " \\brief Type for a configuration compound iterator."]
+#[doc = ""]
+#[doc = " The ALSA library uses this pointer type as a handle to a configuration"]
+#[doc = " compound iterator. Applications don't directly access the contents of"]
+#[doc = " the structure pointed to by this type."]
+pub type snd_config_iterator_t = *mut _snd_config_iterator;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_config_update {
+ _unused: [u8; 0],
+}
+#[doc = " \\brief Internal structure for a configuration private update object."]
+#[doc = ""]
+#[doc = " The ALSA library uses this structure to save private update information."]
+pub type snd_config_update_t = _snd_config_update;
+extern "C" {
+ pub fn snd_config_topdir() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_config_top(config: *mut *mut snd_config_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_load(
+ config: *mut snd_config_t,
+ in_: *mut snd_input_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_load_override(
+ config: *mut snd_config_t,
+ in_: *mut snd_input_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_save(
+ config: *mut snd_config_t,
+ out: *mut snd_output_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_update() -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_update_r(
+ top: *mut *mut snd_config_t,
+ update: *mut *mut snd_config_update_t,
+ path: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_update_free(update: *mut snd_config_update_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_update_free_global() -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_update_ref(top: *mut *mut snd_config_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_ref(top: *mut snd_config_t);
+}
+extern "C" {
+ pub fn snd_config_unref(top: *mut snd_config_t);
+}
+extern "C" {
+ pub fn snd_config_search(
+ config: *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ result: *mut *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_searchv(
+ config: *mut snd_config_t,
+ result: *mut *mut snd_config_t,
+ ...
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_search_definition(
+ config: *mut snd_config_t,
+ base: *const ::std::os::raw::c_char,
+ key: *const ::std::os::raw::c_char,
+ result: *mut *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_expand(
+ config: *mut snd_config_t,
+ root: *mut snd_config_t,
+ args: *const ::std::os::raw::c_char,
+ private_data: *mut snd_config_t,
+ result: *mut *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_evaluate(
+ config: *mut snd_config_t,
+ root: *mut snd_config_t,
+ private_data: *mut snd_config_t,
+ result: *mut *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_add(
+ config: *mut snd_config_t,
+ child: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_add_before(
+ before: *mut snd_config_t,
+ child: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_add_after(
+ after: *mut snd_config_t,
+ child: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_remove(config: *mut snd_config_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_delete(config: *mut snd_config_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_delete_compound_members(config: *const snd_config_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_copy(
+ dst: *mut *mut snd_config_t,
+ src: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_make(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ type_: snd_config_type_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_make_integer(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_make_integer64(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_make_real(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_make_string(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_make_pointer(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_make_compound(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ join: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_imake_integer(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ value: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_imake_integer64(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ value: ::std::os::raw::c_longlong,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_imake_real(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ value: f64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_imake_string(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ascii: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_imake_safe_string(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ascii: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_imake_pointer(
+ config: *mut *mut snd_config_t,
+ key: *const ::std::os::raw::c_char,
+ ptr: *const ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_type(config: *const snd_config_t) -> snd_config_type_t;
+}
+extern "C" {
+ pub fn snd_config_is_array(config: *const snd_config_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_set_id(
+ config: *mut snd_config_t,
+ id: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_set_integer(
+ config: *mut snd_config_t,
+ value: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_set_integer64(
+ config: *mut snd_config_t,
+ value: ::std::os::raw::c_longlong,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_set_real(config: *mut snd_config_t, value: f64) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_set_string(
+ config: *mut snd_config_t,
+ value: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_set_ascii(
+ config: *mut snd_config_t,
+ ascii: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_set_pointer(
+ config: *mut snd_config_t,
+ ptr: *const ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_id(
+ config: *const snd_config_t,
+ value: *mut *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_integer(
+ config: *const snd_config_t,
+ value: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_integer64(
+ config: *const snd_config_t,
+ value: *mut ::std::os::raw::c_longlong,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_real(
+ config: *const snd_config_t,
+ value: *mut f64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_ireal(
+ config: *const snd_config_t,
+ value: *mut f64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_string(
+ config: *const snd_config_t,
+ value: *mut *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_ascii(
+ config: *const snd_config_t,
+ value: *mut *mut ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_pointer(
+ config: *const snd_config_t,
+ value: *mut *const ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_test_id(
+ config: *const snd_config_t,
+ id: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_iterator_first(node: *const snd_config_t) -> snd_config_iterator_t;
+}
+extern "C" {
+ pub fn snd_config_iterator_next(iterator: snd_config_iterator_t) -> snd_config_iterator_t;
+}
+extern "C" {
+ pub fn snd_config_iterator_end(node: *const snd_config_t) -> snd_config_iterator_t;
+}
+extern "C" {
+ pub fn snd_config_iterator_entry(iterator: snd_config_iterator_t) -> *mut snd_config_t;
+}
+extern "C" {
+ pub fn snd_config_get_bool_ascii(ascii: *const ::std::os::raw::c_char)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_bool(conf: *const snd_config_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_ctl_iface_ascii(
+ ascii: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_config_get_ctl_iface(conf: *const snd_config_t) -> ::std::os::raw::c_int;
+}
+#[doc = " Device-name list element"]
+pub type snd_devname_t = snd_devname;
+#[doc = " Device-name list element (definition)"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_devname {
+ #[doc = "< Device name string"]
+ pub name: *mut ::std::os::raw::c_char,
+ #[doc = "< Comments"]
+ pub comment: *mut ::std::os::raw::c_char,
+ #[doc = "< Next pointer"]
+ pub next: *mut snd_devname_t,
+}
+extern "C" {
+ pub fn snd_names_list(
+ iface: *const ::std::os::raw::c_char,
+ list: *mut *mut snd_devname_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_names_list_free(list: *mut snd_devname_t);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_info {
+ _unused: [u8; 0],
+}
+#[doc = " PCM generic info container"]
+pub type snd_pcm_info_t = _snd_pcm_info;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_hw_params {
+ _unused: [u8; 0],
+}
+#[doc = " PCM hardware configuration space container"]
+#[doc = ""]
+#[doc = " snd_pcm_hw_params_t is an opaque structure which contains a set of possible"]
+#[doc = " PCM hardware configurations. For example, a given instance might include a"]
+#[doc = " range of buffer sizes, a range of period sizes, and a set of several sample"]
+#[doc = " formats. Some subset of all possible combinations these sets may be valid,"]
+#[doc = " but not necessarily any combination will be valid."]
+#[doc = ""]
+#[doc = " When a parameter is set or restricted using a snd_pcm_hw_params_set*"]
+#[doc = " function, all of the other ranges will be updated to exclude as many"]
+#[doc = " impossible configurations as possible. Attempting to set a parameter"]
+#[doc = " outside of its acceptable range will result in the function failing"]
+#[doc = " and an error code being returned."]
+pub type snd_pcm_hw_params_t = _snd_pcm_hw_params;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_sw_params {
+ _unused: [u8; 0],
+}
+#[doc = " PCM software configuration container"]
+pub type snd_pcm_sw_params_t = _snd_pcm_sw_params;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_status {
+ _unused: [u8; 0],
+}
+#[doc = " PCM status container"]
+pub type snd_pcm_status_t = _snd_pcm_status;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_access_mask {
+ _unused: [u8; 0],
+}
+#[doc = " PCM access types mask"]
+pub type snd_pcm_access_mask_t = _snd_pcm_access_mask;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_format_mask {
+ _unused: [u8; 0],
+}
+#[doc = " PCM formats mask"]
+pub type snd_pcm_format_mask_t = _snd_pcm_format_mask;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_subformat_mask {
+ _unused: [u8; 0],
+}
+#[doc = " PCM subformats mask"]
+pub type snd_pcm_subformat_mask_t = _snd_pcm_subformat_mask;
+#[doc = " standard device"]
+pub const SND_PCM_CLASS_GENERIC: _snd_pcm_class = 0;
+#[doc = " multichannel device"]
+pub const SND_PCM_CLASS_MULTI: _snd_pcm_class = 1;
+#[doc = " software modem device"]
+pub const SND_PCM_CLASS_MODEM: _snd_pcm_class = 2;
+#[doc = " digitizer device"]
+pub const SND_PCM_CLASS_DIGITIZER: _snd_pcm_class = 3;
+#[doc = " digitizer device"]
+pub const SND_PCM_CLASS_LAST: _snd_pcm_class = 3;
+#[doc = " PCM class"]
+pub type _snd_pcm_class = u32;
+#[doc = " PCM class"]
+pub use self::_snd_pcm_class as snd_pcm_class_t;
+#[doc = " subdevices are mixed together"]
+pub const SND_PCM_SUBCLASS_GENERIC_MIX: _snd_pcm_subclass = 0;
+#[doc = " multichannel subdevices are mixed together"]
+pub const SND_PCM_SUBCLASS_MULTI_MIX: _snd_pcm_subclass = 1;
+#[doc = " multichannel subdevices are mixed together"]
+pub const SND_PCM_SUBCLASS_LAST: _snd_pcm_subclass = 1;
+#[doc = " PCM subclass"]
+pub type _snd_pcm_subclass = u32;
+#[doc = " PCM subclass"]
+pub use self::_snd_pcm_subclass as snd_pcm_subclass_t;
+#[doc = " Playback stream"]
+pub const SND_PCM_STREAM_PLAYBACK: _snd_pcm_stream = 0;
+#[doc = " Capture stream"]
+pub const SND_PCM_STREAM_CAPTURE: _snd_pcm_stream = 1;
+#[doc = " Capture stream"]
+pub const SND_PCM_STREAM_LAST: _snd_pcm_stream = 1;
+#[doc = " PCM stream (direction)"]
+pub type _snd_pcm_stream = u32;
+#[doc = " PCM stream (direction)"]
+pub use self::_snd_pcm_stream as snd_pcm_stream_t;
+#[doc = " mmap access with simple interleaved channels"]
+pub const SND_PCM_ACCESS_MMAP_INTERLEAVED: _snd_pcm_access = 0;
+#[doc = " mmap access with simple non interleaved channels"]
+pub const SND_PCM_ACCESS_MMAP_NONINTERLEAVED: _snd_pcm_access = 1;
+#[doc = " mmap access with complex placement"]
+pub const SND_PCM_ACCESS_MMAP_COMPLEX: _snd_pcm_access = 2;
+#[doc = " snd_pcm_readi/snd_pcm_writei access"]
+pub const SND_PCM_ACCESS_RW_INTERLEAVED: _snd_pcm_access = 3;
+#[doc = " snd_pcm_readn/snd_pcm_writen access"]
+pub const SND_PCM_ACCESS_RW_NONINTERLEAVED: _snd_pcm_access = 4;
+#[doc = " snd_pcm_readn/snd_pcm_writen access"]
+pub const SND_PCM_ACCESS_LAST: _snd_pcm_access = 4;
+#[doc = " PCM access type"]
+pub type _snd_pcm_access = u32;
+#[doc = " PCM access type"]
+pub use self::_snd_pcm_access as snd_pcm_access_t;
+#[doc = " Unknown"]
+pub const SND_PCM_FORMAT_UNKNOWN: _snd_pcm_format = -1;
+#[doc = " Signed 8 bit"]
+pub const SND_PCM_FORMAT_S8: _snd_pcm_format = 0;
+#[doc = " Unsigned 8 bit"]
+pub const SND_PCM_FORMAT_U8: _snd_pcm_format = 1;
+#[doc = " Signed 16 bit Little Endian"]
+pub const SND_PCM_FORMAT_S16_LE: _snd_pcm_format = 2;
+#[doc = " Signed 16 bit Big Endian"]
+pub const SND_PCM_FORMAT_S16_BE: _snd_pcm_format = 3;
+#[doc = " Unsigned 16 bit Little Endian"]
+pub const SND_PCM_FORMAT_U16_LE: _snd_pcm_format = 4;
+#[doc = " Unsigned 16 bit Big Endian"]
+pub const SND_PCM_FORMAT_U16_BE: _snd_pcm_format = 5;
+#[doc = " Signed 24 bit Little Endian using low three bytes in 32-bit word"]
+pub const SND_PCM_FORMAT_S24_LE: _snd_pcm_format = 6;
+#[doc = " Signed 24 bit Big Endian using low three bytes in 32-bit word"]
+pub const SND_PCM_FORMAT_S24_BE: _snd_pcm_format = 7;
+#[doc = " Unsigned 24 bit Little Endian using low three bytes in 32-bit word"]
+pub const SND_PCM_FORMAT_U24_LE: _snd_pcm_format = 8;
+#[doc = " Unsigned 24 bit Big Endian using low three bytes in 32-bit word"]
+pub const SND_PCM_FORMAT_U24_BE: _snd_pcm_format = 9;
+#[doc = " Signed 32 bit Little Endian"]
+pub const SND_PCM_FORMAT_S32_LE: _snd_pcm_format = 10;
+#[doc = " Signed 32 bit Big Endian"]
+pub const SND_PCM_FORMAT_S32_BE: _snd_pcm_format = 11;
+#[doc = " Unsigned 32 bit Little Endian"]
+pub const SND_PCM_FORMAT_U32_LE: _snd_pcm_format = 12;
+#[doc = " Unsigned 32 bit Big Endian"]
+pub const SND_PCM_FORMAT_U32_BE: _snd_pcm_format = 13;
+#[doc = " Float 32 bit Little Endian, Range -1.0 to 1.0"]
+pub const SND_PCM_FORMAT_FLOAT_LE: _snd_pcm_format = 14;
+#[doc = " Float 32 bit Big Endian, Range -1.0 to 1.0"]
+pub const SND_PCM_FORMAT_FLOAT_BE: _snd_pcm_format = 15;
+#[doc = " Float 64 bit Little Endian, Range -1.0 to 1.0"]
+pub const SND_PCM_FORMAT_FLOAT64_LE: _snd_pcm_format = 16;
+#[doc = " Float 64 bit Big Endian, Range -1.0 to 1.0"]
+pub const SND_PCM_FORMAT_FLOAT64_BE: _snd_pcm_format = 17;
+#[doc = " IEC-958 Little Endian"]
+pub const SND_PCM_FORMAT_IEC958_SUBFRAME_LE: _snd_pcm_format = 18;
+#[doc = " IEC-958 Big Endian"]
+pub const SND_PCM_FORMAT_IEC958_SUBFRAME_BE: _snd_pcm_format = 19;
+#[doc = " Mu-Law"]
+pub const SND_PCM_FORMAT_MU_LAW: _snd_pcm_format = 20;
+#[doc = " A-Law"]
+pub const SND_PCM_FORMAT_A_LAW: _snd_pcm_format = 21;
+#[doc = " Ima-ADPCM"]
+pub const SND_PCM_FORMAT_IMA_ADPCM: _snd_pcm_format = 22;
+#[doc = " MPEG"]
+pub const SND_PCM_FORMAT_MPEG: _snd_pcm_format = 23;
+#[doc = " GSM"]
+pub const SND_PCM_FORMAT_GSM: _snd_pcm_format = 24;
+#[doc = " Signed 20bit Little Endian in 4bytes format, LSB justified"]
+pub const SND_PCM_FORMAT_S20_LE: _snd_pcm_format = 25;
+#[doc = " Signed 20bit Big Endian in 4bytes format, LSB justified"]
+pub const SND_PCM_FORMAT_S20_BE: _snd_pcm_format = 26;
+#[doc = " Unsigned 20bit Little Endian in 4bytes format, LSB justified"]
+pub const SND_PCM_FORMAT_U20_LE: _snd_pcm_format = 27;
+#[doc = " Unsigned 20bit Big Endian in 4bytes format, LSB justified"]
+pub const SND_PCM_FORMAT_U20_BE: _snd_pcm_format = 28;
+#[doc = " Special"]
+pub const SND_PCM_FORMAT_SPECIAL: _snd_pcm_format = 31;
+#[doc = " Signed 24bit Little Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_S24_3LE: _snd_pcm_format = 32;
+#[doc = " Signed 24bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_S24_3BE: _snd_pcm_format = 33;
+#[doc = " Unsigned 24bit Little Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_U24_3LE: _snd_pcm_format = 34;
+#[doc = " Unsigned 24bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_U24_3BE: _snd_pcm_format = 35;
+#[doc = " Signed 20bit Little Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_S20_3LE: _snd_pcm_format = 36;
+#[doc = " Signed 20bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_S20_3BE: _snd_pcm_format = 37;
+#[doc = " Unsigned 20bit Little Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_U20_3LE: _snd_pcm_format = 38;
+#[doc = " Unsigned 20bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_U20_3BE: _snd_pcm_format = 39;
+#[doc = " Signed 18bit Little Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_S18_3LE: _snd_pcm_format = 40;
+#[doc = " Signed 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_S18_3BE: _snd_pcm_format = 41;
+#[doc = " Unsigned 18bit Little Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_U18_3LE: _snd_pcm_format = 42;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_U18_3BE: _snd_pcm_format = 43;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_G723_24: _snd_pcm_format = 44;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_G723_24_1B: _snd_pcm_format = 45;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_G723_40: _snd_pcm_format = 46;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_G723_40_1B: _snd_pcm_format = 47;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_DSD_U8: _snd_pcm_format = 48;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_DSD_U16_LE: _snd_pcm_format = 49;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_DSD_U32_LE: _snd_pcm_format = 50;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_DSD_U16_BE: _snd_pcm_format = 51;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_DSD_U32_BE: _snd_pcm_format = 52;
+#[doc = " Unsigned 18bit Big Endian in 3bytes format"]
+pub const SND_PCM_FORMAT_LAST: _snd_pcm_format = 52;
+#[doc = " Signed 16 bit CPU endian"]
+pub const SND_PCM_FORMAT_S16: _snd_pcm_format = 2;
+#[doc = " Unsigned 16 bit CPU endian"]
+pub const SND_PCM_FORMAT_U16: _snd_pcm_format = 4;
+#[doc = " Signed 24 bit CPU endian"]
+pub const SND_PCM_FORMAT_S24: _snd_pcm_format = 6;
+#[doc = " Unsigned 24 bit CPU endian"]
+pub const SND_PCM_FORMAT_U24: _snd_pcm_format = 8;
+#[doc = " Signed 32 bit CPU endian"]
+pub const SND_PCM_FORMAT_S32: _snd_pcm_format = 10;
+#[doc = " Unsigned 32 bit CPU endian"]
+pub const SND_PCM_FORMAT_U32: _snd_pcm_format = 12;
+#[doc = " Float 32 bit CPU endian"]
+pub const SND_PCM_FORMAT_FLOAT: _snd_pcm_format = 14;
+#[doc = " Float 64 bit CPU endian"]
+pub const SND_PCM_FORMAT_FLOAT64: _snd_pcm_format = 16;
+#[doc = " IEC-958 CPU Endian"]
+pub const SND_PCM_FORMAT_IEC958_SUBFRAME: _snd_pcm_format = 18;
+#[doc = " Signed 20bit in 4bytes format, LSB justified, CPU Endian"]
+pub const SND_PCM_FORMAT_S20: _snd_pcm_format = 25;
+#[doc = " Unsigned 20bit in 4bytes format, LSB justified, CPU Endian"]
+pub const SND_PCM_FORMAT_U20: _snd_pcm_format = 27;
+#[doc = " PCM sample format"]
+pub type _snd_pcm_format = i32;
+#[doc = " PCM sample format"]
+pub use self::_snd_pcm_format as snd_pcm_format_t;
+#[doc = " Standard"]
+pub const SND_PCM_SUBFORMAT_STD: _snd_pcm_subformat = 0;
+#[doc = " Standard"]
+pub const SND_PCM_SUBFORMAT_LAST: _snd_pcm_subformat = 0;
+#[doc = " PCM sample subformat"]
+pub type _snd_pcm_subformat = u32;
+#[doc = " PCM sample subformat"]
+pub use self::_snd_pcm_subformat as snd_pcm_subformat_t;
+#[doc = " Open"]
+pub const SND_PCM_STATE_OPEN: _snd_pcm_state = 0;
+#[doc = " Setup installed"]
+pub const SND_PCM_STATE_SETUP: _snd_pcm_state = 1;
+#[doc = " Ready to start"]
+pub const SND_PCM_STATE_PREPARED: _snd_pcm_state = 2;
+#[doc = " Running"]
+pub const SND_PCM_STATE_RUNNING: _snd_pcm_state = 3;
+#[doc = " Stopped: underrun (playback) or overrun (capture) detected"]
+pub const SND_PCM_STATE_XRUN: _snd_pcm_state = 4;
+#[doc = " Draining: running (playback) or stopped (capture)"]
+pub const SND_PCM_STATE_DRAINING: _snd_pcm_state = 5;
+#[doc = " Paused"]
+pub const SND_PCM_STATE_PAUSED: _snd_pcm_state = 6;
+#[doc = " Hardware is suspended"]
+pub const SND_PCM_STATE_SUSPENDED: _snd_pcm_state = 7;
+#[doc = " Hardware is disconnected"]
+pub const SND_PCM_STATE_DISCONNECTED: _snd_pcm_state = 8;
+#[doc = " Hardware is disconnected"]
+pub const SND_PCM_STATE_LAST: _snd_pcm_state = 8;
+#[doc = " Private - used internally in the library - do not use"]
+pub const SND_PCM_STATE_PRIVATE1: _snd_pcm_state = 1024;
+#[doc = " PCM state"]
+pub type _snd_pcm_state = u32;
+#[doc = " PCM state"]
+pub use self::_snd_pcm_state as snd_pcm_state_t;
+#[doc = " Automatic start on data read/write"]
+pub const SND_PCM_START_DATA: _snd_pcm_start = 0;
+#[doc = " Explicit start"]
+pub const SND_PCM_START_EXPLICIT: _snd_pcm_start = 1;
+#[doc = " Explicit start"]
+pub const SND_PCM_START_LAST: _snd_pcm_start = 1;
+#[doc = " PCM start mode"]
+pub type _snd_pcm_start = u32;
+#[doc = " PCM start mode"]
+pub use self::_snd_pcm_start as snd_pcm_start_t;
+#[doc = " Xrun detection disabled"]
+pub const SND_PCM_XRUN_NONE: _snd_pcm_xrun = 0;
+#[doc = " Stop on xrun detection"]
+pub const SND_PCM_XRUN_STOP: _snd_pcm_xrun = 1;
+#[doc = " Stop on xrun detection"]
+pub const SND_PCM_XRUN_LAST: _snd_pcm_xrun = 1;
+#[doc = " PCM xrun mode"]
+pub type _snd_pcm_xrun = u32;
+#[doc = " PCM xrun mode"]
+pub use self::_snd_pcm_xrun as snd_pcm_xrun_t;
+#[doc = " No timestamp"]
+pub const SND_PCM_TSTAMP_NONE: _snd_pcm_tstamp = 0;
+#[doc = " Update timestamp at every hardware position update"]
+pub const SND_PCM_TSTAMP_ENABLE: _snd_pcm_tstamp = 1;
+#[doc = " Equivalent with #SND_PCM_TSTAMP_ENABLE,"]
+#[doc = " just for compatibility with older versions"]
+pub const SND_PCM_TSTAMP_MMAP: _snd_pcm_tstamp = 1;
+#[doc = " Equivalent with #SND_PCM_TSTAMP_ENABLE,"]
+#[doc = " just for compatibility with older versions"]
+pub const SND_PCM_TSTAMP_LAST: _snd_pcm_tstamp = 1;
+#[doc = " PCM timestamp mode"]
+pub type _snd_pcm_tstamp = u32;
+#[doc = " PCM timestamp mode"]
+pub use self::_snd_pcm_tstamp as snd_pcm_tstamp_t;
+#[doc = "< gettimeofday equivalent"]
+pub const SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY: _snd_pcm_tstamp_type = 0;
+#[doc = "< posix_clock_monotonic equivalent"]
+pub const SND_PCM_TSTAMP_TYPE_MONOTONIC: _snd_pcm_tstamp_type = 1;
+#[doc = "< monotonic_raw (no NTP)"]
+pub const SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW: _snd_pcm_tstamp_type = 2;
+pub const SND_PCM_TSTAMP_TYPE_LAST: _snd_pcm_tstamp_type = 2;
+pub type _snd_pcm_tstamp_type = u32;
+pub use self::_snd_pcm_tstamp_type as snd_pcm_tstamp_type_t;
+#[doc = " first definition for backwards compatibility only,"]
+#[doc = " maps to wallclock/link time for HDAudio playback and DEFAULT/DMA time for everything else"]
+pub const SND_PCM_AUDIO_TSTAMP_TYPE_COMPAT: _snd_pcm_audio_tstamp_type = 0;
+#[doc = "< DMA time, reported as per hw_ptr"]
+pub const SND_PCM_AUDIO_TSTAMP_TYPE_DEFAULT: _snd_pcm_audio_tstamp_type = 1;
+#[doc = "< link time reported by sample or wallclock counter, reset on startup"]
+pub const SND_PCM_AUDIO_TSTAMP_TYPE_LINK: _snd_pcm_audio_tstamp_type = 2;
+#[doc = "< link time reported by sample or wallclock counter, not reset on startup"]
+pub const SND_PCM_AUDIO_TSTAMP_TYPE_LINK_ABSOLUTE: _snd_pcm_audio_tstamp_type = 3;
+#[doc = "< link time estimated indirectly"]
+pub const SND_PCM_AUDIO_TSTAMP_TYPE_LINK_ESTIMATED: _snd_pcm_audio_tstamp_type = 4;
+#[doc = "< link time synchronized with system time"]
+pub const SND_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED: _snd_pcm_audio_tstamp_type = 5;
+pub const SND_PCM_AUDIO_TSTAMP_TYPE_LAST: _snd_pcm_audio_tstamp_type = 5;
+pub type _snd_pcm_audio_tstamp_type = u32;
+pub use self::_snd_pcm_audio_tstamp_type as snd_pcm_audio_tstamp_type_t;
+#[repr(C)]
+#[repr(align(4))]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_audio_tstamp_config {
+ pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
+ pub __bindgen_padding_0: [u8; 3usize],
+}
+impl _snd_pcm_audio_tstamp_config {
+ #[inline]
+ pub fn type_requested(&self) -> ::std::os::raw::c_uint {
+ unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u32) }
+ }
+ #[inline]
+ pub fn set_type_requested(&mut self, val: ::std::os::raw::c_uint) {
+ unsafe {
+ let val: u32 = ::std::mem::transmute(val);
+ self._bitfield_1.set(0usize, 4u8, val as u64)
+ }
+ }
+ #[inline]
+ pub fn report_delay(&self) -> ::std::os::raw::c_uint {
+ unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
+ }
+ #[inline]
+ pub fn set_report_delay(&mut self, val: ::std::os::raw::c_uint) {
+ unsafe {
+ let val: u32 = ::std::mem::transmute(val);
+ self._bitfield_1.set(4usize, 1u8, val as u64)
+ }
+ }
+ #[inline]
+ pub fn new_bitfield_1(
+ type_requested: ::std::os::raw::c_uint,
+ report_delay: ::std::os::raw::c_uint,
+ ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
+ let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
+ Default::default();
+ __bindgen_bitfield_unit.set(0usize, 4u8, {
+ let type_requested: u32 = unsafe { ::std::mem::transmute(type_requested) };
+ type_requested as u64
+ });
+ __bindgen_bitfield_unit.set(4usize, 1u8, {
+ let report_delay: u32 = unsafe { ::std::mem::transmute(report_delay) };
+ report_delay as u64
+ });
+ __bindgen_bitfield_unit
+ }
+}
+pub type snd_pcm_audio_tstamp_config_t = _snd_pcm_audio_tstamp_config;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_audio_tstamp_report {
+ pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
+ pub accuracy: ::std::os::raw::c_uint,
+}
+impl _snd_pcm_audio_tstamp_report {
+ #[inline]
+ pub fn valid(&self) -> ::std::os::raw::c_uint {
+ unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
+ }
+ #[inline]
+ pub fn set_valid(&mut self, val: ::std::os::raw::c_uint) {
+ unsafe {
+ let val: u32 = ::std::mem::transmute(val);
+ self._bitfield_1.set(0usize, 1u8, val as u64)
+ }
+ }
+ #[inline]
+ pub fn actual_type(&self) -> ::std::os::raw::c_uint {
+ unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 4u8) as u32) }
+ }
+ #[inline]
+ pub fn set_actual_type(&mut self, val: ::std::os::raw::c_uint) {
+ unsafe {
+ let val: u32 = ::std::mem::transmute(val);
+ self._bitfield_1.set(1usize, 4u8, val as u64)
+ }
+ }
+ #[inline]
+ pub fn accuracy_report(&self) -> ::std::os::raw::c_uint {
+ unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
+ }
+ #[inline]
+ pub fn set_accuracy_report(&mut self, val: ::std::os::raw::c_uint) {
+ unsafe {
+ let val: u32 = ::std::mem::transmute(val);
+ self._bitfield_1.set(5usize, 1u8, val as u64)
+ }
+ }
+ #[inline]
+ pub fn new_bitfield_1(
+ valid: ::std::os::raw::c_uint,
+ actual_type: ::std::os::raw::c_uint,
+ accuracy_report: ::std::os::raw::c_uint,
+ ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
+ let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
+ Default::default();
+ __bindgen_bitfield_unit.set(0usize, 1u8, {
+ let valid: u32 = unsafe { ::std::mem::transmute(valid) };
+ valid as u64
+ });
+ __bindgen_bitfield_unit.set(1usize, 4u8, {
+ let actual_type: u32 = unsafe { ::std::mem::transmute(actual_type) };
+ actual_type as u64
+ });
+ __bindgen_bitfield_unit.set(5usize, 1u8, {
+ let accuracy_report: u32 = unsafe { ::std::mem::transmute(accuracy_report) };
+ accuracy_report as u64
+ });
+ __bindgen_bitfield_unit
+ }
+}
+pub type snd_pcm_audio_tstamp_report_t = _snd_pcm_audio_tstamp_report;
+#[doc = " Unsigned frames quantity"]
+pub type snd_pcm_uframes_t = ::std::os::raw::c_ulong;
+#[doc = " Signed frames quantity"]
+pub type snd_pcm_sframes_t = ::std::os::raw::c_long;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm {
+ _unused: [u8; 0],
+}
+#[doc = " PCM handle"]
+pub type snd_pcm_t = _snd_pcm;
+#[doc = " Kernel level PCM"]
+pub const SND_PCM_TYPE_HW: _snd_pcm_type = 0;
+#[doc = " Hooked PCM"]
+pub const SND_PCM_TYPE_HOOKS: _snd_pcm_type = 1;
+#[doc = " One or more linked PCM with exclusive access to selected"]
+#[doc = "channels"]
+pub const SND_PCM_TYPE_MULTI: _snd_pcm_type = 2;
+#[doc = " File writing plugin"]
+pub const SND_PCM_TYPE_FILE: _snd_pcm_type = 3;
+#[doc = " Null endpoint PCM"]
+pub const SND_PCM_TYPE_NULL: _snd_pcm_type = 4;
+#[doc = " Shared memory client PCM"]
+pub const SND_PCM_TYPE_SHM: _snd_pcm_type = 5;
+#[doc = " INET client PCM (not yet implemented)"]
+pub const SND_PCM_TYPE_INET: _snd_pcm_type = 6;
+#[doc = " Copying plugin"]
+pub const SND_PCM_TYPE_COPY: _snd_pcm_type = 7;
+#[doc = " Linear format conversion PCM"]
+pub const SND_PCM_TYPE_LINEAR: _snd_pcm_type = 8;
+#[doc = " A-Law format conversion PCM"]
+pub const SND_PCM_TYPE_ALAW: _snd_pcm_type = 9;
+#[doc = " Mu-Law format conversion PCM"]
+pub const SND_PCM_TYPE_MULAW: _snd_pcm_type = 10;
+#[doc = " IMA-ADPCM format conversion PCM"]
+pub const SND_PCM_TYPE_ADPCM: _snd_pcm_type = 11;
+#[doc = " Rate conversion PCM"]
+pub const SND_PCM_TYPE_RATE: _snd_pcm_type = 12;
+#[doc = " Attenuated static route PCM"]
+pub const SND_PCM_TYPE_ROUTE: _snd_pcm_type = 13;
+#[doc = " Format adjusted PCM"]
+pub const SND_PCM_TYPE_PLUG: _snd_pcm_type = 14;
+#[doc = " Sharing PCM"]
+pub const SND_PCM_TYPE_SHARE: _snd_pcm_type = 15;
+#[doc = " Meter plugin"]
+pub const SND_PCM_TYPE_METER: _snd_pcm_type = 16;
+#[doc = " Mixing PCM"]
+pub const SND_PCM_TYPE_MIX: _snd_pcm_type = 17;
+#[doc = " Attenuated dynamic route PCM (not yet implemented)"]
+pub const SND_PCM_TYPE_DROUTE: _snd_pcm_type = 18;
+#[doc = " Loopback server plugin (not yet implemented)"]
+pub const SND_PCM_TYPE_LBSERVER: _snd_pcm_type = 19;
+#[doc = " Linear Integer <-> Linear Float format conversion PCM"]
+pub const SND_PCM_TYPE_LINEAR_FLOAT: _snd_pcm_type = 20;
+#[doc = " LADSPA integration plugin"]
+pub const SND_PCM_TYPE_LADSPA: _snd_pcm_type = 21;
+#[doc = " Direct Mixing plugin"]
+pub const SND_PCM_TYPE_DMIX: _snd_pcm_type = 22;
+#[doc = " Jack Audio Connection Kit plugin"]
+pub const SND_PCM_TYPE_JACK: _snd_pcm_type = 23;
+#[doc = " Direct Snooping plugin"]
+pub const SND_PCM_TYPE_DSNOOP: _snd_pcm_type = 24;
+#[doc = " Direct Sharing plugin"]
+pub const SND_PCM_TYPE_DSHARE: _snd_pcm_type = 25;
+#[doc = " IEC958 subframe plugin"]
+pub const SND_PCM_TYPE_IEC958: _snd_pcm_type = 26;
+#[doc = " Soft volume plugin"]
+pub const SND_PCM_TYPE_SOFTVOL: _snd_pcm_type = 27;
+#[doc = " External I/O plugin"]
+pub const SND_PCM_TYPE_IOPLUG: _snd_pcm_type = 28;
+#[doc = " External filter plugin"]
+pub const SND_PCM_TYPE_EXTPLUG: _snd_pcm_type = 29;
+#[doc = " Mmap-emulation plugin"]
+pub const SND_PCM_TYPE_MMAP_EMUL: _snd_pcm_type = 30;
+#[doc = " Mmap-emulation plugin"]
+pub const SND_PCM_TYPE_LAST: _snd_pcm_type = 30;
+#[doc = " PCM type"]
+pub type _snd_pcm_type = u32;
+#[doc = " PCM type"]
+pub use self::_snd_pcm_type as snd_pcm_type_t;
+#[doc = " PCM area specification"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_channel_area {
+ #[doc = " base address of channel samples"]
+ pub addr: *mut ::std::os::raw::c_void,
+ #[doc = " offset to first sample in bits"]
+ pub first: ::std::os::raw::c_uint,
+ #[doc = " samples distance in bits"]
+ pub step: ::std::os::raw::c_uint,
+}
+#[doc = " PCM area specification"]
+pub type snd_pcm_channel_area_t = _snd_pcm_channel_area;
+#[doc = " PCM synchronization ID"]
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union _snd_pcm_sync_id {
+ #[doc = " 8-bit ID"]
+ pub id: [::std::os::raw::c_uchar; 16usize],
+ #[doc = " 16-bit ID"]
+ pub id16: [::std::os::raw::c_ushort; 8usize],
+ #[doc = " 32-bit ID"]
+ pub id32: [::std::os::raw::c_uint; 4usize],
+ _bindgen_union_align: [u32; 4usize],
+}
+#[doc = " PCM synchronization ID"]
+pub type snd_pcm_sync_id_t = _snd_pcm_sync_id;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_scope {
+ _unused: [u8; 0],
+}
+#[doc = " #SND_PCM_TYPE_METER scope handle"]
+pub type snd_pcm_scope_t = _snd_pcm_scope;
+extern "C" {
+ pub fn snd_pcm_open(
+ pcm: *mut *mut snd_pcm_t,
+ name: *const ::std::os::raw::c_char,
+ stream: snd_pcm_stream_t,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_open_lconf(
+ pcm: *mut *mut snd_pcm_t,
+ name: *const ::std::os::raw::c_char,
+ stream: snd_pcm_stream_t,
+ mode: ::std::os::raw::c_int,
+ lconf: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_open_fallback(
+ pcm: *mut *mut snd_pcm_t,
+ root: *mut snd_config_t,
+ name: *const ::std::os::raw::c_char,
+ orig_name: *const ::std::os::raw::c_char,
+ stream: snd_pcm_stream_t,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_close(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_name(pcm: *mut snd_pcm_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_type(pcm: *mut snd_pcm_t) -> snd_pcm_type_t;
+}
+extern "C" {
+ pub fn snd_pcm_stream(pcm: *mut snd_pcm_t) -> snd_pcm_stream_t;
+}
+extern "C" {
+ pub fn snd_pcm_poll_descriptors_count(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_poll_descriptors(
+ pcm: *mut snd_pcm_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_poll_descriptors_revents(
+ pcm: *mut snd_pcm_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revents: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_nonblock(
+ pcm: *mut snd_pcm_t,
+ nonblock: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_add_pcm_handler(
+ handler: *mut *mut snd_async_handler_t,
+ pcm: *mut snd_pcm_t,
+ callback: snd_async_callback_t,
+ private_data: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_handler_get_pcm(handler: *mut snd_async_handler_t) -> *mut snd_pcm_t;
+}
+extern "C" {
+ pub fn snd_pcm_info(pcm: *mut snd_pcm_t, info: *mut snd_pcm_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_current(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_free(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_current(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_prepare(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_reset(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_status(
+ pcm: *mut snd_pcm_t,
+ status: *mut snd_pcm_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_start(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_drop(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_drain(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_pause(
+ pcm: *mut snd_pcm_t,
+ enable: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_state(pcm: *mut snd_pcm_t) -> snd_pcm_state_t;
+}
+extern "C" {
+ pub fn snd_pcm_hwsync(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_delay(
+ pcm: *mut snd_pcm_t,
+ delayp: *mut snd_pcm_sframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_resume(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_htimestamp(
+ pcm: *mut snd_pcm_t,
+ avail: *mut snd_pcm_uframes_t,
+ tstamp: *mut snd_htimestamp_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_avail(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_avail_update(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_avail_delay(
+ pcm: *mut snd_pcm_t,
+ availp: *mut snd_pcm_sframes_t,
+ delayp: *mut snd_pcm_sframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_rewindable(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_rewind(pcm: *mut snd_pcm_t, frames: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_forwardable(pcm: *mut snd_pcm_t) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_forward(pcm: *mut snd_pcm_t, frames: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_writei(
+ pcm: *mut snd_pcm_t,
+ buffer: *const ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_readi(
+ pcm: *mut snd_pcm_t,
+ buffer: *mut ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_writen(
+ pcm: *mut snd_pcm_t,
+ bufs: *mut *mut ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_readn(
+ pcm: *mut snd_pcm_t,
+ bufs: *mut *mut ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_wait(
+ pcm: *mut snd_pcm_t,
+ timeout: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_link(pcm1: *mut snd_pcm_t, pcm2: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_unlink(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_int;
+}
+#[doc = "< unspecified channel position"]
+pub const SND_CHMAP_TYPE_NONE: snd_pcm_chmap_type = 0;
+#[doc = "< fixed channel position"]
+pub const SND_CHMAP_TYPE_FIXED: snd_pcm_chmap_type = 1;
+#[doc = "< freely swappable channel position"]
+pub const SND_CHMAP_TYPE_VAR: snd_pcm_chmap_type = 2;
+#[doc = "< pair-wise swappable channel position"]
+pub const SND_CHMAP_TYPE_PAIRED: snd_pcm_chmap_type = 3;
+#[doc = "< last entry"]
+pub const SND_CHMAP_TYPE_LAST: snd_pcm_chmap_type = 3;
+#[doc = " channel map list type"]
+pub type snd_pcm_chmap_type = u32;
+#[doc = "< unspecified"]
+pub const SND_CHMAP_UNKNOWN: snd_pcm_chmap_position = 0;
+#[doc = "< N/A, silent"]
+pub const SND_CHMAP_NA: snd_pcm_chmap_position = 1;
+#[doc = "< mono stream"]
+pub const SND_CHMAP_MONO: snd_pcm_chmap_position = 2;
+#[doc = "< front left"]
+pub const SND_CHMAP_FL: snd_pcm_chmap_position = 3;
+#[doc = "< front right"]
+pub const SND_CHMAP_FR: snd_pcm_chmap_position = 4;
+#[doc = "< rear left"]
+pub const SND_CHMAP_RL: snd_pcm_chmap_position = 5;
+#[doc = "< rear right"]
+pub const SND_CHMAP_RR: snd_pcm_chmap_position = 6;
+#[doc = "< front center"]
+pub const SND_CHMAP_FC: snd_pcm_chmap_position = 7;
+#[doc = "< LFE"]
+pub const SND_CHMAP_LFE: snd_pcm_chmap_position = 8;
+#[doc = "< side left"]
+pub const SND_CHMAP_SL: snd_pcm_chmap_position = 9;
+#[doc = "< side right"]
+pub const SND_CHMAP_SR: snd_pcm_chmap_position = 10;
+#[doc = "< rear center"]
+pub const SND_CHMAP_RC: snd_pcm_chmap_position = 11;
+#[doc = "< front left center"]
+pub const SND_CHMAP_FLC: snd_pcm_chmap_position = 12;
+#[doc = "< front right center"]
+pub const SND_CHMAP_FRC: snd_pcm_chmap_position = 13;
+#[doc = "< rear left center"]
+pub const SND_CHMAP_RLC: snd_pcm_chmap_position = 14;
+#[doc = "< rear right center"]
+pub const SND_CHMAP_RRC: snd_pcm_chmap_position = 15;
+#[doc = "< front left wide"]
+pub const SND_CHMAP_FLW: snd_pcm_chmap_position = 16;
+#[doc = "< front right wide"]
+pub const SND_CHMAP_FRW: snd_pcm_chmap_position = 17;
+#[doc = "< front left high"]
+pub const SND_CHMAP_FLH: snd_pcm_chmap_position = 18;
+#[doc = "< front center high"]
+pub const SND_CHMAP_FCH: snd_pcm_chmap_position = 19;
+#[doc = "< front right high"]
+pub const SND_CHMAP_FRH: snd_pcm_chmap_position = 20;
+#[doc = "< top center"]
+pub const SND_CHMAP_TC: snd_pcm_chmap_position = 21;
+#[doc = "< top front left"]
+pub const SND_CHMAP_TFL: snd_pcm_chmap_position = 22;
+#[doc = "< top front right"]
+pub const SND_CHMAP_TFR: snd_pcm_chmap_position = 23;
+#[doc = "< top front center"]
+pub const SND_CHMAP_TFC: snd_pcm_chmap_position = 24;
+#[doc = "< top rear left"]
+pub const SND_CHMAP_TRL: snd_pcm_chmap_position = 25;
+#[doc = "< top rear right"]
+pub const SND_CHMAP_TRR: snd_pcm_chmap_position = 26;
+#[doc = "< top rear center"]
+pub const SND_CHMAP_TRC: snd_pcm_chmap_position = 27;
+#[doc = "< top front left center"]
+pub const SND_CHMAP_TFLC: snd_pcm_chmap_position = 28;
+#[doc = "< top front right center"]
+pub const SND_CHMAP_TFRC: snd_pcm_chmap_position = 29;
+#[doc = "< top side left"]
+pub const SND_CHMAP_TSL: snd_pcm_chmap_position = 30;
+#[doc = "< top side right"]
+pub const SND_CHMAP_TSR: snd_pcm_chmap_position = 31;
+#[doc = "< left LFE"]
+pub const SND_CHMAP_LLFE: snd_pcm_chmap_position = 32;
+#[doc = "< right LFE"]
+pub const SND_CHMAP_RLFE: snd_pcm_chmap_position = 33;
+#[doc = "< bottom center"]
+pub const SND_CHMAP_BC: snd_pcm_chmap_position = 34;
+#[doc = "< bottom left center"]
+pub const SND_CHMAP_BLC: snd_pcm_chmap_position = 35;
+#[doc = "< bottom right center"]
+pub const SND_CHMAP_BRC: snd_pcm_chmap_position = 36;
+pub const SND_CHMAP_LAST: snd_pcm_chmap_position = 36;
+#[doc = " channel positions"]
+pub type snd_pcm_chmap_position = u32;
+#[doc = " the channel map header"]
+#[repr(C)]
+#[derive(Debug)]
+pub struct snd_pcm_chmap {
+ #[doc = "< number of channels"]
+ pub channels: ::std::os::raw::c_uint,
+ #[doc = "< channel position array"]
+ pub pos: __IncompleteArrayField<::std::os::raw::c_uint>,
+}
+#[doc = " the channel map header"]
+pub type snd_pcm_chmap_t = snd_pcm_chmap;
+#[doc = " the header of array items returned from snd_pcm_query_chmaps()"]
+#[repr(C)]
+#[derive(Debug)]
+pub struct snd_pcm_chmap_query {
+ #[doc = "< channel map type"]
+ pub type_: snd_pcm_chmap_type,
+ #[doc = "< available channel map"]
+ pub map: snd_pcm_chmap_t,
+}
+#[doc = " the header of array items returned from snd_pcm_query_chmaps()"]
+pub type snd_pcm_chmap_query_t = snd_pcm_chmap_query;
+extern "C" {
+ pub fn snd_pcm_query_chmaps(pcm: *mut snd_pcm_t) -> *mut *mut snd_pcm_chmap_query_t;
+}
+extern "C" {
+ pub fn snd_pcm_query_chmaps_from_hw(
+ card: ::std::os::raw::c_int,
+ dev: ::std::os::raw::c_int,
+ subdev: ::std::os::raw::c_int,
+ stream: snd_pcm_stream_t,
+ ) -> *mut *mut snd_pcm_chmap_query_t;
+}
+extern "C" {
+ pub fn snd_pcm_free_chmaps(maps: *mut *mut snd_pcm_chmap_query_t);
+}
+extern "C" {
+ pub fn snd_pcm_get_chmap(pcm: *mut snd_pcm_t) -> *mut snd_pcm_chmap_t;
+}
+extern "C" {
+ pub fn snd_pcm_set_chmap(
+ pcm: *mut snd_pcm_t,
+ map: *const snd_pcm_chmap_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_chmap_type_name(val: snd_pcm_chmap_type) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_chmap_name(val: snd_pcm_chmap_position) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_chmap_long_name(val: snd_pcm_chmap_position) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_chmap_print(
+ map: *const snd_pcm_chmap_t,
+ maxlen: usize,
+ buf: *mut ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_chmap_from_string(str: *const ::std::os::raw::c_char) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_pcm_chmap_parse_string(str: *const ::std::os::raw::c_char) -> *mut snd_pcm_chmap_t;
+}
+extern "C" {
+ pub fn snd_pcm_recover(
+ pcm: *mut snd_pcm_t,
+ err: ::std::os::raw::c_int,
+ silent: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_set_params(
+ pcm: *mut snd_pcm_t,
+ format: snd_pcm_format_t,
+ access: snd_pcm_access_t,
+ channels: ::std::os::raw::c_uint,
+ rate: ::std::os::raw::c_uint,
+ soft_resample: ::std::os::raw::c_int,
+ latency: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_get_params(
+ pcm: *mut snd_pcm_t,
+ buffer_size: *mut snd_pcm_uframes_t,
+ period_size: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Info Stream Information"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_pcm_info_malloc(ptr: *mut *mut snd_pcm_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_info_free(obj: *mut snd_pcm_info_t);
+}
+extern "C" {
+ pub fn snd_pcm_info_copy(dst: *mut snd_pcm_info_t, src: *const snd_pcm_info_t);
+}
+extern "C" {
+ pub fn snd_pcm_info_get_device(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_subdevice(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_stream(obj: *const snd_pcm_info_t) -> snd_pcm_stream_t;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_card(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_id(obj: *const snd_pcm_info_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_name(obj: *const snd_pcm_info_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_subdevice_name(
+ obj: *const snd_pcm_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_class(obj: *const snd_pcm_info_t) -> snd_pcm_class_t;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_subclass(obj: *const snd_pcm_info_t) -> snd_pcm_subclass_t;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_subdevices_count(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_subdevices_avail(obj: *const snd_pcm_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_pcm_info_get_sync(obj: *const snd_pcm_info_t) -> snd_pcm_sync_id_t;
+}
+extern "C" {
+ pub fn snd_pcm_info_set_device(obj: *mut snd_pcm_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_pcm_info_set_subdevice(obj: *mut snd_pcm_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_pcm_info_set_stream(obj: *mut snd_pcm_info_t, val: snd_pcm_stream_t);
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_HW_Params Hardware Parameters"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_hw_params_any(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_can_mmap_sample_resolution(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_is_double(params: *const snd_pcm_hw_params_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_is_batch(params: *const snd_pcm_hw_params_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_is_block_transfer(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_is_monotonic(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_can_overrange(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_can_pause(params: *const snd_pcm_hw_params_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_can_resume(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_is_half_duplex(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_is_joint_duplex(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_can_sync_start(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_can_disable_period_wakeup(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_supports_audio_wallclock_ts(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_supports_audio_ts_type(
+ params: *const snd_pcm_hw_params_t,
+ type_: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_rate_numden(
+ params: *const snd_pcm_hw_params_t,
+ rate_num: *mut ::std::os::raw::c_uint,
+ rate_den: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_sbits(params: *const snd_pcm_hw_params_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_fifo_size(
+ params: *const snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_malloc(ptr: *mut *mut snd_pcm_hw_params_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_free(obj: *mut snd_pcm_hw_params_t);
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_copy(dst: *mut snd_pcm_hw_params_t, src: *const snd_pcm_hw_params_t);
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_access(
+ params: *const snd_pcm_hw_params_t,
+ _access: *mut snd_pcm_access_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_access(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ _access: snd_pcm_access_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_access(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ _access: snd_pcm_access_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_access_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ _access: *mut snd_pcm_access_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_access_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ _access: *mut snd_pcm_access_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_access_mask(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ mask: *mut snd_pcm_access_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_access_mask(
+ params: *mut snd_pcm_hw_params_t,
+ mask: *mut snd_pcm_access_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_format(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_format(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_format(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_format_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ format: *mut snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_format_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ format: *mut snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_format_mask(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ mask: *mut snd_pcm_format_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_format_mask(
+ params: *mut snd_pcm_hw_params_t,
+ mask: *mut snd_pcm_format_mask_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_subformat(
+ params: *const snd_pcm_hw_params_t,
+ subformat: *mut snd_pcm_subformat_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_subformat(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ subformat: snd_pcm_subformat_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_subformat(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ subformat: snd_pcm_subformat_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_subformat_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ subformat: *mut snd_pcm_subformat_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_subformat_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ subformat: *mut snd_pcm_subformat_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_subformat_mask(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ mask: *mut snd_pcm_subformat_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_subformat_mask(
+ params: *mut snd_pcm_hw_params_t,
+ mask: *mut snd_pcm_subformat_mask_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_channels(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_channels_min(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_channels_max(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_channels(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_channels(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_channels_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_channels_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_channels_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut ::std::os::raw::c_uint,
+ max: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_channels_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_channels_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_channels_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_rate(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_rate_min(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_rate_max(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_rate(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut ::std::os::raw::c_uint,
+ mindir: *mut ::std::os::raw::c_int,
+ max: *mut ::std::os::raw::c_uint,
+ maxdir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_rate_resample(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_rate_resample(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_export_buffer(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_export_buffer(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_wakeup(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_period_wakeup(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_period_time(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_period_time_min(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_period_time_max(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_period_time(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_time(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_time_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_time_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_time_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut ::std::os::raw::c_uint,
+ mindir: *mut ::std::os::raw::c_int,
+ max: *mut ::std::os::raw::c_uint,
+ maxdir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_time_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_time_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_time_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_period_size(
+ params: *const snd_pcm_hw_params_t,
+ frames: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_period_size_min(
+ params: *const snd_pcm_hw_params_t,
+ frames: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_period_size_max(
+ params: *const snd_pcm_hw_params_t,
+ frames: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_period_size(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: snd_pcm_uframes_t,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: snd_pcm_uframes_t,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut snd_pcm_uframes_t,
+ mindir: *mut ::std::os::raw::c_int,
+ max: *mut snd_pcm_uframes_t,
+ maxdir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_period_size_integer(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_periods(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_periods_min(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_periods_max(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_periods(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut ::std::os::raw::c_uint,
+ mindir: *mut ::std::os::raw::c_int,
+ max: *mut ::std::os::raw::c_uint,
+ maxdir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_periods_integer(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_buffer_time(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_buffer_time_min(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_buffer_time_max(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_buffer_time(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_time(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_time_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_time_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_time_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut ::std::os::raw::c_uint,
+ mindir: *mut ::std::os::raw::c_int,
+ max: *mut ::std::os::raw::c_uint,
+ maxdir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_time_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_time_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_time_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_buffer_size(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_buffer_size_min(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_buffer_size_max(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_buffer_size(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_size(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_size_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_size_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_size_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut snd_pcm_uframes_t,
+ max: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_size_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_size_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_buffer_size_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_min_align(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_SW_Params Software Parameters"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_sw_params_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_malloc(ptr: *mut *mut snd_pcm_sw_params_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_free(obj: *mut snd_pcm_sw_params_t);
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_copy(dst: *mut snd_pcm_sw_params_t, src: *const snd_pcm_sw_params_t);
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_boundary(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_tstamp_mode(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_tstamp_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_tstamp_mode(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_tstamp_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_tstamp_type(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_tstamp_type_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_tstamp_type(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_tstamp_type_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_avail_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_avail_min(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_period_event(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_period_event(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_start_threshold(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_start_threshold(
+ paramsm: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_stop_threshold(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_stop_threshold(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_silence_threshold(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_silence_threshold(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_silence_size(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_silence_size(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Access Access Mask Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_access_mask_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_malloc(
+ ptr: *mut *mut snd_pcm_access_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_free(obj: *mut snd_pcm_access_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_copy(
+ dst: *mut snd_pcm_access_mask_t,
+ src: *const snd_pcm_access_mask_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_none(mask: *mut snd_pcm_access_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_any(mask: *mut snd_pcm_access_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_test(
+ mask: *const snd_pcm_access_mask_t,
+ val: snd_pcm_access_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_empty(mask: *const snd_pcm_access_mask_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_set(mask: *mut snd_pcm_access_mask_t, val: snd_pcm_access_t);
+}
+extern "C" {
+ pub fn snd_pcm_access_mask_reset(mask: *mut snd_pcm_access_mask_t, val: snd_pcm_access_t);
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Format Format Mask Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_format_mask_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_malloc(
+ ptr: *mut *mut snd_pcm_format_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_free(obj: *mut snd_pcm_format_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_copy(
+ dst: *mut snd_pcm_format_mask_t,
+ src: *const snd_pcm_format_mask_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_none(mask: *mut snd_pcm_format_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_any(mask: *mut snd_pcm_format_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_test(
+ mask: *const snd_pcm_format_mask_t,
+ val: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_empty(mask: *const snd_pcm_format_mask_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_set(mask: *mut snd_pcm_format_mask_t, val: snd_pcm_format_t);
+}
+extern "C" {
+ pub fn snd_pcm_format_mask_reset(mask: *mut snd_pcm_format_mask_t, val: snd_pcm_format_t);
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_SubFormat Subformat Mask Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_subformat_mask_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_malloc(
+ ptr: *mut *mut snd_pcm_subformat_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_free(obj: *mut snd_pcm_subformat_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_copy(
+ dst: *mut snd_pcm_subformat_mask_t,
+ src: *const snd_pcm_subformat_mask_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_none(mask: *mut snd_pcm_subformat_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_any(mask: *mut snd_pcm_subformat_mask_t);
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_test(
+ mask: *const snd_pcm_subformat_mask_t,
+ val: snd_pcm_subformat_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_empty(
+ mask: *const snd_pcm_subformat_mask_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_set(
+ mask: *mut snd_pcm_subformat_mask_t,
+ val: snd_pcm_subformat_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_subformat_mask_reset(
+ mask: *mut snd_pcm_subformat_mask_t,
+ val: snd_pcm_subformat_t,
+ );
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Status Status Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_status_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_pcm_status_malloc(ptr: *mut *mut snd_pcm_status_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_status_free(obj: *mut snd_pcm_status_t);
+}
+extern "C" {
+ pub fn snd_pcm_status_copy(dst: *mut snd_pcm_status_t, src: *const snd_pcm_status_t);
+}
+extern "C" {
+ pub fn snd_pcm_status_get_state(obj: *const snd_pcm_status_t) -> snd_pcm_state_t;
+}
+extern "C" {
+ pub fn snd_pcm_status_get_trigger_tstamp(
+ obj: *const snd_pcm_status_t,
+ ptr: *mut snd_timestamp_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_status_get_trigger_htstamp(
+ obj: *const snd_pcm_status_t,
+ ptr: *mut snd_htimestamp_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_status_get_tstamp(obj: *const snd_pcm_status_t, ptr: *mut snd_timestamp_t);
+}
+extern "C" {
+ pub fn snd_pcm_status_get_htstamp(obj: *const snd_pcm_status_t, ptr: *mut snd_htimestamp_t);
+}
+extern "C" {
+ pub fn snd_pcm_status_get_audio_htstamp(
+ obj: *const snd_pcm_status_t,
+ ptr: *mut snd_htimestamp_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_status_get_driver_htstamp(
+ obj: *const snd_pcm_status_t,
+ ptr: *mut snd_htimestamp_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_status_get_audio_htstamp_report(
+ obj: *const snd_pcm_status_t,
+ audio_tstamp_report: *mut snd_pcm_audio_tstamp_report_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_status_set_audio_htstamp_config(
+ obj: *mut snd_pcm_status_t,
+ audio_tstamp_config: *mut snd_pcm_audio_tstamp_config_t,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_status_get_delay(obj: *const snd_pcm_status_t) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_status_get_avail(obj: *const snd_pcm_status_t) -> snd_pcm_uframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_status_get_avail_max(obj: *const snd_pcm_status_t) -> snd_pcm_uframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_status_get_overrange(obj: *const snd_pcm_status_t) -> snd_pcm_uframes_t;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Description Description Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_type_name(type_: snd_pcm_type_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_stream_name(stream: snd_pcm_stream_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_access_name(_access: snd_pcm_access_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_format_name(format: snd_pcm_format_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_format_description(format: snd_pcm_format_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_subformat_name(subformat: snd_pcm_subformat_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_subformat_description(
+ subformat: snd_pcm_subformat_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_format_value(name: *const ::std::os::raw::c_char) -> snd_pcm_format_t;
+}
+extern "C" {
+ pub fn snd_pcm_tstamp_mode_name(mode: snd_pcm_tstamp_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_state_name(state: snd_pcm_state_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Dump Debug Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_dump(pcm: *mut snd_pcm_t, out: *mut snd_output_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_dump_hw_setup(
+ pcm: *mut snd_pcm_t,
+ out: *mut snd_output_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_dump_sw_setup(
+ pcm: *mut snd_pcm_t,
+ out: *mut snd_output_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_dump_setup(pcm: *mut snd_pcm_t, out: *mut snd_output_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_dump(
+ params: *mut snd_pcm_hw_params_t,
+ out: *mut snd_output_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_dump(
+ params: *mut snd_pcm_sw_params_t,
+ out: *mut snd_output_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_status_dump(
+ status: *mut snd_pcm_status_t,
+ out: *mut snd_output_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Direct Direct Access (MMAP) Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_mmap_begin(
+ pcm: *mut snd_pcm_t,
+ areas: *mut *const snd_pcm_channel_area_t,
+ offset: *mut snd_pcm_uframes_t,
+ frames: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_mmap_commit(
+ pcm: *mut snd_pcm_t,
+ offset: snd_pcm_uframes_t,
+ frames: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_mmap_writei(
+ pcm: *mut snd_pcm_t,
+ buffer: *const ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_mmap_readi(
+ pcm: *mut snd_pcm_t,
+ buffer: *mut ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_mmap_writen(
+ pcm: *mut snd_pcm_t,
+ bufs: *mut *mut ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_mmap_readn(
+ pcm: *mut snd_pcm_t,
+ bufs: *mut *mut ::std::os::raw::c_void,
+ size: snd_pcm_uframes_t,
+ ) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Helpers Helper Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_format_signed(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_unsigned(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_linear(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_float(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_little_endian(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_big_endian(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_cpu_endian(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_width(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_format_physical_width(format: snd_pcm_format_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_build_linear_format(
+ width: ::std::os::raw::c_int,
+ pwidth: ::std::os::raw::c_int,
+ unsignd: ::std::os::raw::c_int,
+ big_endian: ::std::os::raw::c_int,
+ ) -> snd_pcm_format_t;
+}
+extern "C" {
+ pub fn snd_pcm_format_size(format: snd_pcm_format_t, samples: usize) -> isize;
+}
+extern "C" {
+ pub fn snd_pcm_format_silence(format: snd_pcm_format_t) -> u8;
+}
+extern "C" {
+ pub fn snd_pcm_format_silence_16(format: snd_pcm_format_t) -> u16;
+}
+extern "C" {
+ pub fn snd_pcm_format_silence_32(format: snd_pcm_format_t) -> u32;
+}
+extern "C" {
+ pub fn snd_pcm_format_silence_64(format: snd_pcm_format_t) -> u64;
+}
+extern "C" {
+ pub fn snd_pcm_format_set_silence(
+ format: snd_pcm_format_t,
+ buf: *mut ::std::os::raw::c_void,
+ samples: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_bytes_to_frames(pcm: *mut snd_pcm_t, bytes: isize) -> snd_pcm_sframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_frames_to_bytes(pcm: *mut snd_pcm_t, frames: snd_pcm_sframes_t) -> isize;
+}
+extern "C" {
+ pub fn snd_pcm_bytes_to_samples(pcm: *mut snd_pcm_t, bytes: isize) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_pcm_samples_to_bytes(pcm: *mut snd_pcm_t, samples: ::std::os::raw::c_long) -> isize;
+}
+extern "C" {
+ pub fn snd_pcm_area_silence(
+ dst_channel: *const snd_pcm_channel_area_t,
+ dst_offset: snd_pcm_uframes_t,
+ samples: ::std::os::raw::c_uint,
+ format: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_areas_silence(
+ dst_channels: *const snd_pcm_channel_area_t,
+ dst_offset: snd_pcm_uframes_t,
+ channels: ::std::os::raw::c_uint,
+ frames: snd_pcm_uframes_t,
+ format: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_area_copy(
+ dst_channel: *const snd_pcm_channel_area_t,
+ dst_offset: snd_pcm_uframes_t,
+ src_channel: *const snd_pcm_channel_area_t,
+ src_offset: snd_pcm_uframes_t,
+ samples: ::std::os::raw::c_uint,
+ format: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_areas_copy(
+ dst_channels: *const snd_pcm_channel_area_t,
+ dst_offset: snd_pcm_uframes_t,
+ src_channels: *const snd_pcm_channel_area_t,
+ src_offset: snd_pcm_uframes_t,
+ channels: ::std::os::raw::c_uint,
+ frames: snd_pcm_uframes_t,
+ format: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_areas_copy_wrap(
+ dst_channels: *const snd_pcm_channel_area_t,
+ dst_offset: snd_pcm_uframes_t,
+ dst_size: snd_pcm_uframes_t,
+ src_channels: *const snd_pcm_channel_area_t,
+ src_offset: snd_pcm_uframes_t,
+ src_size: snd_pcm_uframes_t,
+ channels: ::std::os::raw::c_uint,
+ frames: snd_pcm_uframes_t,
+ format: snd_pcm_format_t,
+ ) -> ::std::os::raw::c_int;
+}
+pub const SND_PCM_HOOK_TYPE_HW_PARAMS: _snd_pcm_hook_type = 0;
+pub const SND_PCM_HOOK_TYPE_HW_FREE: _snd_pcm_hook_type = 1;
+pub const SND_PCM_HOOK_TYPE_CLOSE: _snd_pcm_hook_type = 2;
+pub const SND_PCM_HOOK_TYPE_LAST: _snd_pcm_hook_type = 2;
+#[doc = " type of pcm hook"]
+pub type _snd_pcm_hook_type = u32;
+#[doc = " type of pcm hook"]
+pub use self::_snd_pcm_hook_type as snd_pcm_hook_type_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_hook {
+ _unused: [u8; 0],
+}
+#[doc = " PCM hook container"]
+pub type snd_pcm_hook_t = _snd_pcm_hook;
+#[doc = " PCM hook callback function"]
+pub type snd_pcm_hook_func_t =
+ ::std::option::Option<unsafe extern "C" fn(hook: *mut snd_pcm_hook_t) -> ::std::os::raw::c_int>;
+extern "C" {
+ pub fn snd_pcm_hook_get_pcm(hook: *mut snd_pcm_hook_t) -> *mut snd_pcm_t;
+}
+extern "C" {
+ pub fn snd_pcm_hook_get_private(hook: *mut snd_pcm_hook_t) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_pcm_hook_set_private(
+ hook: *mut snd_pcm_hook_t,
+ private_data: *mut ::std::os::raw::c_void,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_hook_add(
+ hookp: *mut *mut snd_pcm_hook_t,
+ pcm: *mut snd_pcm_t,
+ type_: snd_pcm_hook_type_t,
+ func: snd_pcm_hook_func_t,
+ private_data: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hook_remove(hook: *mut snd_pcm_hook_t) -> ::std::os::raw::c_int;
+}
+#[doc = " #SND_PCM_TYPE_METER scope functions"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_pcm_scope_ops {
+ #[doc = " \\brief Enable and prepare it using current params"]
+ #[doc = " \\param scope scope handle"]
+ pub enable: ::std::option::Option<
+ unsafe extern "C" fn(scope: *mut snd_pcm_scope_t) -> ::std::os::raw::c_int,
+ >,
+ #[doc = " \\brief Disable"]
+ #[doc = " \\param scope scope handle"]
+ pub disable: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
+ #[doc = " \\brief PCM has been started"]
+ #[doc = " \\param scope scope handle"]
+ pub start: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
+ #[doc = " \\brief PCM has been stopped"]
+ #[doc = " \\param scope scope handle"]
+ pub stop: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
+ #[doc = " \\brief New frames are present"]
+ #[doc = " \\param scope scope handle"]
+ pub update: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
+ #[doc = " \\brief Reset status"]
+ #[doc = " \\param scope scope handle"]
+ pub reset: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
+ #[doc = " \\brief PCM is closing"]
+ #[doc = " \\param scope scope handle"]
+ pub close: ::std::option::Option<unsafe extern "C" fn(scope: *mut snd_pcm_scope_t)>,
+}
+#[doc = " #SND_PCM_TYPE_METER scope functions"]
+pub type snd_pcm_scope_ops_t = _snd_pcm_scope_ops;
+extern "C" {
+ pub fn snd_pcm_meter_get_bufsize(pcm: *mut snd_pcm_t) -> snd_pcm_uframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_meter_get_channels(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_pcm_meter_get_rate(pcm: *mut snd_pcm_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_pcm_meter_get_now(pcm: *mut snd_pcm_t) -> snd_pcm_uframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_meter_get_boundary(pcm: *mut snd_pcm_t) -> snd_pcm_uframes_t;
+}
+extern "C" {
+ pub fn snd_pcm_meter_add_scope(
+ pcm: *mut snd_pcm_t,
+ scope: *mut snd_pcm_scope_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_meter_search_scope(
+ pcm: *mut snd_pcm_t,
+ name: *const ::std::os::raw::c_char,
+ ) -> *mut snd_pcm_scope_t;
+}
+extern "C" {
+ pub fn snd_pcm_scope_malloc(ptr: *mut *mut snd_pcm_scope_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_scope_set_ops(scope: *mut snd_pcm_scope_t, val: *const snd_pcm_scope_ops_t);
+}
+extern "C" {
+ pub fn snd_pcm_scope_set_name(scope: *mut snd_pcm_scope_t, val: *const ::std::os::raw::c_char);
+}
+extern "C" {
+ pub fn snd_pcm_scope_get_name(scope: *mut snd_pcm_scope_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_scope_get_callback_private(
+ scope: *mut snd_pcm_scope_t,
+ ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_pcm_scope_set_callback_private(
+ scope: *mut snd_pcm_scope_t,
+ val: *mut ::std::os::raw::c_void,
+ );
+}
+extern "C" {
+ pub fn snd_pcm_scope_s16_open(
+ pcm: *mut snd_pcm_t,
+ name: *const ::std::os::raw::c_char,
+ scopep: *mut *mut snd_pcm_scope_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_scope_s16_get_channel_buffer(
+ scope: *mut snd_pcm_scope_t,
+ channel: ::std::os::raw::c_uint,
+ ) -> *mut i16;
+}
+#[doc = " standard latency - for standard playback or capture"]
+#[doc = "(estimated latency in one direction 350ms)"]
+pub const SND_SPCM_LATENCY_STANDARD: _snd_spcm_latency = 0;
+#[doc = " medium latency - software phones etc."]
+#[doc = "(estimated latency in one direction maximally 25ms"]
+pub const SND_SPCM_LATENCY_MEDIUM: _snd_spcm_latency = 1;
+#[doc = " realtime latency - realtime applications (effect processors etc.)"]
+#[doc = "(estimated latency in one direction 5ms and better)"]
+pub const SND_SPCM_LATENCY_REALTIME: _snd_spcm_latency = 2;
+#[doc = " Simple PCM latency type"]
+pub type _snd_spcm_latency = u32;
+#[doc = " Simple PCM latency type"]
+pub use self::_snd_spcm_latency as snd_spcm_latency_t;
+#[doc = " driver / library will ignore all xruns, the stream runs forever"]
+pub const SND_SPCM_XRUN_IGNORE: _snd_spcm_xrun_type = 0;
+#[doc = " driver / library stops the stream when an xrun occurs"]
+pub const SND_SPCM_XRUN_STOP: _snd_spcm_xrun_type = 1;
+#[doc = " Simple PCM xrun type"]
+pub type _snd_spcm_xrun_type = u32;
+#[doc = " Simple PCM xrun type"]
+pub use self::_snd_spcm_xrun_type as snd_spcm_xrun_type_t;
+#[doc = " liberal duplex - the buffer and period sizes might not match"]
+pub const SND_SPCM_DUPLEX_LIBERAL: _snd_spcm_duplex_type = 0;
+#[doc = " pedantic duplex - the buffer and period sizes MUST match"]
+pub const SND_SPCM_DUPLEX_PEDANTIC: _snd_spcm_duplex_type = 1;
+#[doc = " Simple PCM duplex type"]
+pub type _snd_spcm_duplex_type = u32;
+#[doc = " Simple PCM duplex type"]
+pub use self::_snd_spcm_duplex_type as snd_spcm_duplex_type_t;
+extern "C" {
+ pub fn snd_spcm_init(
+ pcm: *mut snd_pcm_t,
+ rate: ::std::os::raw::c_uint,
+ channels: ::std::os::raw::c_uint,
+ format: snd_pcm_format_t,
+ subformat: snd_pcm_subformat_t,
+ latency: snd_spcm_latency_t,
+ _access: snd_pcm_access_t,
+ xrun_type: snd_spcm_xrun_type_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_spcm_init_duplex(
+ playback_pcm: *mut snd_pcm_t,
+ capture_pcm: *mut snd_pcm_t,
+ rate: ::std::os::raw::c_uint,
+ channels: ::std::os::raw::c_uint,
+ format: snd_pcm_format_t,
+ subformat: snd_pcm_subformat_t,
+ latency: snd_spcm_latency_t,
+ _access: snd_pcm_access_t,
+ xrun_type: snd_spcm_xrun_type_t,
+ duplex_type: snd_spcm_duplex_type_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_spcm_init_get_params(
+ pcm: *mut snd_pcm_t,
+ rate: *mut ::std::os::raw::c_uint,
+ buffer_size: *mut snd_pcm_uframes_t,
+ period_size: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ #[doc = " \\defgroup PCM_Deprecated Deprecated Functions"]
+ #[doc = " \\ingroup PCM"]
+ #[doc = " See the \\ref pcm page for more details."]
+ #[doc = " \\{"]
+ pub fn snd_pcm_start_mode_name(mode: snd_pcm_start_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_xrun_mode_name(mode: snd_pcm_xrun_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_start_mode(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_start_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_start_mode(params: *const snd_pcm_sw_params_t) -> snd_pcm_start_t;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_xrun_mode(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_xrun_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_xrun_mode(params: *const snd_pcm_sw_params_t) -> snd_pcm_xrun_t;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_xfer_align(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_xfer_align(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut snd_pcm_uframes_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_set_sleep_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_sw_params_t,
+ val: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_sw_params_get_sleep_min(
+ params: *const snd_pcm_sw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_tick_time(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_tick_time_min(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_get_tick_time_max(
+ params: *const snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_test_tick_time(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_tick_time(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: ::std::os::raw::c_uint,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_tick_time_min(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_tick_time_max(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_tick_time_minmax(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ min: *mut ::std::os::raw::c_uint,
+ mindir: *mut ::std::os::raw::c_int,
+ max: *mut ::std::os::raw::c_uint,
+ maxdir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_tick_time_near(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_tick_time_first(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_pcm_hw_params_set_tick_time_last(
+ pcm: *mut snd_pcm_t,
+ params: *mut snd_pcm_hw_params_t,
+ val: *mut ::std::os::raw::c_uint,
+ dir: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_rawmidi_info {
+ _unused: [u8; 0],
+}
+#[doc = " RawMidi information container"]
+pub type snd_rawmidi_info_t = _snd_rawmidi_info;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_rawmidi_params {
+ _unused: [u8; 0],
+}
+#[doc = " RawMidi settings container"]
+pub type snd_rawmidi_params_t = _snd_rawmidi_params;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_rawmidi_status {
+ _unused: [u8; 0],
+}
+#[doc = " RawMidi status container"]
+pub type snd_rawmidi_status_t = _snd_rawmidi_status;
+#[doc = " Output stream"]
+pub const SND_RAWMIDI_STREAM_OUTPUT: _snd_rawmidi_stream = 0;
+#[doc = " Input stream"]
+pub const SND_RAWMIDI_STREAM_INPUT: _snd_rawmidi_stream = 1;
+#[doc = " Input stream"]
+pub const SND_RAWMIDI_STREAM_LAST: _snd_rawmidi_stream = 1;
+#[doc = " RawMidi stream (direction)"]
+pub type _snd_rawmidi_stream = u32;
+#[doc = " RawMidi stream (direction)"]
+pub use self::_snd_rawmidi_stream as snd_rawmidi_stream_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_rawmidi {
+ _unused: [u8; 0],
+}
+#[doc = " RawMidi handle"]
+pub type snd_rawmidi_t = _snd_rawmidi;
+#[doc = " Kernel level RawMidi"]
+pub const SND_RAWMIDI_TYPE_HW: _snd_rawmidi_type = 0;
+#[doc = " Shared memory client RawMidi (not yet implemented)"]
+pub const SND_RAWMIDI_TYPE_SHM: _snd_rawmidi_type = 1;
+#[doc = " INET client RawMidi (not yet implemented)"]
+pub const SND_RAWMIDI_TYPE_INET: _snd_rawmidi_type = 2;
+#[doc = " Virtual (sequencer) RawMidi"]
+pub const SND_RAWMIDI_TYPE_VIRTUAL: _snd_rawmidi_type = 3;
+#[doc = " RawMidi type"]
+pub type _snd_rawmidi_type = u32;
+#[doc = " RawMidi type"]
+pub use self::_snd_rawmidi_type as snd_rawmidi_type_t;
+extern "C" {
+ pub fn snd_rawmidi_open(
+ in_rmidi: *mut *mut snd_rawmidi_t,
+ out_rmidi: *mut *mut snd_rawmidi_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_open_lconf(
+ in_rmidi: *mut *mut snd_rawmidi_t,
+ out_rmidi: *mut *mut snd_rawmidi_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ lconf: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_close(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_poll_descriptors_count(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_poll_descriptors(
+ rmidi: *mut snd_rawmidi_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_poll_descriptors_revents(
+ rawmidi: *mut snd_rawmidi_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revent: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_nonblock(
+ rmidi: *mut snd_rawmidi_t,
+ nonblock: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_malloc(ptr: *mut *mut snd_rawmidi_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_free(obj: *mut snd_rawmidi_info_t);
+}
+extern "C" {
+ pub fn snd_rawmidi_info_copy(dst: *mut snd_rawmidi_info_t, src: *const snd_rawmidi_info_t);
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_device(obj: *const snd_rawmidi_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_subdevice(obj: *const snd_rawmidi_info_t)
+ -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_stream(obj: *const snd_rawmidi_info_t) -> snd_rawmidi_stream_t;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_card(obj: *const snd_rawmidi_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_flags(obj: *const snd_rawmidi_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_id(obj: *const snd_rawmidi_info_t)
+ -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_name(
+ obj: *const snd_rawmidi_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_subdevice_name(
+ obj: *const snd_rawmidi_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_subdevices_count(
+ obj: *const snd_rawmidi_info_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_get_subdevices_avail(
+ obj: *const snd_rawmidi_info_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_rawmidi_info_set_device(obj: *mut snd_rawmidi_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_rawmidi_info_set_subdevice(
+ obj: *mut snd_rawmidi_info_t,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_rawmidi_info_set_stream(obj: *mut snd_rawmidi_info_t, val: snd_rawmidi_stream_t);
+}
+extern "C" {
+ pub fn snd_rawmidi_info(
+ rmidi: *mut snd_rawmidi_t,
+ info: *mut snd_rawmidi_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_malloc(ptr: *mut *mut snd_rawmidi_params_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_free(obj: *mut snd_rawmidi_params_t);
+}
+extern "C" {
+ pub fn snd_rawmidi_params_copy(
+ dst: *mut snd_rawmidi_params_t,
+ src: *const snd_rawmidi_params_t,
+ );
+}
+extern "C" {
+ pub fn snd_rawmidi_params_set_buffer_size(
+ rmidi: *mut snd_rawmidi_t,
+ params: *mut snd_rawmidi_params_t,
+ val: usize,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_get_buffer_size(params: *const snd_rawmidi_params_t) -> usize;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_set_avail_min(
+ rmidi: *mut snd_rawmidi_t,
+ params: *mut snd_rawmidi_params_t,
+ val: usize,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_get_avail_min(params: *const snd_rawmidi_params_t) -> usize;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_set_no_active_sensing(
+ rmidi: *mut snd_rawmidi_t,
+ params: *mut snd_rawmidi_params_t,
+ val: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_get_no_active_sensing(
+ params: *const snd_rawmidi_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_params(
+ rmidi: *mut snd_rawmidi_t,
+ params: *mut snd_rawmidi_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_params_current(
+ rmidi: *mut snd_rawmidi_t,
+ params: *mut snd_rawmidi_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_status_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_rawmidi_status_malloc(ptr: *mut *mut snd_rawmidi_status_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_status_free(obj: *mut snd_rawmidi_status_t);
+}
+extern "C" {
+ pub fn snd_rawmidi_status_copy(
+ dst: *mut snd_rawmidi_status_t,
+ src: *const snd_rawmidi_status_t,
+ );
+}
+extern "C" {
+ pub fn snd_rawmidi_status_get_tstamp(
+ obj: *const snd_rawmidi_status_t,
+ ptr: *mut snd_htimestamp_t,
+ );
+}
+extern "C" {
+ pub fn snd_rawmidi_status_get_avail(obj: *const snd_rawmidi_status_t) -> usize;
+}
+extern "C" {
+ pub fn snd_rawmidi_status_get_xruns(obj: *const snd_rawmidi_status_t) -> usize;
+}
+extern "C" {
+ pub fn snd_rawmidi_status(
+ rmidi: *mut snd_rawmidi_t,
+ status: *mut snd_rawmidi_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_drain(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_drop(rmidi: *mut snd_rawmidi_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_rawmidi_write(
+ rmidi: *mut snd_rawmidi_t,
+ buffer: *const ::std::os::raw::c_void,
+ size: usize,
+ ) -> isize;
+}
+extern "C" {
+ pub fn snd_rawmidi_read(
+ rmidi: *mut snd_rawmidi_t,
+ buffer: *mut ::std::os::raw::c_void,
+ size: usize,
+ ) -> isize;
+}
+extern "C" {
+ pub fn snd_rawmidi_name(rmidi: *mut snd_rawmidi_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_rawmidi_type(rmidi: *mut snd_rawmidi_t) -> snd_rawmidi_type_t;
+}
+extern "C" {
+ pub fn snd_rawmidi_stream(rawmidi: *mut snd_rawmidi_t) -> snd_rawmidi_stream_t;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_id {
+ _unused: [u8; 0],
+}
+#[doc = " timer identification structure"]
+pub type snd_timer_id_t = _snd_timer_id;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_ginfo {
+ _unused: [u8; 0],
+}
+#[doc = " timer global info structure"]
+pub type snd_timer_ginfo_t = _snd_timer_ginfo;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_gparams {
+ _unused: [u8; 0],
+}
+#[doc = " timer global params structure"]
+pub type snd_timer_gparams_t = _snd_timer_gparams;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_gstatus {
+ _unused: [u8; 0],
+}
+#[doc = " timer global status structure"]
+pub type snd_timer_gstatus_t = _snd_timer_gstatus;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_info {
+ _unused: [u8; 0],
+}
+#[doc = " timer info structure"]
+pub type snd_timer_info_t = _snd_timer_info;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_params {
+ _unused: [u8; 0],
+}
+#[doc = " timer params structure"]
+pub type snd_timer_params_t = _snd_timer_params;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_status {
+ _unused: [u8; 0],
+}
+#[doc = " timer status structure"]
+pub type snd_timer_status_t = _snd_timer_status;
+#[doc = "< invalid"]
+pub const SND_TIMER_CLASS_NONE: _snd_timer_class = -1;
+#[doc = "< slave timer"]
+pub const SND_TIMER_CLASS_SLAVE: _snd_timer_class = 0;
+#[doc = "< global timer"]
+pub const SND_TIMER_CLASS_GLOBAL: _snd_timer_class = 1;
+#[doc = "< card timer"]
+pub const SND_TIMER_CLASS_CARD: _snd_timer_class = 2;
+#[doc = "< PCM timer"]
+pub const SND_TIMER_CLASS_PCM: _snd_timer_class = 3;
+#[doc = "< last timer"]
+pub const SND_TIMER_CLASS_LAST: _snd_timer_class = 3;
+#[doc = " timer master class"]
+pub type _snd_timer_class = i32;
+#[doc = " timer master class"]
+pub use self::_snd_timer_class as snd_timer_class_t;
+#[doc = "< none"]
+pub const SND_TIMER_SCLASS_NONE: _snd_timer_slave_class = 0;
+#[doc = "< for internal use"]
+pub const SND_TIMER_SCLASS_APPLICATION: _snd_timer_slave_class = 1;
+#[doc = "< sequencer timer"]
+pub const SND_TIMER_SCLASS_SEQUENCER: _snd_timer_slave_class = 2;
+#[doc = "< OSS sequencer timer"]
+pub const SND_TIMER_SCLASS_OSS_SEQUENCER: _snd_timer_slave_class = 3;
+#[doc = "< last slave timer"]
+pub const SND_TIMER_SCLASS_LAST: _snd_timer_slave_class = 3;
+#[doc = " timer slave class"]
+pub type _snd_timer_slave_class = u32;
+#[doc = " timer slave class"]
+pub use self::_snd_timer_slave_class as snd_timer_slave_class_t;
+pub const SND_TIMER_EVENT_RESOLUTION: _snd_timer_event = 0;
+pub const SND_TIMER_EVENT_TICK: _snd_timer_event = 1;
+pub const SND_TIMER_EVENT_START: _snd_timer_event = 2;
+pub const SND_TIMER_EVENT_STOP: _snd_timer_event = 3;
+pub const SND_TIMER_EVENT_CONTINUE: _snd_timer_event = 4;
+pub const SND_TIMER_EVENT_PAUSE: _snd_timer_event = 5;
+pub const SND_TIMER_EVENT_EARLY: _snd_timer_event = 6;
+pub const SND_TIMER_EVENT_SUSPEND: _snd_timer_event = 7;
+pub const SND_TIMER_EVENT_RESUME: _snd_timer_event = 8;
+pub const SND_TIMER_EVENT_MSTART: _snd_timer_event = 12;
+pub const SND_TIMER_EVENT_MSTOP: _snd_timer_event = 13;
+pub const SND_TIMER_EVENT_MCONTINUE: _snd_timer_event = 14;
+pub const SND_TIMER_EVENT_MPAUSE: _snd_timer_event = 15;
+pub const SND_TIMER_EVENT_MSUSPEND: _snd_timer_event = 17;
+pub const SND_TIMER_EVENT_MRESUME: _snd_timer_event = 18;
+#[doc = " timer read event identification"]
+pub type _snd_timer_event = u32;
+#[doc = " timer read event identification"]
+pub use self::_snd_timer_event as snd_timer_event_t;
+#[doc = " timer read structure"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_read {
+ #[doc = "< tick resolution in nanoseconds"]
+ pub resolution: ::std::os::raw::c_uint,
+ #[doc = "< count of happened ticks"]
+ pub ticks: ::std::os::raw::c_uint,
+}
+#[doc = " timer read structure"]
+pub type snd_timer_read_t = _snd_timer_read;
+#[doc = " timer tstamp + event read structure"]
+#[repr(C)]
+pub struct _snd_timer_tread {
+ #[doc = "< Timer event"]
+ pub event: snd_timer_event_t,
+ #[doc = "< Time stamp of each event"]
+ pub tstamp: snd_htimestamp_t,
+ #[doc = "< Event value"]
+ pub val: ::std::os::raw::c_uint,
+}
+#[doc = " timer tstamp + event read structure"]
+pub type snd_timer_tread_t = _snd_timer_tread;
+#[doc = " Kernel level HwDep"]
+pub const SND_TIMER_TYPE_HW: _snd_timer_type = 0;
+#[doc = " Shared memory client timer (not yet implemented)"]
+pub const SND_TIMER_TYPE_SHM: _snd_timer_type = 1;
+#[doc = " INET client timer (not yet implemented)"]
+pub const SND_TIMER_TYPE_INET: _snd_timer_type = 2;
+#[doc = " timer handle type"]
+pub type _snd_timer_type = u32;
+#[doc = " timer handle type"]
+pub use self::_snd_timer_type as snd_timer_type_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer_query {
+ _unused: [u8; 0],
+}
+#[doc = " timer query handle"]
+pub type snd_timer_query_t = _snd_timer_query;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_timer {
+ _unused: [u8; 0],
+}
+#[doc = " timer handle"]
+pub type snd_timer_t = _snd_timer;
+extern "C" {
+ pub fn snd_timer_query_open(
+ handle: *mut *mut snd_timer_query_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_query_open_lconf(
+ handle: *mut *mut snd_timer_query_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ lconf: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_query_close(handle: *mut snd_timer_query_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_query_next_device(
+ handle: *mut snd_timer_query_t,
+ tid: *mut snd_timer_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_query_info(
+ handle: *mut snd_timer_query_t,
+ info: *mut snd_timer_ginfo_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_query_params(
+ handle: *mut snd_timer_query_t,
+ params: *mut snd_timer_gparams_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_query_status(
+ handle: *mut snd_timer_query_t,
+ status: *mut snd_timer_gstatus_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_open(
+ handle: *mut *mut snd_timer_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_open_lconf(
+ handle: *mut *mut snd_timer_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ lconf: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_close(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_add_timer_handler(
+ handler: *mut *mut snd_async_handler_t,
+ timer: *mut snd_timer_t,
+ callback: snd_async_callback_t,
+ private_data: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_handler_get_timer(handler: *mut snd_async_handler_t) -> *mut snd_timer_t;
+}
+extern "C" {
+ pub fn snd_timer_poll_descriptors_count(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_poll_descriptors(
+ handle: *mut snd_timer_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_poll_descriptors_revents(
+ timer: *mut snd_timer_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revents: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_info(
+ handle: *mut snd_timer_t,
+ timer: *mut snd_timer_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params(
+ handle: *mut snd_timer_t,
+ params: *mut snd_timer_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_status(
+ handle: *mut snd_timer_t,
+ status: *mut snd_timer_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_start(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_stop(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_continue(handle: *mut snd_timer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_read(
+ handle: *mut snd_timer_t,
+ buffer: *mut ::std::os::raw::c_void,
+ size: usize,
+ ) -> isize;
+}
+extern "C" {
+ pub fn snd_timer_id_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_timer_id_malloc(ptr: *mut *mut snd_timer_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_id_free(obj: *mut snd_timer_id_t);
+}
+extern "C" {
+ pub fn snd_timer_id_copy(dst: *mut snd_timer_id_t, src: *const snd_timer_id_t);
+}
+extern "C" {
+ pub fn snd_timer_id_set_class(id: *mut snd_timer_id_t, dev_class: ::std::os::raw::c_int);
+}
+extern "C" {
+ pub fn snd_timer_id_get_class(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_id_set_sclass(id: *mut snd_timer_id_t, dev_sclass: ::std::os::raw::c_int);
+}
+extern "C" {
+ pub fn snd_timer_id_get_sclass(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_id_set_card(id: *mut snd_timer_id_t, card: ::std::os::raw::c_int);
+}
+extern "C" {
+ pub fn snd_timer_id_get_card(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_id_set_device(id: *mut snd_timer_id_t, device: ::std::os::raw::c_int);
+}
+extern "C" {
+ pub fn snd_timer_id_get_device(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_id_set_subdevice(id: *mut snd_timer_id_t, subdevice: ::std::os::raw::c_int);
+}
+extern "C" {
+ pub fn snd_timer_id_get_subdevice(id: *mut snd_timer_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_malloc(ptr: *mut *mut snd_timer_ginfo_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_free(obj: *mut snd_timer_ginfo_t);
+}
+extern "C" {
+ pub fn snd_timer_ginfo_copy(dst: *mut snd_timer_ginfo_t, src: *const snd_timer_ginfo_t);
+}
+extern "C" {
+ pub fn snd_timer_ginfo_set_tid(
+ obj: *mut snd_timer_ginfo_t,
+ tid: *mut snd_timer_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_tid(obj: *mut snd_timer_ginfo_t) -> *mut snd_timer_id_t;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_flags(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_card(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_id(obj: *mut snd_timer_ginfo_t) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_name(obj: *mut snd_timer_ginfo_t) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_resolution(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_ulong;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_resolution_min(
+ obj: *mut snd_timer_ginfo_t,
+ ) -> ::std::os::raw::c_ulong;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_resolution_max(
+ obj: *mut snd_timer_ginfo_t,
+ ) -> ::std::os::raw::c_ulong;
+}
+extern "C" {
+ pub fn snd_timer_ginfo_get_clients(obj: *mut snd_timer_ginfo_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_timer_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_timer_info_malloc(ptr: *mut *mut snd_timer_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_info_free(obj: *mut snd_timer_info_t);
+}
+extern "C" {
+ pub fn snd_timer_info_copy(dst: *mut snd_timer_info_t, src: *const snd_timer_info_t);
+}
+extern "C" {
+ pub fn snd_timer_info_is_slave(info: *mut snd_timer_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_info_get_card(info: *mut snd_timer_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_info_get_id(info: *mut snd_timer_info_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_timer_info_get_name(info: *mut snd_timer_info_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_timer_info_get_resolution(info: *mut snd_timer_info_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_timer_params_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_timer_params_malloc(ptr: *mut *mut snd_timer_params_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params_free(obj: *mut snd_timer_params_t);
+}
+extern "C" {
+ pub fn snd_timer_params_copy(dst: *mut snd_timer_params_t, src: *const snd_timer_params_t);
+}
+extern "C" {
+ pub fn snd_timer_params_set_auto_start(
+ params: *mut snd_timer_params_t,
+ auto_start: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params_get_auto_start(
+ params: *mut snd_timer_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params_set_exclusive(
+ params: *mut snd_timer_params_t,
+ exclusive: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params_get_exclusive(params: *mut snd_timer_params_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params_set_early_event(
+ params: *mut snd_timer_params_t,
+ early_event: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params_get_early_event(
+ params: *mut snd_timer_params_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_params_set_ticks(
+ params: *mut snd_timer_params_t,
+ ticks: ::std::os::raw::c_long,
+ );
+}
+extern "C" {
+ pub fn snd_timer_params_get_ticks(params: *mut snd_timer_params_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_timer_params_set_queue_size(
+ params: *mut snd_timer_params_t,
+ queue_size: ::std::os::raw::c_long,
+ );
+}
+extern "C" {
+ pub fn snd_timer_params_get_queue_size(
+ params: *mut snd_timer_params_t,
+ ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_timer_params_set_filter(
+ params: *mut snd_timer_params_t,
+ filter: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_timer_params_get_filter(params: *mut snd_timer_params_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_timer_status_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_timer_status_malloc(ptr: *mut *mut snd_timer_status_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_timer_status_free(obj: *mut snd_timer_status_t);
+}
+extern "C" {
+ pub fn snd_timer_status_copy(dst: *mut snd_timer_status_t, src: *const snd_timer_status_t);
+}
+extern "C" {
+ pub fn snd_timer_status_get_timestamp(status: *mut snd_timer_status_t) -> snd_htimestamp_t;
+}
+extern "C" {
+ pub fn snd_timer_status_get_resolution(
+ status: *mut snd_timer_status_t,
+ ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_timer_status_get_lost(status: *mut snd_timer_status_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_timer_status_get_overrun(status: *mut snd_timer_status_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_timer_status_get_queue(status: *mut snd_timer_status_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_timer_info_get_ticks(info: *mut snd_timer_info_t) -> ::std::os::raw::c_long;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_hwdep_info {
+ _unused: [u8; 0],
+}
+#[doc = " HwDep information container"]
+pub type snd_hwdep_info_t = _snd_hwdep_info;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_hwdep_dsp_status {
+ _unused: [u8; 0],
+}
+#[doc = " HwDep DSP status container"]
+pub type snd_hwdep_dsp_status_t = _snd_hwdep_dsp_status;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_hwdep_dsp_image {
+ _unused: [u8; 0],
+}
+#[doc = " HwDep DSP image container"]
+pub type snd_hwdep_dsp_image_t = _snd_hwdep_dsp_image;
+#[doc = "< OPL2 raw driver"]
+pub const SND_HWDEP_IFACE_OPL2: _snd_hwdep_iface = 0;
+#[doc = "< OPL3 raw driver"]
+pub const SND_HWDEP_IFACE_OPL3: _snd_hwdep_iface = 1;
+#[doc = "< OPL4 raw driver"]
+pub const SND_HWDEP_IFACE_OPL4: _snd_hwdep_iface = 2;
+#[doc = "< SB16CSP driver"]
+pub const SND_HWDEP_IFACE_SB16CSP: _snd_hwdep_iface = 3;
+#[doc = "< EMU10K1 driver"]
+pub const SND_HWDEP_IFACE_EMU10K1: _snd_hwdep_iface = 4;
+#[doc = "< YSS225 driver"]
+pub const SND_HWDEP_IFACE_YSS225: _snd_hwdep_iface = 5;
+#[doc = "< ICS2115 driver"]
+pub const SND_HWDEP_IFACE_ICS2115: _snd_hwdep_iface = 6;
+#[doc = "< Ensoniq SoundScape ISA card (MC68EC000)"]
+pub const SND_HWDEP_IFACE_SSCAPE: _snd_hwdep_iface = 7;
+#[doc = "< Digigram VX cards"]
+pub const SND_HWDEP_IFACE_VX: _snd_hwdep_iface = 8;
+#[doc = "< Digigram miXart cards"]
+pub const SND_HWDEP_IFACE_MIXART: _snd_hwdep_iface = 9;
+#[doc = "< Tascam US122, US224 & US428 usb"]
+pub const SND_HWDEP_IFACE_USX2Y: _snd_hwdep_iface = 10;
+#[doc = "< EmuX wavetable"]
+pub const SND_HWDEP_IFACE_EMUX_WAVETABLE: _snd_hwdep_iface = 11;
+#[doc = "< Bluetooth audio"]
+pub const SND_HWDEP_IFACE_BLUETOOTH: _snd_hwdep_iface = 12;
+#[doc = "< Tascam US122, US224 & US428 raw USB PCM"]
+pub const SND_HWDEP_IFACE_USX2Y_PCM: _snd_hwdep_iface = 13;
+#[doc = "< Digigram PCXHR"]
+pub const SND_HWDEP_IFACE_PCXHR: _snd_hwdep_iface = 14;
+#[doc = "< SB Extigy/Audigy2NX remote control"]
+pub const SND_HWDEP_IFACE_SB_RC: _snd_hwdep_iface = 15;
+#[doc = "< HD-audio"]
+pub const SND_HWDEP_IFACE_HDA: _snd_hwdep_iface = 16;
+#[doc = "< direct access to usb stream"]
+pub const SND_HWDEP_IFACE_USB_STREAM: _snd_hwdep_iface = 17;
+#[doc = "< TC DICE FireWire device"]
+pub const SND_HWDEP_IFACE_FW_DICE: _snd_hwdep_iface = 18;
+#[doc = "< Echo Audio Fireworks based device"]
+pub const SND_HWDEP_IFACE_FW_FIREWORKS: _snd_hwdep_iface = 19;
+#[doc = "< BridgeCo BeBoB based device"]
+pub const SND_HWDEP_IFACE_FW_BEBOB: _snd_hwdep_iface = 20;
+#[doc = "< Oxford OXFW970/971 based device"]
+pub const SND_HWDEP_IFACE_FW_OXFW: _snd_hwdep_iface = 21;
+pub const SND_HWDEP_IFACE_FW_DIGI00X: _snd_hwdep_iface = 22;
+pub const SND_HWDEP_IFACE_FW_TASCAM: _snd_hwdep_iface = 23;
+pub const SND_HWDEP_IFACE_LINE6: _snd_hwdep_iface = 24;
+pub const SND_HWDEP_IFACE_FW_MOTU: _snd_hwdep_iface = 25;
+pub const SND_HWDEP_IFACE_FW_FIREFACE: _snd_hwdep_iface = 26;
+#[doc = "< last known hwdep interface"]
+pub const SND_HWDEP_IFACE_LAST: _snd_hwdep_iface = 26;
+#[doc = " HwDep interface"]
+pub type _snd_hwdep_iface = u32;
+#[doc = " HwDep interface"]
+pub use self::_snd_hwdep_iface as snd_hwdep_iface_t;
+#[doc = " Kernel level HwDep"]
+pub const SND_HWDEP_TYPE_HW: _snd_hwdep_type = 0;
+#[doc = " Shared memory client HwDep (not yet implemented)"]
+pub const SND_HWDEP_TYPE_SHM: _snd_hwdep_type = 1;
+#[doc = " INET client HwDep (not yet implemented)"]
+pub const SND_HWDEP_TYPE_INET: _snd_hwdep_type = 2;
+#[doc = " HwDep handle type"]
+pub type _snd_hwdep_type = u32;
+#[doc = " HwDep handle type"]
+pub use self::_snd_hwdep_type as snd_hwdep_type_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_hwdep {
+ _unused: [u8; 0],
+}
+#[doc = " HwDep handle"]
+pub type snd_hwdep_t = _snd_hwdep;
+extern "C" {
+ pub fn snd_hwdep_open(
+ hwdep: *mut *mut snd_hwdep_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_close(hwdep: *mut snd_hwdep_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_poll_descriptors(
+ hwdep: *mut snd_hwdep_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_poll_descriptors_count(hwdep: *mut snd_hwdep_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_poll_descriptors_revents(
+ hwdep: *mut snd_hwdep_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revents: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_nonblock(
+ hwdep: *mut snd_hwdep_t,
+ nonblock: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_info(
+ hwdep: *mut snd_hwdep_t,
+ info: *mut snd_hwdep_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status(
+ hwdep: *mut snd_hwdep_t,
+ status: *mut snd_hwdep_dsp_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_load(
+ hwdep: *mut snd_hwdep_t,
+ block: *mut snd_hwdep_dsp_image_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_ioctl(
+ hwdep: *mut snd_hwdep_t,
+ request: ::std::os::raw::c_uint,
+ arg: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_write(
+ hwdep: *mut snd_hwdep_t,
+ buffer: *const ::std::os::raw::c_void,
+ size: usize,
+ ) -> isize;
+}
+extern "C" {
+ pub fn snd_hwdep_read(
+ hwdep: *mut snd_hwdep_t,
+ buffer: *mut ::std::os::raw::c_void,
+ size: usize,
+ ) -> isize;
+}
+extern "C" {
+ pub fn snd_hwdep_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_hwdep_info_malloc(ptr: *mut *mut snd_hwdep_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_info_free(obj: *mut snd_hwdep_info_t);
+}
+extern "C" {
+ pub fn snd_hwdep_info_copy(dst: *mut snd_hwdep_info_t, src: *const snd_hwdep_info_t);
+}
+extern "C" {
+ pub fn snd_hwdep_info_get_device(obj: *const snd_hwdep_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hwdep_info_get_card(obj: *const snd_hwdep_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_info_get_id(obj: *const snd_hwdep_info_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_hwdep_info_get_name(obj: *const snd_hwdep_info_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_hwdep_info_get_iface(obj: *const snd_hwdep_info_t) -> snd_hwdep_iface_t;
+}
+extern "C" {
+ pub fn snd_hwdep_info_set_device(obj: *mut snd_hwdep_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_malloc(
+ ptr: *mut *mut snd_hwdep_dsp_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_free(obj: *mut snd_hwdep_dsp_status_t);
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_copy(
+ dst: *mut snd_hwdep_dsp_status_t,
+ src: *const snd_hwdep_dsp_status_t,
+ );
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_get_version(
+ obj: *const snd_hwdep_dsp_status_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_get_id(
+ obj: *const snd_hwdep_dsp_status_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_get_num_dsps(
+ obj: *const snd_hwdep_dsp_status_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_get_dsp_loaded(
+ obj: *const snd_hwdep_dsp_status_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_status_get_chip_ready(
+ obj: *const snd_hwdep_dsp_status_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_malloc(
+ ptr: *mut *mut snd_hwdep_dsp_image_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_free(obj: *mut snd_hwdep_dsp_image_t);
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_copy(
+ dst: *mut snd_hwdep_dsp_image_t,
+ src: *const snd_hwdep_dsp_image_t,
+ );
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_get_index(
+ obj: *const snd_hwdep_dsp_image_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_get_name(
+ obj: *const snd_hwdep_dsp_image_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_get_image(
+ obj: *const snd_hwdep_dsp_image_t,
+ ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_get_length(obj: *const snd_hwdep_dsp_image_t) -> usize;
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_set_index(
+ obj: *mut snd_hwdep_dsp_image_t,
+ _index: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_set_name(
+ obj: *mut snd_hwdep_dsp_image_t,
+ name: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_set_image(
+ obj: *mut snd_hwdep_dsp_image_t,
+ buffer: *mut ::std::os::raw::c_void,
+ );
+}
+extern "C" {
+ pub fn snd_hwdep_dsp_image_set_length(obj: *mut snd_hwdep_dsp_image_t, length: usize);
+}
+#[doc = " IEC958 structure"]
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct snd_aes_iec958 {
+ #[doc = "< AES/IEC958 channel status bits"]
+ pub status: [::std::os::raw::c_uchar; 24usize],
+ #[doc = "< AES/IEC958 subcode bits"]
+ pub subcode: [::std::os::raw::c_uchar; 147usize],
+ #[doc = "< nothing"]
+ pub pad: ::std::os::raw::c_uchar,
+ #[doc = "< AES/IEC958 subframe bits"]
+ pub dig_subframe: [::std::os::raw::c_uchar; 4usize],
+}
+#[doc = " IEC958 structure"]
+pub type snd_aes_iec958_t = snd_aes_iec958;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_ctl_card_info {
+ _unused: [u8; 0],
+}
+#[doc = " CTL card info container"]
+pub type snd_ctl_card_info_t = _snd_ctl_card_info;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_ctl_elem_id {
+ _unused: [u8; 0],
+}
+#[doc = " CTL element identifier container"]
+pub type snd_ctl_elem_id_t = _snd_ctl_elem_id;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_ctl_elem_list {
+ _unused: [u8; 0],
+}
+#[doc = " CTL element list container"]
+#[doc = ""]
+#[doc = " This is a list of CTL elements. The list contains management"]
+#[doc = " information (e.g. how many elements the sound card has) as well as"]
+#[doc = " the element identifiers. All functions which operate on the list"]
+#[doc = " are named snd_ctl_elem_list_*()."]
+#[doc = ""]
+#[doc = " \\par Memory management"]
+#[doc = ""]
+#[doc = " There are two memory areas to deal with: The list container itself"]
+#[doc = " and the memory for the element identifiers."]
+#[doc = ""]
+#[doc = " To manage the area for the list container, the following functions"]
+#[doc = " are used:"]
+#[doc = ""]
+#[doc = " - snd_ctl_elem_list_malloc() / snd_ctl_elem_list_free() to allocate"]
+#[doc = " and free memory on the heap, or"]
+#[doc = " - snd_ctl_elem_list_alloca() to allocate the memory on the"]
+#[doc = " stack. This memory is auto-released when the stack is unwound."]
+#[doc = ""]
+#[doc = " To manage the space for the element identifiers, the"]
+#[doc = " snd_ctl_elem_list_alloc_space() and snd_ctl_elem_list_free_space()"]
+#[doc = " are used. Allocating the right amount of space can be achieved by"]
+#[doc = " first obtaining the number of elements and then calling"]
+#[doc = " snd_ctl_elem_list_alloc_space():"]
+#[doc = ""]
+#[doc = " \\code"]
+#[doc = " snd_ctl_elem_list_t* list;"]
+#[doc = " int count;"]
+#[doc = ""]
+#[doc = " // Initialise list"]
+#[doc = " snd_ctl_elem_list_malloc(&list);"]
+#[doc = ""]
+#[doc = " // Get number of elements"]
+#[doc = " snd_ctl_elem_list(ctl, list);"]
+#[doc = " count = snd_ctl_elem_list_get_count(list);"]
+#[doc = ""]
+#[doc = " // Allocate space for identifiers"]
+#[doc = " snd_ctl_elem_list_alloc_space(list, count);"]
+#[doc = ""]
+#[doc = " // Get identifiers"]
+#[doc = " snd_ctl_elem_list(ctl, list); // yes, this is same as above :)"]
+#[doc = ""]
+#[doc = " // Do something useful with the list..."]
+#[doc = ""]
+#[doc = " // Cleanup"]
+#[doc = " snd_ctl_elem_list_free_space(list);"]
+#[doc = " snd_ctl_elem_list_free(list);"]
+#[doc = " \\endcode"]
+#[doc = ""]
+#[doc = ""]
+#[doc = " \\par The Elements"]
+#[doc = ""]
+#[doc = " The elements in the list are accessed using an index. This index is"]
+#[doc = " the location in the list; Don't confuse it with the 'index' of the"]
+#[doc = " element identifier. For example:"]
+#[doc = ""]
+#[doc = " \\code"]
+#[doc = " snd_ctl_elem_list_t list;"]
+#[doc = " unsigned int element_index;"]
+#[doc = ""]
+#[doc = " // Allocate space, fill list ..."]
+#[doc = ""]
+#[doc = " element_index = snd_ctl_elem_list_get_index(&list, 2);"]
+#[doc = " \\endcode"]
+#[doc = ""]
+#[doc = " This will access the 3rd element in the list (index=2) and get the"]
+#[doc = " elements index from the driver (which might be 13, for example)."]
+pub type snd_ctl_elem_list_t = _snd_ctl_elem_list;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_ctl_elem_info {
+ _unused: [u8; 0],
+}
+#[doc = " CTL element info container"]
+pub type snd_ctl_elem_info_t = _snd_ctl_elem_info;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_ctl_elem_value {
+ _unused: [u8; 0],
+}
+#[doc = " CTL element value container"]
+#[doc = ""]
+#[doc = " Contains the value(s) (i.e. members) of a single element. All"]
+#[doc = " values of a given element are of the same type."]
+#[doc = ""]
+#[doc = " \\par Memory management"]
+#[doc = ""]
+#[doc = " To access a value, a snd_ctl_elem_value_t must be allocated using"]
+#[doc = " snd_ctl_elem_value_alloca() or snd_ctl_elem_value_malloc(). When"]
+#[doc = " using the latter, it must be freed again using"]
+#[doc = " snd_ctl_elem_value_free()."]
+#[doc = ""]
+#[doc = " \\par Identifier"]
+#[doc = ""]
+#[doc = " Then, the ID must be filled. It is sufficient to fill only the"]
+#[doc = " numid, if known. Otherwise, interface type, device, subdevice,"]
+#[doc = " name, index must all be given. The following functions can be used"]
+#[doc = " to fill the ID:"]
+#[doc = ""]
+#[doc = " - snd_ctl_elem_value_set_id(): Set the ID. Requires an"]
+#[doc = " snd_ctl_elem_id_t object."]
+#[doc = " - snd_ctl_elem_value_set_numid(): Set the numid."]
+#[doc = " - Or use all of the following:"]
+#[doc = ""]
+#[doc = " - snd_ctl_elem_value_set_interface()"]
+#[doc = " - snd_ctl_elem_value_set_device()"]
+#[doc = " - snd_ctl_elem_value_set_subdevice()"]
+#[doc = " - snd_ctl_elem_value_set_name()"]
+#[doc = " - snd_ctl_elem_value_set_index()"]
+#[doc = ""]
+#[doc = " When communicating with the driver (snd_ctl_elem_read(),"]
+#[doc = " snd_ctl_elem_write()), and the numid was given, the interface,"]
+#[doc = " device, ... are filled (even if you set the before). When the numid"]
+#[doc = " is unset (i.e. it is 0), it is filled."]
+#[doc = ""]
+#[doc = " \\par Communicating with the driver"]
+#[doc = ""]
+#[doc = " After the value container was created and filled with the ID of the"]
+#[doc = " desired element, the value(s) can be fetched from the driver (and"]
+#[doc = " thus from the hardware) or written to the driver."]
+#[doc = ""]
+#[doc = " To fetch a value, use snd_ctl_elem_read(). Thereafter, use the"]
+#[doc = " snd_ctl_elem_value_get_*() functions to obtain the actual value."]
+#[doc = ""]
+#[doc = " To write a new value, first use a snd_ctl_elem_value_set_*() to set"]
+#[doc = " it, then call snd_ctl_elem_write() to write it to the driver."]
+pub type snd_ctl_elem_value_t = _snd_ctl_elem_value;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_ctl_event {
+ _unused: [u8; 0],
+}
+#[doc = " CTL event container"]
+pub type snd_ctl_event_t = _snd_ctl_event;
+#[doc = " Invalid type"]
+pub const SND_CTL_ELEM_TYPE_NONE: _snd_ctl_elem_type = 0;
+#[doc = " Boolean contents"]
+pub const SND_CTL_ELEM_TYPE_BOOLEAN: _snd_ctl_elem_type = 1;
+#[doc = " Integer contents"]
+pub const SND_CTL_ELEM_TYPE_INTEGER: _snd_ctl_elem_type = 2;
+#[doc = " Enumerated contents"]
+pub const SND_CTL_ELEM_TYPE_ENUMERATED: _snd_ctl_elem_type = 3;
+#[doc = " Bytes contents"]
+pub const SND_CTL_ELEM_TYPE_BYTES: _snd_ctl_elem_type = 4;
+#[doc = " IEC958 (S/PDIF) setting content"]
+pub const SND_CTL_ELEM_TYPE_IEC958: _snd_ctl_elem_type = 5;
+#[doc = " 64-bit integer contents"]
+pub const SND_CTL_ELEM_TYPE_INTEGER64: _snd_ctl_elem_type = 6;
+#[doc = " 64-bit integer contents"]
+pub const SND_CTL_ELEM_TYPE_LAST: _snd_ctl_elem_type = 6;
+#[doc = " CTL element type"]
+pub type _snd_ctl_elem_type = u32;
+#[doc = " CTL element type"]
+pub use self::_snd_ctl_elem_type as snd_ctl_elem_type_t;
+#[doc = " Card level"]
+pub const SND_CTL_ELEM_IFACE_CARD: _snd_ctl_elem_iface = 0;
+#[doc = " Hardware dependent device"]
+pub const SND_CTL_ELEM_IFACE_HWDEP: _snd_ctl_elem_iface = 1;
+#[doc = " Mixer"]
+pub const SND_CTL_ELEM_IFACE_MIXER: _snd_ctl_elem_iface = 2;
+#[doc = " PCM"]
+pub const SND_CTL_ELEM_IFACE_PCM: _snd_ctl_elem_iface = 3;
+#[doc = " RawMidi"]
+pub const SND_CTL_ELEM_IFACE_RAWMIDI: _snd_ctl_elem_iface = 4;
+#[doc = " Timer"]
+pub const SND_CTL_ELEM_IFACE_TIMER: _snd_ctl_elem_iface = 5;
+#[doc = " Sequencer"]
+pub const SND_CTL_ELEM_IFACE_SEQUENCER: _snd_ctl_elem_iface = 6;
+#[doc = " Sequencer"]
+pub const SND_CTL_ELEM_IFACE_LAST: _snd_ctl_elem_iface = 6;
+#[doc = " CTL related interface"]
+pub type _snd_ctl_elem_iface = u32;
+#[doc = " CTL related interface"]
+pub use self::_snd_ctl_elem_iface as snd_ctl_elem_iface_t;
+#[doc = " Elements related event"]
+pub const SND_CTL_EVENT_ELEM: _snd_ctl_event_type = 0;
+#[doc = " Elements related event"]
+pub const SND_CTL_EVENT_LAST: _snd_ctl_event_type = 0;
+#[doc = " Event class"]
+pub type _snd_ctl_event_type = u32;
+#[doc = " Event class"]
+pub use self::_snd_ctl_event_type as snd_ctl_event_type_t;
+#[doc = " Kernel level CTL"]
+pub const SND_CTL_TYPE_HW: _snd_ctl_type = 0;
+#[doc = " Shared memory client CTL"]
+pub const SND_CTL_TYPE_SHM: _snd_ctl_type = 1;
+#[doc = " INET client CTL (not yet implemented)"]
+pub const SND_CTL_TYPE_INET: _snd_ctl_type = 2;
+#[doc = " External control plugin"]
+pub const SND_CTL_TYPE_EXT: _snd_ctl_type = 3;
+#[doc = " CTL type"]
+pub type _snd_ctl_type = u32;
+#[doc = " CTL type"]
+pub use self::_snd_ctl_type as snd_ctl_type_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_ctl {
+ _unused: [u8; 0],
+}
+#[doc = " CTL handle"]
+pub type snd_ctl_t = _snd_ctl;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_sctl {
+ _unused: [u8; 0],
+}
+#[doc = " SCTL type"]
+pub type snd_sctl_t = _snd_sctl;
+extern "C" {
+ pub fn snd_card_load(card: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_card_next(card: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_card_get_index(name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_card_get_name(
+ card: ::std::os::raw::c_int,
+ name: *mut *mut ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_card_get_longname(
+ card: ::std::os::raw::c_int,
+ name: *mut *mut ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_device_name_hint(
+ card: ::std::os::raw::c_int,
+ iface: *const ::std::os::raw::c_char,
+ hints: *mut *mut *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_device_name_free_hint(
+ hints: *mut *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_device_name_get_hint(
+ hint: *const ::std::os::raw::c_void,
+ id: *const ::std::os::raw::c_char,
+ ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_open(
+ ctl: *mut *mut snd_ctl_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_open_lconf(
+ ctl: *mut *mut snd_ctl_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ lconf: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_open_fallback(
+ ctl: *mut *mut snd_ctl_t,
+ root: *mut snd_config_t,
+ name: *const ::std::os::raw::c_char,
+ orig_name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_close(ctl: *mut snd_ctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_nonblock(
+ ctl: *mut snd_ctl_t,
+ nonblock: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_add_ctl_handler(
+ handler: *mut *mut snd_async_handler_t,
+ ctl: *mut snd_ctl_t,
+ callback: snd_async_callback_t,
+ private_data: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_async_handler_get_ctl(handler: *mut snd_async_handler_t) -> *mut snd_ctl_t;
+}
+extern "C" {
+ pub fn snd_ctl_poll_descriptors_count(ctl: *mut snd_ctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_poll_descriptors(
+ ctl: *mut snd_ctl_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_poll_descriptors_revents(
+ ctl: *mut snd_ctl_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revents: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_subscribe_events(
+ ctl: *mut snd_ctl_t,
+ subscribe: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_card_info(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_ctl_card_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list(
+ ctl: *mut snd_ctl_t,
+ list: *mut snd_ctl_elem_list_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_read(
+ ctl: *mut snd_ctl_t,
+ data: *mut snd_ctl_elem_value_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_write(
+ ctl: *mut snd_ctl_t,
+ data: *mut snd_ctl_elem_value_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_lock(
+ ctl: *mut snd_ctl_t,
+ id: *mut snd_ctl_elem_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_unlock(
+ ctl: *mut snd_ctl_t,
+ id: *mut snd_ctl_elem_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_tlv_read(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ tlv: *mut ::std::os::raw::c_uint,
+ tlv_size: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_tlv_write(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ tlv: *const ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_tlv_command(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ tlv: *const ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_hwdep_next_device(
+ ctl: *mut snd_ctl_t,
+ device: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_hwdep_info(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_hwdep_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_pcm_next_device(
+ ctl: *mut snd_ctl_t,
+ device: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_pcm_info(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_pcm_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_pcm_prefer_subdevice(
+ ctl: *mut snd_ctl_t,
+ subdev: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_rawmidi_next_device(
+ ctl: *mut snd_ctl_t,
+ device: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_rawmidi_info(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_rawmidi_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_rawmidi_prefer_subdevice(
+ ctl: *mut snd_ctl_t,
+ subdev: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_set_power_state(
+ ctl: *mut snd_ctl_t,
+ state: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_get_power_state(
+ ctl: *mut snd_ctl_t,
+ state: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_read(ctl: *mut snd_ctl_t, event: *mut snd_ctl_event_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_wait(
+ ctl: *mut snd_ctl_t,
+ timeout: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_name(ctl: *mut snd_ctl_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_type(ctl: *mut snd_ctl_t) -> snd_ctl_type_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_type_name(type_: snd_ctl_elem_type_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_elem_iface_name(iface: snd_ctl_elem_iface_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_event_type_name(type_: snd_ctl_event_type_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_mask(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_numid(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_id(obj: *const snd_ctl_event_t, ptr: *mut snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_interface(obj: *const snd_ctl_event_t) -> snd_ctl_elem_iface_t;
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_device(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_subdevice(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_name(
+ obj: *const snd_ctl_event_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_event_elem_get_index(obj: *const snd_ctl_event_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_alloc_space(
+ obj: *mut snd_ctl_elem_list_t,
+ entries: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_free_space(obj: *mut snd_ctl_elem_list_t);
+}
+extern "C" {
+ pub fn snd_ctl_ascii_elem_id_get(id: *mut snd_ctl_elem_id_t) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_ascii_elem_id_parse(
+ dst: *mut snd_ctl_elem_id_t,
+ str: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_ascii_value_parse(
+ handle: *mut snd_ctl_t,
+ dst: *mut snd_ctl_elem_value_t,
+ info: *mut snd_ctl_elem_info_t,
+ value: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_malloc(ptr: *mut *mut snd_ctl_elem_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_free(obj: *mut snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_clear(obj: *mut snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_copy(dst: *mut snd_ctl_elem_id_t, src: *const snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_get_numid(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_get_interface(obj: *const snd_ctl_elem_id_t) -> snd_ctl_elem_iface_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_get_device(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_get_subdevice(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_get_name(obj: *const snd_ctl_elem_id_t)
+ -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_get_index(obj: *const snd_ctl_elem_id_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_set_numid(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_set_interface(obj: *mut snd_ctl_elem_id_t, val: snd_ctl_elem_iface_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_set_device(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_set_subdevice(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_set_name(
+ obj: *mut snd_ctl_elem_id_t,
+ val: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_id_set_index(obj: *mut snd_ctl_elem_id_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_card_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_malloc(ptr: *mut *mut snd_ctl_card_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_free(obj: *mut snd_ctl_card_info_t);
+}
+extern "C" {
+ pub fn snd_ctl_card_info_clear(obj: *mut snd_ctl_card_info_t);
+}
+extern "C" {
+ pub fn snd_ctl_card_info_copy(dst: *mut snd_ctl_card_info_t, src: *const snd_ctl_card_info_t);
+}
+extern "C" {
+ pub fn snd_ctl_card_info_get_card(obj: *const snd_ctl_card_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_get_id(
+ obj: *const snd_ctl_card_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_get_driver(
+ obj: *const snd_ctl_card_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_get_name(
+ obj: *const snd_ctl_card_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_get_longname(
+ obj: *const snd_ctl_card_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_get_mixername(
+ obj: *const snd_ctl_card_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_card_info_get_components(
+ obj: *const snd_ctl_card_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_event_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_ctl_event_malloc(ptr: *mut *mut snd_ctl_event_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_event_free(obj: *mut snd_ctl_event_t);
+}
+extern "C" {
+ pub fn snd_ctl_event_clear(obj: *mut snd_ctl_event_t);
+}
+extern "C" {
+ pub fn snd_ctl_event_copy(dst: *mut snd_ctl_event_t, src: *const snd_ctl_event_t);
+}
+extern "C" {
+ pub fn snd_ctl_event_get_type(obj: *const snd_ctl_event_t) -> snd_ctl_event_type_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_malloc(ptr: *mut *mut snd_ctl_elem_list_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_free(obj: *mut snd_ctl_elem_list_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_clear(obj: *mut snd_ctl_elem_list_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_copy(dst: *mut snd_ctl_elem_list_t, src: *const snd_ctl_elem_list_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_set_offset(obj: *mut snd_ctl_elem_list_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_used(obj: *const snd_ctl_elem_list_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_count(obj: *const snd_ctl_elem_list_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_id(
+ obj: *const snd_ctl_elem_list_t,
+ idx: ::std::os::raw::c_uint,
+ ptr: *mut snd_ctl_elem_id_t,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_numid(
+ obj: *const snd_ctl_elem_list_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_interface(
+ obj: *const snd_ctl_elem_list_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> snd_ctl_elem_iface_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_device(
+ obj: *const snd_ctl_elem_list_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_subdevice(
+ obj: *const snd_ctl_elem_list_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_name(
+ obj: *const snd_ctl_elem_list_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_elem_list_get_index(
+ obj: *const snd_ctl_elem_list_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_malloc(ptr: *mut *mut snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_free(obj: *mut snd_ctl_elem_info_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_clear(obj: *mut snd_ctl_elem_info_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_copy(dst: *mut snd_ctl_elem_info_t, src: *const snd_ctl_elem_info_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_type(obj: *const snd_ctl_elem_info_t) -> snd_ctl_elem_type_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_readable(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_writable(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_volatile(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_inactive(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_locked(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_tlv_readable(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_tlv_writable(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_tlv_commandable(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_owner(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_is_user(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_owner(obj: *const snd_ctl_elem_info_t) -> pid_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_count(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_min(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_max(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_step(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_min64(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_longlong;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_max64(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_longlong;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_step64(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_longlong;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_items(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_item(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_item_name(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_dimensions(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_dimension(
+ obj: *const snd_ctl_elem_info_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_dimension(
+ info: *mut snd_ctl_elem_info_t,
+ dimension: *const ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_id(obj: *const snd_ctl_elem_info_t, ptr: *mut snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_numid(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_interface(obj: *const snd_ctl_elem_info_t)
+ -> snd_ctl_elem_iface_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_device(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_subdevice(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_name(
+ obj: *const snd_ctl_elem_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_get_index(obj: *const snd_ctl_elem_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_id(obj: *mut snd_ctl_elem_info_t, ptr: *const snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_numid(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_interface(
+ obj: *mut snd_ctl_elem_info_t,
+ val: snd_ctl_elem_iface_t,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_device(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_subdevice(
+ obj: *mut snd_ctl_elem_info_t,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_name(
+ obj: *mut snd_ctl_elem_info_t,
+ val: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_info_set_index(obj: *mut snd_ctl_elem_info_t, val: ::std::os::raw::c_uint);
+}
+extern "C" {
+ pub fn snd_ctl_add_integer_elem_set(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_ctl_elem_info_t,
+ element_count: ::std::os::raw::c_uint,
+ member_count: ::std::os::raw::c_uint,
+ min: ::std::os::raw::c_long,
+ max: ::std::os::raw::c_long,
+ step: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_add_integer64_elem_set(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_ctl_elem_info_t,
+ element_count: ::std::os::raw::c_uint,
+ member_count: ::std::os::raw::c_uint,
+ min: ::std::os::raw::c_longlong,
+ max: ::std::os::raw::c_longlong,
+ step: ::std::os::raw::c_longlong,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_add_boolean_elem_set(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_ctl_elem_info_t,
+ element_count: ::std::os::raw::c_uint,
+ member_count: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_add_enumerated_elem_set(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_ctl_elem_info_t,
+ element_count: ::std::os::raw::c_uint,
+ member_count: ::std::os::raw::c_uint,
+ items: ::std::os::raw::c_uint,
+ labels: *const *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_add_bytes_elem_set(
+ ctl: *mut snd_ctl_t,
+ info: *mut snd_ctl_elem_info_t,
+ element_count: ::std::os::raw::c_uint,
+ member_count: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_add_integer(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ count: ::std::os::raw::c_uint,
+ imin: ::std::os::raw::c_long,
+ imax: ::std::os::raw::c_long,
+ istep: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_add_integer64(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ count: ::std::os::raw::c_uint,
+ imin: ::std::os::raw::c_longlong,
+ imax: ::std::os::raw::c_longlong,
+ istep: ::std::os::raw::c_longlong,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_add_boolean(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ count: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_add_enumerated(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ count: ::std::os::raw::c_uint,
+ items: ::std::os::raw::c_uint,
+ names: *const *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_add_iec958(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_remove(
+ ctl: *mut snd_ctl_t,
+ id: *mut snd_ctl_elem_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_malloc(ptr: *mut *mut snd_ctl_elem_value_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_free(obj: *mut snd_ctl_elem_value_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_clear(obj: *mut snd_ctl_elem_value_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_copy(
+ dst: *mut snd_ctl_elem_value_t,
+ src: *const snd_ctl_elem_value_t,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_compare(
+ left: *mut snd_ctl_elem_value_t,
+ right: *const snd_ctl_elem_value_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_id(obj: *const snd_ctl_elem_value_t, ptr: *mut snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_numid(obj: *const snd_ctl_elem_value_t)
+ -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_interface(
+ obj: *const snd_ctl_elem_value_t,
+ ) -> snd_ctl_elem_iface_t;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_device(
+ obj: *const snd_ctl_elem_value_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_subdevice(
+ obj: *const snd_ctl_elem_value_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_name(
+ obj: *const snd_ctl_elem_value_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_index(obj: *const snd_ctl_elem_value_t)
+ -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_id(obj: *mut snd_ctl_elem_value_t, ptr: *const snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_numid(
+ obj: *mut snd_ctl_elem_value_t,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_interface(
+ obj: *mut snd_ctl_elem_value_t,
+ val: snd_ctl_elem_iface_t,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_device(
+ obj: *mut snd_ctl_elem_value_t,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_subdevice(
+ obj: *mut snd_ctl_elem_value_t,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_name(
+ obj: *mut snd_ctl_elem_value_t,
+ val: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_index(
+ obj: *mut snd_ctl_elem_value_t,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_boolean(
+ obj: *const snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_integer(
+ obj: *const snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_integer64(
+ obj: *const snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_longlong;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_enumerated(
+ obj: *const snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_byte(
+ obj: *const snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_uchar;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_boolean(
+ obj: *mut snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ val: ::std::os::raw::c_long,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_integer(
+ obj: *mut snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ val: ::std::os::raw::c_long,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_integer64(
+ obj: *mut snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ val: ::std::os::raw::c_longlong,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_enumerated(
+ obj: *mut snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_byte(
+ obj: *mut snd_ctl_elem_value_t,
+ idx: ::std::os::raw::c_uint,
+ val: ::std::os::raw::c_uchar,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_set_bytes(
+ obj: *mut snd_ctl_elem_value_t,
+ data: *mut ::std::os::raw::c_void,
+ size: usize,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_bytes(
+ obj: *const snd_ctl_elem_value_t,
+ ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_get_iec958(
+ obj: *const snd_ctl_elem_value_t,
+ ptr: *mut snd_aes_iec958_t,
+ );
+}
+extern "C" {
+ pub fn snd_ctl_elem_value_set_iec958(
+ obj: *mut snd_ctl_elem_value_t,
+ ptr: *const snd_aes_iec958_t,
+ );
+}
+extern "C" {
+ pub fn snd_tlv_parse_dB_info(
+ tlv: *mut ::std::os::raw::c_uint,
+ tlv_size: ::std::os::raw::c_uint,
+ db_tlvp: *mut *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_tlv_get_dB_range(
+ tlv: *mut ::std::os::raw::c_uint,
+ rangemin: ::std::os::raw::c_long,
+ rangemax: ::std::os::raw::c_long,
+ min: *mut ::std::os::raw::c_long,
+ max: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_tlv_convert_to_dB(
+ tlv: *mut ::std::os::raw::c_uint,
+ rangemin: ::std::os::raw::c_long,
+ rangemax: ::std::os::raw::c_long,
+ volume: ::std::os::raw::c_long,
+ db_gain: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_tlv_convert_from_dB(
+ tlv: *mut ::std::os::raw::c_uint,
+ rangemin: ::std::os::raw::c_long,
+ rangemax: ::std::os::raw::c_long,
+ db_gain: ::std::os::raw::c_long,
+ value: *mut ::std::os::raw::c_long,
+ xdir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_get_dB_range(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ min: *mut ::std::os::raw::c_long,
+ max: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_convert_to_dB(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ volume: ::std::os::raw::c_long,
+ db_gain: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_ctl_convert_from_dB(
+ ctl: *mut snd_ctl_t,
+ id: *const snd_ctl_elem_id_t,
+ db_gain: ::std::os::raw::c_long,
+ value: *mut ::std::os::raw::c_long,
+ xdir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_hctl_elem {
+ _unused: [u8; 0],
+}
+#[doc = " HCTL element handle"]
+pub type snd_hctl_elem_t = _snd_hctl_elem;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_hctl {
+ _unused: [u8; 0],
+}
+#[doc = " HCTL handle"]
+pub type snd_hctl_t = _snd_hctl;
+#[doc = " \\brief Compare function for sorting HCTL elements"]
+#[doc = " \\param e1 First element"]
+#[doc = " \\param e2 Second element"]
+#[doc = " \\return -1 if e1 < e2, 0 if e1 == e2, 1 if e1 > e2"]
+pub type snd_hctl_compare_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ e1: *const snd_hctl_elem_t,
+ e2: *const snd_hctl_elem_t,
+ ) -> ::std::os::raw::c_int,
+>;
+extern "C" {
+ pub fn snd_hctl_compare_fast(
+ c1: *const snd_hctl_elem_t,
+ c2: *const snd_hctl_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[doc = " \\brief HCTL callback function"]
+#[doc = " \\param hctl HCTL handle"]
+#[doc = " \\param mask event mask"]
+#[doc = " \\param elem related HCTL element (if any)"]
+#[doc = " \\return 0 on success otherwise a negative error code"]
+pub type snd_hctl_callback_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ hctl: *mut snd_hctl_t,
+ mask: ::std::os::raw::c_uint,
+ elem: *mut snd_hctl_elem_t,
+ ) -> ::std::os::raw::c_int,
+>;
+#[doc = " \\brief HCTL element callback function"]
+#[doc = " \\param elem HCTL element"]
+#[doc = " \\param mask event mask"]
+#[doc = " \\return 0 on success otherwise a negative error code"]
+pub type snd_hctl_elem_callback_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ elem: *mut snd_hctl_elem_t,
+ mask: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int,
+>;
+extern "C" {
+ pub fn snd_hctl_open(
+ hctl: *mut *mut snd_hctl_t,
+ name: *const ::std::os::raw::c_char,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_open_ctl(
+ hctlp: *mut *mut snd_hctl_t,
+ ctl: *mut snd_ctl_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_close(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_nonblock(
+ hctl: *mut snd_hctl_t,
+ nonblock: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_poll_descriptors_count(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_poll_descriptors(
+ hctl: *mut snd_hctl_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_poll_descriptors_revents(
+ ctl: *mut snd_hctl_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revents: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_get_count(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hctl_set_compare(
+ hctl: *mut snd_hctl_t,
+ hsort: snd_hctl_compare_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_first_elem(hctl: *mut snd_hctl_t) -> *mut snd_hctl_elem_t;
+}
+extern "C" {
+ pub fn snd_hctl_last_elem(hctl: *mut snd_hctl_t) -> *mut snd_hctl_elem_t;
+}
+extern "C" {
+ pub fn snd_hctl_find_elem(
+ hctl: *mut snd_hctl_t,
+ id: *const snd_ctl_elem_id_t,
+ ) -> *mut snd_hctl_elem_t;
+}
+extern "C" {
+ pub fn snd_hctl_set_callback(hctl: *mut snd_hctl_t, callback: snd_hctl_callback_t);
+}
+extern "C" {
+ pub fn snd_hctl_set_callback_private(hctl: *mut snd_hctl_t, data: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+ pub fn snd_hctl_get_callback_private(hctl: *mut snd_hctl_t) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_hctl_load(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_free(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_handle_events(hctl: *mut snd_hctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_name(hctl: *mut snd_hctl_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_hctl_wait(
+ hctl: *mut snd_hctl_t,
+ timeout: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_ctl(hctl: *mut snd_hctl_t) -> *mut snd_ctl_t;
+}
+extern "C" {
+ pub fn snd_hctl_elem_next(elem: *mut snd_hctl_elem_t) -> *mut snd_hctl_elem_t;
+}
+extern "C" {
+ pub fn snd_hctl_elem_prev(elem: *mut snd_hctl_elem_t) -> *mut snd_hctl_elem_t;
+}
+extern "C" {
+ pub fn snd_hctl_elem_info(
+ elem: *mut snd_hctl_elem_t,
+ info: *mut snd_ctl_elem_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_elem_read(
+ elem: *mut snd_hctl_elem_t,
+ value: *mut snd_ctl_elem_value_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_elem_write(
+ elem: *mut snd_hctl_elem_t,
+ value: *mut snd_ctl_elem_value_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_elem_tlv_read(
+ elem: *mut snd_hctl_elem_t,
+ tlv: *mut ::std::os::raw::c_uint,
+ tlv_size: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_elem_tlv_write(
+ elem: *mut snd_hctl_elem_t,
+ tlv: *const ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_elem_tlv_command(
+ elem: *mut snd_hctl_elem_t,
+ tlv: *const ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_hctl(elem: *mut snd_hctl_elem_t) -> *mut snd_hctl_t;
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_id(obj: *const snd_hctl_elem_t, ptr: *mut snd_ctl_elem_id_t);
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_numid(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_interface(obj: *const snd_hctl_elem_t) -> snd_ctl_elem_iface_t;
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_device(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_subdevice(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_name(obj: *const snd_hctl_elem_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_index(obj: *const snd_hctl_elem_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_hctl_elem_set_callback(obj: *mut snd_hctl_elem_t, val: snd_hctl_elem_callback_t);
+}
+extern "C" {
+ pub fn snd_hctl_elem_get_callback_private(
+ obj: *const snd_hctl_elem_t,
+ ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_hctl_elem_set_callback_private(
+ obj: *mut snd_hctl_elem_t,
+ val: *mut ::std::os::raw::c_void,
+ );
+}
+extern "C" {
+ #[doc = " \\defgroup SControl Setup Control Interface"]
+ #[doc = " \\ingroup Control"]
+ #[doc = " The setup control interface - set or modify control elements from a configuration file."]
+ #[doc = " \\{"]
+ pub fn snd_sctl_build(
+ ctl: *mut *mut snd_sctl_t,
+ handle: *mut snd_ctl_t,
+ config: *mut snd_config_t,
+ private_data: *mut snd_config_t,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_sctl_free(handle: *mut snd_sctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_sctl_install(handle: *mut snd_sctl_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_sctl_remove(handle: *mut snd_sctl_t) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_mixer {
+ _unused: [u8; 0],
+}
+#[doc = " Mixer handle"]
+pub type snd_mixer_t = _snd_mixer;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_mixer_class {
+ _unused: [u8; 0],
+}
+#[doc = " Mixer elements class handle"]
+pub type snd_mixer_class_t = _snd_mixer_class;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_mixer_elem {
+ _unused: [u8; 0],
+}
+#[doc = " Mixer element handle"]
+pub type snd_mixer_elem_t = _snd_mixer_elem;
+#[doc = " \\brief Mixer callback function"]
+#[doc = " \\param mixer Mixer handle"]
+#[doc = " \\param mask event mask"]
+#[doc = " \\param elem related mixer element (if any)"]
+#[doc = " \\return 0 on success otherwise a negative error code"]
+pub type snd_mixer_callback_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ ctl: *mut snd_mixer_t,
+ mask: ::std::os::raw::c_uint,
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int,
+>;
+#[doc = " \\brief Mixer element callback function"]
+#[doc = " \\param elem Mixer element"]
+#[doc = " \\param mask event mask"]
+#[doc = " \\return 0 on success otherwise a negative error code"]
+pub type snd_mixer_elem_callback_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ elem: *mut snd_mixer_elem_t,
+ mask: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int,
+>;
+#[doc = " \\brief Compare function for sorting mixer elements"]
+#[doc = " \\param e1 First element"]
+#[doc = " \\param e2 Second element"]
+#[doc = " \\return -1 if e1 < e2, 0 if e1 == e2, 1 if e1 > e2"]
+pub type snd_mixer_compare_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ e1: *const snd_mixer_elem_t,
+ e2: *const snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int,
+>;
+#[doc = " \\brief Event callback for the mixer class"]
+#[doc = " \\param class_ Mixer class"]
+#[doc = " \\param mask Event mask (SND_CTL_EVENT_*)"]
+#[doc = " \\param helem HCTL element which invoked the event"]
+#[doc = " \\param melem Mixer element associated to HCTL element"]
+#[doc = " \\return zero if success, otherwise a negative error value"]
+pub type snd_mixer_event_t = ::std::option::Option<
+ unsafe extern "C" fn(
+ class_: *mut snd_mixer_class_t,
+ mask: ::std::os::raw::c_uint,
+ helem: *mut snd_hctl_elem_t,
+ melem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int,
+>;
+pub const SND_MIXER_ELEM_SIMPLE: _snd_mixer_elem_type = 0;
+pub const SND_MIXER_ELEM_LAST: _snd_mixer_elem_type = 0;
+#[doc = " Mixer element type"]
+pub type _snd_mixer_elem_type = u32;
+#[doc = " Mixer element type"]
+pub use self::_snd_mixer_elem_type as snd_mixer_elem_type_t;
+extern "C" {
+ pub fn snd_mixer_open(
+ mixer: *mut *mut snd_mixer_t,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_close(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_first_elem(mixer: *mut snd_mixer_t) -> *mut snd_mixer_elem_t;
+}
+extern "C" {
+ pub fn snd_mixer_last_elem(mixer: *mut snd_mixer_t) -> *mut snd_mixer_elem_t;
+}
+extern "C" {
+ pub fn snd_mixer_handle_events(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_attach(
+ mixer: *mut snd_mixer_t,
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_attach_hctl(
+ mixer: *mut snd_mixer_t,
+ hctl: *mut snd_hctl_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_detach(
+ mixer: *mut snd_mixer_t,
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_detach_hctl(
+ mixer: *mut snd_mixer_t,
+ hctl: *mut snd_hctl_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_get_hctl(
+ mixer: *mut snd_mixer_t,
+ name: *const ::std::os::raw::c_char,
+ hctl: *mut *mut snd_hctl_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_poll_descriptors_count(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_poll_descriptors(
+ mixer: *mut snd_mixer_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_poll_descriptors_revents(
+ mixer: *mut snd_mixer_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revents: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_load(mixer: *mut snd_mixer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_free(mixer: *mut snd_mixer_t);
+}
+extern "C" {
+ pub fn snd_mixer_wait(
+ mixer: *mut snd_mixer_t,
+ timeout: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_set_compare(
+ mixer: *mut snd_mixer_t,
+ msort: snd_mixer_compare_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_set_callback(obj: *mut snd_mixer_t, val: snd_mixer_callback_t);
+}
+extern "C" {
+ pub fn snd_mixer_get_callback_private(obj: *const snd_mixer_t) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_mixer_set_callback_private(obj: *mut snd_mixer_t, val: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+ pub fn snd_mixer_get_count(obj: *const snd_mixer_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_mixer_class_unregister(clss: *mut snd_mixer_class_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_next(elem: *mut snd_mixer_elem_t) -> *mut snd_mixer_elem_t;
+}
+extern "C" {
+ pub fn snd_mixer_elem_prev(elem: *mut snd_mixer_elem_t) -> *mut snd_mixer_elem_t;
+}
+extern "C" {
+ pub fn snd_mixer_elem_set_callback(obj: *mut snd_mixer_elem_t, val: snd_mixer_elem_callback_t);
+}
+extern "C" {
+ pub fn snd_mixer_elem_get_callback_private(
+ obj: *const snd_mixer_elem_t,
+ ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_mixer_elem_set_callback_private(
+ obj: *mut snd_mixer_elem_t,
+ val: *mut ::std::os::raw::c_void,
+ );
+}
+extern "C" {
+ pub fn snd_mixer_elem_get_type(obj: *const snd_mixer_elem_t) -> snd_mixer_elem_type_t;
+}
+extern "C" {
+ pub fn snd_mixer_class_register(
+ class_: *mut snd_mixer_class_t,
+ mixer: *mut snd_mixer_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_new(
+ elem: *mut *mut snd_mixer_elem_t,
+ type_: snd_mixer_elem_type_t,
+ compare_weight: ::std::os::raw::c_int,
+ private_data: *mut ::std::os::raw::c_void,
+ private_free: ::std::option::Option<unsafe extern "C" fn(elem: *mut snd_mixer_elem_t)>,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_add(
+ elem: *mut snd_mixer_elem_t,
+ class_: *mut snd_mixer_class_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_remove(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_free(elem: *mut snd_mixer_elem_t);
+}
+extern "C" {
+ pub fn snd_mixer_elem_info(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_value(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_attach(
+ melem: *mut snd_mixer_elem_t,
+ helem: *mut snd_hctl_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_detach(
+ melem: *mut snd_mixer_elem_t,
+ helem: *mut snd_hctl_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_empty(melem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_elem_get_private(
+ melem: *const snd_mixer_elem_t,
+ ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_mixer_class_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_mixer_class_malloc(ptr: *mut *mut snd_mixer_class_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_class_free(obj: *mut snd_mixer_class_t);
+}
+extern "C" {
+ pub fn snd_mixer_class_copy(dst: *mut snd_mixer_class_t, src: *const snd_mixer_class_t);
+}
+extern "C" {
+ pub fn snd_mixer_class_get_mixer(class_: *const snd_mixer_class_t) -> *mut snd_mixer_t;
+}
+extern "C" {
+ pub fn snd_mixer_class_get_event(class_: *const snd_mixer_class_t) -> snd_mixer_event_t;
+}
+extern "C" {
+ pub fn snd_mixer_class_get_private(
+ class_: *const snd_mixer_class_t,
+ ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+ pub fn snd_mixer_class_get_compare(class_: *const snd_mixer_class_t) -> snd_mixer_compare_t;
+}
+extern "C" {
+ pub fn snd_mixer_class_set_event(
+ class_: *mut snd_mixer_class_t,
+ event: snd_mixer_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_class_set_private(
+ class_: *mut snd_mixer_class_t,
+ private_data: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_class_set_private_free(
+ class_: *mut snd_mixer_class_t,
+ private_free: ::std::option::Option<unsafe extern "C" fn(arg1: *mut snd_mixer_class_t)>,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_class_set_compare(
+ class_: *mut snd_mixer_class_t,
+ compare: snd_mixer_compare_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[doc = " Unknown"]
+pub const SND_MIXER_SCHN_UNKNOWN: _snd_mixer_selem_channel_id = -1;
+#[doc = " Front left"]
+pub const SND_MIXER_SCHN_FRONT_LEFT: _snd_mixer_selem_channel_id = 0;
+#[doc = " Front right"]
+pub const SND_MIXER_SCHN_FRONT_RIGHT: _snd_mixer_selem_channel_id = 1;
+#[doc = " Rear left"]
+pub const SND_MIXER_SCHN_REAR_LEFT: _snd_mixer_selem_channel_id = 2;
+#[doc = " Rear right"]
+pub const SND_MIXER_SCHN_REAR_RIGHT: _snd_mixer_selem_channel_id = 3;
+#[doc = " Front center"]
+pub const SND_MIXER_SCHN_FRONT_CENTER: _snd_mixer_selem_channel_id = 4;
+#[doc = " Woofer"]
+pub const SND_MIXER_SCHN_WOOFER: _snd_mixer_selem_channel_id = 5;
+#[doc = " Side Left"]
+pub const SND_MIXER_SCHN_SIDE_LEFT: _snd_mixer_selem_channel_id = 6;
+#[doc = " Side Right"]
+pub const SND_MIXER_SCHN_SIDE_RIGHT: _snd_mixer_selem_channel_id = 7;
+#[doc = " Rear Center"]
+pub const SND_MIXER_SCHN_REAR_CENTER: _snd_mixer_selem_channel_id = 8;
+#[doc = " Rear Center"]
+pub const SND_MIXER_SCHN_LAST: _snd_mixer_selem_channel_id = 31;
+#[doc = " Mono (Front left alias)"]
+pub const SND_MIXER_SCHN_MONO: _snd_mixer_selem_channel_id = 0;
+#[doc = " Mixer simple element channel identifier"]
+pub type _snd_mixer_selem_channel_id = i32;
+#[doc = " Mixer simple element channel identifier"]
+pub use self::_snd_mixer_selem_channel_id as snd_mixer_selem_channel_id_t;
+#[doc = " no abstraction - try use all universal controls from driver"]
+pub const SND_MIXER_SABSTRACT_NONE: snd_mixer_selem_regopt_abstract = 0;
+#[doc = " basic abstraction - Master,PCM,CD,Aux,Record-Gain etc."]
+pub const SND_MIXER_SABSTRACT_BASIC: snd_mixer_selem_regopt_abstract = 1;
+#[doc = " Mixer simple element - register options - abstraction level"]
+pub type snd_mixer_selem_regopt_abstract = u32;
+#[doc = " Mixer simple element - register options"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_mixer_selem_regopt {
+ #[doc = " structure version"]
+ pub ver: ::std::os::raw::c_int,
+ #[doc = " v1: abstract layer selection"]
+ pub abstract_: snd_mixer_selem_regopt_abstract,
+ #[doc = " v1: device name (must be NULL when playback_pcm or capture_pcm != NULL)"]
+ pub device: *const ::std::os::raw::c_char,
+ #[doc = " v1: playback PCM connected to mixer device (NULL == none)"]
+ pub playback_pcm: *mut snd_pcm_t,
+ #[doc = " v1: capture PCM connected to mixer device (NULL == none)"]
+ pub capture_pcm: *mut snd_pcm_t,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_mixer_selem_id {
+ _unused: [u8; 0],
+}
+#[doc = " Mixer simple element identifier"]
+pub type snd_mixer_selem_id_t = _snd_mixer_selem_id;
+extern "C" {
+ pub fn snd_mixer_selem_channel_name(
+ channel: snd_mixer_selem_channel_id_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_mixer_selem_register(
+ mixer: *mut snd_mixer_t,
+ options: *mut snd_mixer_selem_regopt,
+ classp: *mut *mut snd_mixer_class_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_id(element: *mut snd_mixer_elem_t, id: *mut snd_mixer_selem_id_t);
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_name(elem: *mut snd_mixer_elem_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_index(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_mixer_find_selem(
+ mixer: *mut snd_mixer_t,
+ id: *const snd_mixer_selem_id_t,
+ ) -> *mut snd_mixer_elem_t;
+}
+extern "C" {
+ pub fn snd_mixer_selem_is_active(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_is_playback_mono(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_playback_channel(
+ obj: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_is_capture_mono(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_capture_channel(
+ obj: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_capture_group(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_common_volume(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_playback_volume(
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_playback_volume_joined(
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_capture_volume(elem: *mut snd_mixer_elem_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_capture_volume_joined(
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_common_switch(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_playback_switch(
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_playback_switch_joined(
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_capture_switch(elem: *mut snd_mixer_elem_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_capture_switch_joined(
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_has_capture_switch_exclusive(
+ elem: *mut snd_mixer_elem_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_ask_playback_vol_dB(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_long,
+ dBvalue: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_ask_capture_vol_dB(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_long,
+ dBvalue: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_ask_playback_dB_vol(
+ elem: *mut snd_mixer_elem_t,
+ dBvalue: ::std::os::raw::c_long,
+ dir: ::std::os::raw::c_int,
+ value: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_ask_capture_dB_vol(
+ elem: *mut snd_mixer_elem_t,
+ dBvalue: ::std::os::raw::c_long,
+ dir: ::std::os::raw::c_int,
+ value: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_playback_volume(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_capture_volume(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_playback_dB(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_capture_dB(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_playback_switch(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_capture_switch(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: *mut ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_playback_volume(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_capture_volume(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_playback_dB(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: ::std::os::raw::c_long,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_capture_dB(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: ::std::os::raw::c_long,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_playback_volume_all(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_capture_volume_all(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_playback_dB_all(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_long,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_capture_dB_all(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_long,
+ dir: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_playback_switch(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_capture_switch(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ value: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_playback_switch_all(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_capture_switch_all(
+ elem: *mut snd_mixer_elem_t,
+ value: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_playback_volume_range(
+ elem: *mut snd_mixer_elem_t,
+ min: *mut ::std::os::raw::c_long,
+ max: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_playback_dB_range(
+ elem: *mut snd_mixer_elem_t,
+ min: *mut ::std::os::raw::c_long,
+ max: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_playback_volume_range(
+ elem: *mut snd_mixer_elem_t,
+ min: ::std::os::raw::c_long,
+ max: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_capture_volume_range(
+ elem: *mut snd_mixer_elem_t,
+ min: *mut ::std::os::raw::c_long,
+ max: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_capture_dB_range(
+ elem: *mut snd_mixer_elem_t,
+ min: *mut ::std::os::raw::c_long,
+ max: *mut ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_capture_volume_range(
+ elem: *mut snd_mixer_elem_t,
+ min: ::std::os::raw::c_long,
+ max: ::std::os::raw::c_long,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_is_enumerated(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_is_enum_playback(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_is_enum_capture(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_enum_items(elem: *mut snd_mixer_elem_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_enum_item_name(
+ elem: *mut snd_mixer_elem_t,
+ idx: ::std::os::raw::c_uint,
+ maxlen: usize,
+ str: *mut ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_get_enum_item(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ idxp: *mut ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_set_enum_item(
+ elem: *mut snd_mixer_elem_t,
+ channel: snd_mixer_selem_channel_id_t,
+ idx: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_malloc(ptr: *mut *mut snd_mixer_selem_id_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_free(obj: *mut snd_mixer_selem_id_t);
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_copy(
+ dst: *mut snd_mixer_selem_id_t,
+ src: *const snd_mixer_selem_id_t,
+ );
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_get_name(
+ obj: *const snd_mixer_selem_id_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_get_index(obj: *const snd_mixer_selem_id_t)
+ -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_set_name(
+ obj: *mut snd_mixer_selem_id_t,
+ val: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_set_index(
+ obj: *mut snd_mixer_selem_id_t,
+ val: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_mixer_selem_id_parse(
+ dst: *mut snd_mixer_selem_id_t,
+ str: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+#[doc = " Sequencer event data type"]
+pub type snd_seq_event_type_t = ::std::os::raw::c_uchar;
+#[doc = " system status; event data type = #snd_seq_result_t"]
+pub const SND_SEQ_EVENT_SYSTEM: snd_seq_event_type = 0;
+#[doc = " returned result status; event data type = #snd_seq_result_t"]
+pub const SND_SEQ_EVENT_RESULT: snd_seq_event_type = 1;
+#[doc = " note on and off with duration; event data type = #snd_seq_ev_note_t"]
+pub const SND_SEQ_EVENT_NOTE: snd_seq_event_type = 5;
+#[doc = " note on; event data type = #snd_seq_ev_note_t"]
+pub const SND_SEQ_EVENT_NOTEON: snd_seq_event_type = 6;
+#[doc = " note off; event data type = #snd_seq_ev_note_t"]
+pub const SND_SEQ_EVENT_NOTEOFF: snd_seq_event_type = 7;
+#[doc = " key pressure change (aftertouch); event data type = #snd_seq_ev_note_t"]
+pub const SND_SEQ_EVENT_KEYPRESS: snd_seq_event_type = 8;
+#[doc = " controller; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_CONTROLLER: snd_seq_event_type = 10;
+#[doc = " program change; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_PGMCHANGE: snd_seq_event_type = 11;
+#[doc = " channel pressure; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_CHANPRESS: snd_seq_event_type = 12;
+#[doc = " pitchwheel; event data type = #snd_seq_ev_ctrl_t; data is from -8192 to 8191)"]
+pub const SND_SEQ_EVENT_PITCHBEND: snd_seq_event_type = 13;
+#[doc = " 14 bit controller value; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_CONTROL14: snd_seq_event_type = 14;
+#[doc = " 14 bit NRPN; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_NONREGPARAM: snd_seq_event_type = 15;
+#[doc = " 14 bit RPN; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_REGPARAM: snd_seq_event_type = 16;
+#[doc = " SPP with LSB and MSB values; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_SONGPOS: snd_seq_event_type = 20;
+#[doc = " Song Select with song ID number; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_SONGSEL: snd_seq_event_type = 21;
+#[doc = " midi time code quarter frame; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_QFRAME: snd_seq_event_type = 22;
+#[doc = " SMF Time Signature event; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_TIMESIGN: snd_seq_event_type = 23;
+#[doc = " SMF Key Signature event; event data type = #snd_seq_ev_ctrl_t"]
+pub const SND_SEQ_EVENT_KEYSIGN: snd_seq_event_type = 24;
+#[doc = " MIDI Real Time Start message; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_START: snd_seq_event_type = 30;
+#[doc = " MIDI Real Time Continue message; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_CONTINUE: snd_seq_event_type = 31;
+#[doc = " MIDI Real Time Stop message; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_STOP: snd_seq_event_type = 32;
+#[doc = " Set tick queue position; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_SETPOS_TICK: snd_seq_event_type = 33;
+#[doc = " Set real-time queue position; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_SETPOS_TIME: snd_seq_event_type = 34;
+#[doc = " (SMF) Tempo event; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_TEMPO: snd_seq_event_type = 35;
+#[doc = " MIDI Real Time Clock message; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_CLOCK: snd_seq_event_type = 36;
+#[doc = " MIDI Real Time Tick message; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_TICK: snd_seq_event_type = 37;
+#[doc = " Queue timer skew; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_QUEUE_SKEW: snd_seq_event_type = 38;
+#[doc = " Sync position changed; event data type = #snd_seq_ev_queue_control_t"]
+pub const SND_SEQ_EVENT_SYNC_POS: snd_seq_event_type = 39;
+#[doc = " Tune request; event data type = none"]
+pub const SND_SEQ_EVENT_TUNE_REQUEST: snd_seq_event_type = 40;
+#[doc = " Reset to power-on state; event data type = none"]
+pub const SND_SEQ_EVENT_RESET: snd_seq_event_type = 41;
+#[doc = " Active sensing event; event data type = none"]
+pub const SND_SEQ_EVENT_SENSING: snd_seq_event_type = 42;
+#[doc = " Echo-back event; event data type = any type"]
+pub const SND_SEQ_EVENT_ECHO: snd_seq_event_type = 50;
+#[doc = " OSS emulation raw event; event data type = any type"]
+pub const SND_SEQ_EVENT_OSS: snd_seq_event_type = 51;
+#[doc = " New client has connected; event data type = #snd_seq_addr_t"]
+pub const SND_SEQ_EVENT_CLIENT_START: snd_seq_event_type = 60;
+#[doc = " Client has left the system; event data type = #snd_seq_addr_t"]
+pub const SND_SEQ_EVENT_CLIENT_EXIT: snd_seq_event_type = 61;
+#[doc = " Client status/info has changed; event data type = #snd_seq_addr_t"]
+pub const SND_SEQ_EVENT_CLIENT_CHANGE: snd_seq_event_type = 62;
+#[doc = " New port was created; event data type = #snd_seq_addr_t"]
+pub const SND_SEQ_EVENT_PORT_START: snd_seq_event_type = 63;
+#[doc = " Port was deleted from system; event data type = #snd_seq_addr_t"]
+pub const SND_SEQ_EVENT_PORT_EXIT: snd_seq_event_type = 64;
+#[doc = " Port status/info has changed; event data type = #snd_seq_addr_t"]
+pub const SND_SEQ_EVENT_PORT_CHANGE: snd_seq_event_type = 65;
+#[doc = " Ports connected; event data type = #snd_seq_connect_t"]
+pub const SND_SEQ_EVENT_PORT_SUBSCRIBED: snd_seq_event_type = 66;
+#[doc = " Ports disconnected; event data type = #snd_seq_connect_t"]
+pub const SND_SEQ_EVENT_PORT_UNSUBSCRIBED: snd_seq_event_type = 67;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR0: snd_seq_event_type = 90;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR1: snd_seq_event_type = 91;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR2: snd_seq_event_type = 92;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR3: snd_seq_event_type = 93;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR4: snd_seq_event_type = 94;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR5: snd_seq_event_type = 95;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR6: snd_seq_event_type = 96;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR7: snd_seq_event_type = 97;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR8: snd_seq_event_type = 98;
+#[doc = " user-defined event; event data type = any (fixed size)"]
+pub const SND_SEQ_EVENT_USR9: snd_seq_event_type = 99;
+#[doc = " system exclusive data (variable length); event data type = #snd_seq_ev_ext_t"]
+pub const SND_SEQ_EVENT_SYSEX: snd_seq_event_type = 130;
+#[doc = " error event; event data type = #snd_seq_ev_ext_t"]
+pub const SND_SEQ_EVENT_BOUNCE: snd_seq_event_type = 131;
+#[doc = " reserved for user apps; event data type = #snd_seq_ev_ext_t"]
+pub const SND_SEQ_EVENT_USR_VAR0: snd_seq_event_type = 135;
+#[doc = " reserved for user apps; event data type = #snd_seq_ev_ext_t"]
+pub const SND_SEQ_EVENT_USR_VAR1: snd_seq_event_type = 136;
+#[doc = " reserved for user apps; event data type = #snd_seq_ev_ext_t"]
+pub const SND_SEQ_EVENT_USR_VAR2: snd_seq_event_type = 137;
+#[doc = " reserved for user apps; event data type = #snd_seq_ev_ext_t"]
+pub const SND_SEQ_EVENT_USR_VAR3: snd_seq_event_type = 138;
+#[doc = " reserved for user apps; event data type = #snd_seq_ev_ext_t"]
+pub const SND_SEQ_EVENT_USR_VAR4: snd_seq_event_type = 139;
+#[doc = " NOP; ignored in any case"]
+pub const SND_SEQ_EVENT_NONE: snd_seq_event_type = 255;
+#[doc = " Sequencer event type"]
+pub type snd_seq_event_type = u32;
+#[doc = " Sequencer event address"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_addr {
+ #[doc = "< Client id"]
+ pub client: ::std::os::raw::c_uchar,
+ #[doc = "< Port id"]
+ pub port: ::std::os::raw::c_uchar,
+}
+#[doc = " Sequencer event address"]
+pub type snd_seq_addr_t = snd_seq_addr;
+#[doc = " Connection (subscription) between ports"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_connect {
+ #[doc = "< sender address"]
+ pub sender: snd_seq_addr_t,
+ #[doc = "< destination address"]
+ pub dest: snd_seq_addr_t,
+}
+#[doc = " Connection (subscription) between ports"]
+pub type snd_seq_connect_t = snd_seq_connect;
+#[doc = " Real-time data record"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_real_time {
+ #[doc = "< seconds"]
+ pub tv_sec: ::std::os::raw::c_uint,
+ #[doc = "< nanoseconds"]
+ pub tv_nsec: ::std::os::raw::c_uint,
+}
+#[doc = " Real-time data record"]
+pub type snd_seq_real_time_t = snd_seq_real_time;
+#[doc = " (MIDI) Tick-time data record"]
+pub type snd_seq_tick_time_t = ::std::os::raw::c_uint;
+#[doc = " unioned time stamp"]
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union snd_seq_timestamp {
+ #[doc = "< tick-time"]
+ pub tick: snd_seq_tick_time_t,
+ #[doc = "< real-time"]
+ pub time: snd_seq_real_time,
+ _bindgen_union_align: [u32; 2usize],
+}
+#[doc = " unioned time stamp"]
+pub type snd_seq_timestamp_t = snd_seq_timestamp;
+#[doc = " Note event"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_ev_note {
+ #[doc = "< channel number"]
+ pub channel: ::std::os::raw::c_uchar,
+ #[doc = "< note"]
+ pub note: ::std::os::raw::c_uchar,
+ #[doc = "< velocity"]
+ pub velocity: ::std::os::raw::c_uchar,
+ #[doc = "< note-off velocity; only for #SND_SEQ_EVENT_NOTE"]
+ pub off_velocity: ::std::os::raw::c_uchar,
+ #[doc = "< duration until note-off; only for #SND_SEQ_EVENT_NOTE"]
+ pub duration: ::std::os::raw::c_uint,
+}
+#[doc = " Note event"]
+pub type snd_seq_ev_note_t = snd_seq_ev_note;
+#[doc = " Controller event"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_ev_ctrl {
+ #[doc = "< channel number"]
+ pub channel: ::std::os::raw::c_uchar,
+ #[doc = "< reserved"]
+ pub unused: [::std::os::raw::c_uchar; 3usize],
+ #[doc = "< control parameter"]
+ pub param: ::std::os::raw::c_uint,
+ #[doc = "< control value"]
+ pub value: ::std::os::raw::c_int,
+}
+#[doc = " Controller event"]
+pub type snd_seq_ev_ctrl_t = snd_seq_ev_ctrl;
+#[doc = " generic set of bytes (12x8 bit)"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_ev_raw8 {
+ #[doc = "< 8 bit value"]
+ pub d: [::std::os::raw::c_uchar; 12usize],
+}
+#[doc = " generic set of bytes (12x8 bit)"]
+pub type snd_seq_ev_raw8_t = snd_seq_ev_raw8;
+#[doc = " generic set of integers (3x32 bit)"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_ev_raw32 {
+ #[doc = "< 32 bit value"]
+ pub d: [::std::os::raw::c_uint; 3usize],
+}
+#[doc = " generic set of integers (3x32 bit)"]
+pub type snd_seq_ev_raw32_t = snd_seq_ev_raw32;
+#[doc = " external stored data"]
+#[repr(C, packed)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_ev_ext {
+ #[doc = "< length of data"]
+ pub len: ::std::os::raw::c_uint,
+ #[doc = "< pointer to data (note: can be 64-bit)"]
+ pub ptr: *mut ::std::os::raw::c_void,
+}
+#[doc = " external stored data"]
+pub type snd_seq_ev_ext_t = snd_seq_ev_ext;
+#[doc = " Result events"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_result {
+ #[doc = "< processed event type"]
+ pub event: ::std::os::raw::c_int,
+ #[doc = "< status"]
+ pub result: ::std::os::raw::c_int,
+}
+#[doc = " Result events"]
+pub type snd_seq_result_t = snd_seq_result;
+#[doc = " Queue skew values"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_seq_queue_skew {
+ #[doc = "< skew value"]
+ pub value: ::std::os::raw::c_uint,
+ #[doc = "< skew base"]
+ pub base: ::std::os::raw::c_uint,
+}
+#[doc = " Queue skew values"]
+pub type snd_seq_queue_skew_t = snd_seq_queue_skew;
+#[doc = " queue timer control"]
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct snd_seq_ev_queue_control {
+ #[doc = "< affected queue"]
+ pub queue: ::std::os::raw::c_uchar,
+ #[doc = "< reserved"]
+ pub unused: [::std::os::raw::c_uchar; 3usize],
+ #[doc = "< data value union"]
+ pub param: snd_seq_ev_queue_control__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union snd_seq_ev_queue_control__bindgen_ty_1 {
+ #[doc = "< affected value (e.g. tempo)"]
+ pub value: ::std::os::raw::c_int,
+ #[doc = "< time"]
+ pub time: snd_seq_timestamp_t,
+ #[doc = "< sync position"]
+ pub position: ::std::os::raw::c_uint,
+ #[doc = "< queue skew"]
+ pub skew: snd_seq_queue_skew_t,
+ #[doc = "< any data"]
+ pub d32: [::std::os::raw::c_uint; 2usize],
+ #[doc = "< any data"]
+ pub d8: [::std::os::raw::c_uchar; 8usize],
+ _bindgen_union_align: [u32; 2usize],
+}
+#[doc = " queue timer control"]
+pub type snd_seq_ev_queue_control_t = snd_seq_ev_queue_control;
+#[doc = " Sequencer event"]
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct snd_seq_event {
+ #[doc = "< event type"]
+ pub type_: snd_seq_event_type_t,
+ #[doc = "< event flags"]
+ pub flags: ::std::os::raw::c_uchar,
+ #[doc = "< tag"]
+ pub tag: ::std::os::raw::c_uchar,
+ #[doc = "< schedule queue"]
+ pub queue: ::std::os::raw::c_uchar,
+ #[doc = "< schedule time"]
+ pub time: snd_seq_timestamp_t,
+ #[doc = "< source address"]
+ pub source: snd_seq_addr_t,
+ #[doc = "< destination address"]
+ pub dest: snd_seq_addr_t,
+ #[doc = "< event data..."]
+ pub data: snd_seq_event__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union snd_seq_event__bindgen_ty_1 {
+ #[doc = "< note information"]
+ pub note: snd_seq_ev_note_t,
+ #[doc = "< MIDI control information"]
+ pub control: snd_seq_ev_ctrl_t,
+ #[doc = "< raw8 data"]
+ pub raw8: snd_seq_ev_raw8_t,
+ #[doc = "< raw32 data"]
+ pub raw32: snd_seq_ev_raw32_t,
+ #[doc = "< external data"]
+ pub ext: snd_seq_ev_ext_t,
+ #[doc = "< queue control"]
+ pub queue: snd_seq_ev_queue_control_t,
+ #[doc = "< timestamp"]
+ pub time: snd_seq_timestamp_t,
+ #[doc = "< address"]
+ pub addr: snd_seq_addr_t,
+ #[doc = "< connect information"]
+ pub connect: snd_seq_connect_t,
+ #[doc = "< operation result code"]
+ pub result: snd_seq_result_t,
+ _bindgen_union_align: [u32; 3usize],
+}
+#[doc = " Sequencer event"]
+pub type snd_seq_event_t = snd_seq_event;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq {
+ _unused: [u8; 0],
+}
+#[doc = " Sequencer handle"]
+pub type snd_seq_t = _snd_seq;
+#[doc = "< hardware"]
+pub const SND_SEQ_TYPE_HW: _snd_seq_type = 0;
+#[doc = "< shared memory (NYI)"]
+pub const SND_SEQ_TYPE_SHM: _snd_seq_type = 1;
+#[doc = "< network (NYI)"]
+pub const SND_SEQ_TYPE_INET: _snd_seq_type = 2;
+#[doc = " sequencer handle type"]
+pub type _snd_seq_type = u32;
+#[doc = " sequencer handle type"]
+pub use self::_snd_seq_type as snd_seq_type_t;
+extern "C" {
+ pub fn snd_seq_open(
+ handle: *mut *mut snd_seq_t,
+ name: *const ::std::os::raw::c_char,
+ streams: ::std::os::raw::c_int,
+ mode: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_open_lconf(
+ handle: *mut *mut snd_seq_t,
+ name: *const ::std::os::raw::c_char,
+ streams: ::std::os::raw::c_int,
+ mode: ::std::os::raw::c_int,
+ lconf: *mut snd_config_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_name(seq: *mut snd_seq_t) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_seq_type(seq: *mut snd_seq_t) -> snd_seq_type_t;
+}
+extern "C" {
+ pub fn snd_seq_close(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_poll_descriptors_count(
+ handle: *mut snd_seq_t,
+ events: ::std::os::raw::c_short,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_poll_descriptors(
+ handle: *mut snd_seq_t,
+ pfds: *mut pollfd,
+ space: ::std::os::raw::c_uint,
+ events: ::std::os::raw::c_short,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_poll_descriptors_revents(
+ seq: *mut snd_seq_t,
+ pfds: *mut pollfd,
+ nfds: ::std::os::raw::c_uint,
+ revents: *mut ::std::os::raw::c_ushort,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_nonblock(
+ handle: *mut snd_seq_t,
+ nonblock: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_id(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_output_buffer_size(handle: *mut snd_seq_t) -> usize;
+}
+extern "C" {
+ pub fn snd_seq_get_input_buffer_size(handle: *mut snd_seq_t) -> usize;
+}
+extern "C" {
+ pub fn snd_seq_set_output_buffer_size(
+ handle: *mut snd_seq_t,
+ size: usize,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_input_buffer_size(
+ handle: *mut snd_seq_t,
+ size: usize,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_system_info {
+ _unused: [u8; 0],
+}
+#[doc = " system information container"]
+pub type snd_seq_system_info_t = _snd_seq_system_info;
+extern "C" {
+ pub fn snd_seq_system_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_system_info_malloc(
+ ptr: *mut *mut snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_system_info_free(ptr: *mut snd_seq_system_info_t);
+}
+extern "C" {
+ pub fn snd_seq_system_info_copy(
+ dst: *mut snd_seq_system_info_t,
+ src: *const snd_seq_system_info_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_system_info_get_queues(
+ info: *const snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_system_info_get_clients(
+ info: *const snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_system_info_get_ports(
+ info: *const snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_system_info_get_channels(
+ info: *const snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_system_info_get_cur_clients(
+ info: *const snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_system_info_get_cur_queues(
+ info: *const snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_system_info(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_system_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_client_info {
+ _unused: [u8; 0],
+}
+#[doc = " client information container"]
+pub type snd_seq_client_info_t = _snd_seq_client_info;
+#[doc = "< user client"]
+pub const SND_SEQ_USER_CLIENT: snd_seq_client_type = 1;
+#[doc = "< kernel client"]
+pub const SND_SEQ_KERNEL_CLIENT: snd_seq_client_type = 2;
+#[doc = " client types"]
+pub type snd_seq_client_type = u32;
+#[doc = " client types"]
+pub use self::snd_seq_client_type as snd_seq_client_type_t;
+extern "C" {
+ pub fn snd_seq_client_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_client_info_malloc(
+ ptr: *mut *mut snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_free(ptr: *mut snd_seq_client_info_t);
+}
+extern "C" {
+ pub fn snd_seq_client_info_copy(
+ dst: *mut snd_seq_client_info_t,
+ src: *const snd_seq_client_info_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_client(
+ info: *const snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_type(
+ info: *const snd_seq_client_info_t,
+ ) -> snd_seq_client_type_t;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_name(
+ info: *mut snd_seq_client_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_broadcast_filter(
+ info: *const snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_error_bounce(
+ info: *const snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_card(
+ info: *const snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_pid(info: *const snd_seq_client_info_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_event_filter(
+ info: *const snd_seq_client_info_t,
+ ) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_num_ports(
+ info: *const snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_get_event_lost(
+ info: *const snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_info_set_client(
+ info: *mut snd_seq_client_info_t,
+ client: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_set_name(
+ info: *mut snd_seq_client_info_t,
+ name: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_set_broadcast_filter(
+ info: *mut snd_seq_client_info_t,
+ val: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_set_error_bounce(
+ info: *mut snd_seq_client_info_t,
+ val: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_set_event_filter(
+ info: *mut snd_seq_client_info_t,
+ filter: *mut ::std::os::raw::c_uchar,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_event_filter_clear(info: *mut snd_seq_client_info_t);
+}
+extern "C" {
+ pub fn snd_seq_client_info_event_filter_add(
+ info: *mut snd_seq_client_info_t,
+ event_type: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_event_filter_del(
+ info: *mut snd_seq_client_info_t,
+ event_type: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_info_event_filter_check(
+ info: *mut snd_seq_client_info_t,
+ event_type: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_client_info(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_any_client_info(
+ handle: *mut snd_seq_t,
+ client: ::std::os::raw::c_int,
+ info: *mut snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_client_info(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_next_client(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_client_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_client_pool {
+ _unused: [u8; 0],
+}
+#[doc = " client pool information container"]
+pub type snd_seq_client_pool_t = _snd_seq_client_pool;
+extern "C" {
+ pub fn snd_seq_client_pool_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_malloc(
+ ptr: *mut *mut snd_seq_client_pool_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_free(ptr: *mut snd_seq_client_pool_t);
+}
+extern "C" {
+ pub fn snd_seq_client_pool_copy(
+ dst: *mut snd_seq_client_pool_t,
+ src: *const snd_seq_client_pool_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_client_pool_get_client(
+ info: *const snd_seq_client_pool_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_get_output_pool(info: *const snd_seq_client_pool_t) -> usize;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_get_input_pool(info: *const snd_seq_client_pool_t) -> usize;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_get_output_room(info: *const snd_seq_client_pool_t) -> usize;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_get_output_free(info: *const snd_seq_client_pool_t) -> usize;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_get_input_free(info: *const snd_seq_client_pool_t) -> usize;
+}
+extern "C" {
+ pub fn snd_seq_client_pool_set_output_pool(info: *mut snd_seq_client_pool_t, size: usize);
+}
+extern "C" {
+ pub fn snd_seq_client_pool_set_input_pool(info: *mut snd_seq_client_pool_t, size: usize);
+}
+extern "C" {
+ pub fn snd_seq_client_pool_set_output_room(info: *mut snd_seq_client_pool_t, size: usize);
+}
+extern "C" {
+ pub fn snd_seq_get_client_pool(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_client_pool_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_client_pool(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_client_pool_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_port_info {
+ _unused: [u8; 0],
+}
+#[doc = " port information container"]
+pub type snd_seq_port_info_t = _snd_seq_port_info;
+extern "C" {
+ pub fn snd_seq_port_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_port_info_malloc(ptr: *mut *mut snd_seq_port_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_free(ptr: *mut snd_seq_port_info_t);
+}
+extern "C" {
+ pub fn snd_seq_port_info_copy(dst: *mut snd_seq_port_info_t, src: *const snd_seq_port_info_t);
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_client(info: *const snd_seq_port_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_port(info: *const snd_seq_port_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_addr(info: *const snd_seq_port_info_t) -> *const snd_seq_addr_t;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_name(
+ info: *const snd_seq_port_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_capability(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_type(info: *const snd_seq_port_info_t) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_midi_channels(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_midi_voices(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_synth_voices(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_read_use(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_write_use(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_port_specified(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_timestamping(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_timestamp_real(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_get_timestamp_queue(
+ info: *const snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_client(
+ info: *mut snd_seq_port_info_t,
+ client: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_port(info: *mut snd_seq_port_info_t, port: ::std::os::raw::c_int);
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_addr(info: *mut snd_seq_port_info_t, addr: *const snd_seq_addr_t);
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_name(
+ info: *mut snd_seq_port_info_t,
+ name: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_capability(
+ info: *mut snd_seq_port_info_t,
+ capability: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_type(
+ info: *mut snd_seq_port_info_t,
+ type_: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_midi_channels(
+ info: *mut snd_seq_port_info_t,
+ channels: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_midi_voices(
+ info: *mut snd_seq_port_info_t,
+ voices: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_synth_voices(
+ info: *mut snd_seq_port_info_t,
+ voices: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_port_specified(
+ info: *mut snd_seq_port_info_t,
+ val: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_timestamping(
+ info: *mut snd_seq_port_info_t,
+ enable: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_timestamp_real(
+ info: *mut snd_seq_port_info_t,
+ realtime: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_info_set_timestamp_queue(
+ info: *mut snd_seq_port_info_t,
+ queue: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_create_port(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_delete_port(
+ handle: *mut snd_seq_t,
+ port: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_port_info(
+ handle: *mut snd_seq_t,
+ port: ::std::os::raw::c_int,
+ info: *mut snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_any_port_info(
+ handle: *mut snd_seq_t,
+ client: ::std::os::raw::c_int,
+ port: ::std::os::raw::c_int,
+ info: *mut snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_port_info(
+ handle: *mut snd_seq_t,
+ port: ::std::os::raw::c_int,
+ info: *mut snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_next_port(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_port_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_port_subscribe {
+ _unused: [u8; 0],
+}
+#[doc = " port subscription container"]
+pub type snd_seq_port_subscribe_t = _snd_seq_port_subscribe;
+extern "C" {
+ pub fn snd_seq_port_subscribe_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_malloc(
+ ptr: *mut *mut snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_free(ptr: *mut snd_seq_port_subscribe_t);
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_copy(
+ dst: *mut snd_seq_port_subscribe_t,
+ src: *const snd_seq_port_subscribe_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_get_sender(
+ info: *const snd_seq_port_subscribe_t,
+ ) -> *const snd_seq_addr_t;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_get_dest(
+ info: *const snd_seq_port_subscribe_t,
+ ) -> *const snd_seq_addr_t;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_get_queue(
+ info: *const snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_get_exclusive(
+ info: *const snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_get_time_update(
+ info: *const snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_get_time_real(
+ info: *const snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_set_sender(
+ info: *mut snd_seq_port_subscribe_t,
+ addr: *const snd_seq_addr_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_set_dest(
+ info: *mut snd_seq_port_subscribe_t,
+ addr: *const snd_seq_addr_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_set_queue(
+ info: *mut snd_seq_port_subscribe_t,
+ q: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_set_exclusive(
+ info: *mut snd_seq_port_subscribe_t,
+ val: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_set_time_update(
+ info: *mut snd_seq_port_subscribe_t,
+ val: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_port_subscribe_set_time_real(
+ info: *mut snd_seq_port_subscribe_t,
+ val: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_get_port_subscription(
+ handle: *mut snd_seq_t,
+ sub: *mut snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_subscribe_port(
+ handle: *mut snd_seq_t,
+ sub: *mut snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_unsubscribe_port(
+ handle: *mut snd_seq_t,
+ sub: *mut snd_seq_port_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_query_subscribe {
+ _unused: [u8; 0],
+}
+#[doc = " subscription query container"]
+pub type snd_seq_query_subscribe_t = _snd_seq_query_subscribe;
+#[doc = "< query read subscriptions"]
+pub const SND_SEQ_QUERY_SUBS_READ: snd_seq_query_subs_type_t = 0;
+#[doc = "< query write subscriptions"]
+pub const SND_SEQ_QUERY_SUBS_WRITE: snd_seq_query_subs_type_t = 1;
+#[doc = " type of query subscription"]
+pub type snd_seq_query_subs_type_t = u32;
+extern "C" {
+ pub fn snd_seq_query_subscribe_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_malloc(
+ ptr: *mut *mut snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_free(ptr: *mut snd_seq_query_subscribe_t);
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_copy(
+ dst: *mut snd_seq_query_subscribe_t,
+ src: *const snd_seq_query_subscribe_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_client(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_port(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_root(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> *const snd_seq_addr_t;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_type(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> snd_seq_query_subs_type_t;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_index(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_num_subs(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_addr(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> *const snd_seq_addr_t;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_queue(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_exclusive(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_time_update(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_get_time_real(
+ info: *const snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_set_client(
+ info: *mut snd_seq_query_subscribe_t,
+ client: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_set_port(
+ info: *mut snd_seq_query_subscribe_t,
+ port: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_set_root(
+ info: *mut snd_seq_query_subscribe_t,
+ addr: *const snd_seq_addr_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_set_type(
+ info: *mut snd_seq_query_subscribe_t,
+ type_: snd_seq_query_subs_type_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_query_subscribe_set_index(
+ info: *mut snd_seq_query_subscribe_t,
+ _index: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_query_port_subscribers(
+ seq: *mut snd_seq_t,
+ subs: *mut snd_seq_query_subscribe_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_queue_info {
+ _unused: [u8; 0],
+}
+#[doc = " queue information container"]
+pub type snd_seq_queue_info_t = _snd_seq_queue_info;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_queue_status {
+ _unused: [u8; 0],
+}
+#[doc = " queue status container"]
+pub type snd_seq_queue_status_t = _snd_seq_queue_status;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_queue_tempo {
+ _unused: [u8; 0],
+}
+#[doc = " queue tempo container"]
+pub type snd_seq_queue_tempo_t = _snd_seq_queue_tempo;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_queue_timer {
+ _unused: [u8; 0],
+}
+#[doc = " queue timer information container"]
+pub type snd_seq_queue_timer_t = _snd_seq_queue_timer;
+extern "C" {
+ pub fn snd_seq_queue_info_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_queue_info_malloc(ptr: *mut *mut snd_seq_queue_info_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_info_free(ptr: *mut snd_seq_queue_info_t);
+}
+extern "C" {
+ pub fn snd_seq_queue_info_copy(
+ dst: *mut snd_seq_queue_info_t,
+ src: *const snd_seq_queue_info_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_info_get_queue(info: *const snd_seq_queue_info_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_info_get_name(
+ info: *const snd_seq_queue_info_t,
+ ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn snd_seq_queue_info_get_owner(info: *const snd_seq_queue_info_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_info_get_locked(
+ info: *const snd_seq_queue_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_info_get_flags(
+ info: *const snd_seq_queue_info_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_queue_info_set_name(
+ info: *mut snd_seq_queue_info_t,
+ name: *const ::std::os::raw::c_char,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_info_set_owner(
+ info: *mut snd_seq_queue_info_t,
+ owner: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_info_set_locked(
+ info: *mut snd_seq_queue_info_t,
+ locked: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_info_set_flags(
+ info: *mut snd_seq_queue_info_t,
+ flags: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_create_queue(
+ seq: *mut snd_seq_t,
+ info: *mut snd_seq_queue_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_alloc_named_queue(
+ seq: *mut snd_seq_t,
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_alloc_queue(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_free_queue(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_queue_info(
+ seq: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ info: *mut snd_seq_queue_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_queue_info(
+ seq: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ info: *mut snd_seq_queue_info_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_query_named_queue(
+ seq: *mut snd_seq_t,
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_queue_usage(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_queue_usage(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ used: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_status_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_queue_status_malloc(
+ ptr: *mut *mut snd_seq_queue_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_status_free(ptr: *mut snd_seq_queue_status_t);
+}
+extern "C" {
+ pub fn snd_seq_queue_status_copy(
+ dst: *mut snd_seq_queue_status_t,
+ src: *const snd_seq_queue_status_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_status_get_queue(
+ info: *const snd_seq_queue_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_status_get_events(
+ info: *const snd_seq_queue_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_status_get_tick_time(
+ info: *const snd_seq_queue_status_t,
+ ) -> snd_seq_tick_time_t;
+}
+extern "C" {
+ pub fn snd_seq_queue_status_get_real_time(
+ info: *const snd_seq_queue_status_t,
+ ) -> *const snd_seq_real_time_t;
+}
+extern "C" {
+ pub fn snd_seq_queue_status_get_status(
+ info: *const snd_seq_queue_status_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_get_queue_status(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ status: *mut snd_seq_queue_status_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_malloc(
+ ptr: *mut *mut snd_seq_queue_tempo_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_free(ptr: *mut snd_seq_queue_tempo_t);
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_copy(
+ dst: *mut snd_seq_queue_tempo_t,
+ src: *const snd_seq_queue_tempo_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_get_queue(
+ info: *const snd_seq_queue_tempo_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_get_tempo(
+ info: *const snd_seq_queue_tempo_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_get_ppq(info: *const snd_seq_queue_tempo_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_get_skew(
+ info: *const snd_seq_queue_tempo_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_get_skew_base(
+ info: *const snd_seq_queue_tempo_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_set_tempo(
+ info: *mut snd_seq_queue_tempo_t,
+ tempo: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_set_ppq(
+ info: *mut snd_seq_queue_tempo_t,
+ ppq: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_set_skew(
+ info: *mut snd_seq_queue_tempo_t,
+ skew: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_tempo_set_skew_base(
+ info: *mut snd_seq_queue_tempo_t,
+ base: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_get_queue_tempo(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ tempo: *mut snd_seq_queue_tempo_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_queue_tempo(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ tempo: *mut snd_seq_queue_tempo_t,
+ ) -> ::std::os::raw::c_int;
+}
+pub const SND_SEQ_TIMER_ALSA: snd_seq_queue_timer_type_t = 0;
+pub const SND_SEQ_TIMER_MIDI_CLOCK: snd_seq_queue_timer_type_t = 1;
+pub const SND_SEQ_TIMER_MIDI_TICK: snd_seq_queue_timer_type_t = 2;
+#[doc = " sequencer timer sources"]
+pub type snd_seq_queue_timer_type_t = u32;
+extern "C" {
+ pub fn snd_seq_queue_timer_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_malloc(
+ ptr: *mut *mut snd_seq_queue_timer_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_free(ptr: *mut snd_seq_queue_timer_t);
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_copy(
+ dst: *mut snd_seq_queue_timer_t,
+ src: *const snd_seq_queue_timer_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_get_queue(
+ info: *const snd_seq_queue_timer_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_get_type(
+ info: *const snd_seq_queue_timer_t,
+ ) -> snd_seq_queue_timer_type_t;
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_get_id(info: *const snd_seq_queue_timer_t) -> *const snd_timer_id_t;
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_get_resolution(
+ info: *const snd_seq_queue_timer_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_set_type(
+ info: *mut snd_seq_queue_timer_t,
+ type_: snd_seq_queue_timer_type_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_set_id(info: *mut snd_seq_queue_timer_t, id: *const snd_timer_id_t);
+}
+extern "C" {
+ pub fn snd_seq_queue_timer_set_resolution(
+ info: *mut snd_seq_queue_timer_t,
+ resolution: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_get_queue_timer(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ timer: *mut snd_seq_queue_timer_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_queue_timer(
+ handle: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ timer: *mut snd_seq_queue_timer_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ #[doc = " \\defgroup SeqEvent Sequencer Event API"]
+ #[doc = " Sequencer Event API"]
+ #[doc = " \\ingroup Sequencer"]
+ #[doc = " \\{"]
+ pub fn snd_seq_free_event(ev: *mut snd_seq_event_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_event_length(ev: *mut snd_seq_event_t) -> isize;
+}
+extern "C" {
+ pub fn snd_seq_event_output(
+ handle: *mut snd_seq_t,
+ ev: *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_event_output_buffer(
+ handle: *mut snd_seq_t,
+ ev: *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_event_output_direct(
+ handle: *mut snd_seq_t,
+ ev: *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_event_input(
+ handle: *mut snd_seq_t,
+ ev: *mut *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_event_input_pending(
+ seq: *mut snd_seq_t,
+ fetch_sequencer: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_drain_output(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_event_output_pending(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_extract_output(
+ handle: *mut snd_seq_t,
+ ev: *mut *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_drop_output(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_drop_output_buffer(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_drop_input(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_drop_input_buffer(handle: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _snd_seq_remove_events {
+ _unused: [u8; 0],
+}
+#[doc = " event removal conditionals"]
+pub type snd_seq_remove_events_t = _snd_seq_remove_events;
+extern "C" {
+ pub fn snd_seq_remove_events_sizeof() -> usize;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_malloc(
+ ptr: *mut *mut snd_seq_remove_events_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_free(ptr: *mut snd_seq_remove_events_t);
+}
+extern "C" {
+ pub fn snd_seq_remove_events_copy(
+ dst: *mut snd_seq_remove_events_t,
+ src: *const snd_seq_remove_events_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events_get_condition(
+ info: *const snd_seq_remove_events_t,
+ ) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_get_queue(
+ info: *const snd_seq_remove_events_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_get_time(
+ info: *const snd_seq_remove_events_t,
+ ) -> *const snd_seq_timestamp_t;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_get_dest(
+ info: *const snd_seq_remove_events_t,
+ ) -> *const snd_seq_addr_t;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_get_channel(
+ info: *const snd_seq_remove_events_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_get_event_type(
+ info: *const snd_seq_remove_events_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_get_tag(
+ info: *const snd_seq_remove_events_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_remove_events_set_condition(
+ info: *mut snd_seq_remove_events_t,
+ flags: ::std::os::raw::c_uint,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events_set_queue(
+ info: *mut snd_seq_remove_events_t,
+ queue: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events_set_time(
+ info: *mut snd_seq_remove_events_t,
+ time: *const snd_seq_timestamp_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events_set_dest(
+ info: *mut snd_seq_remove_events_t,
+ addr: *const snd_seq_addr_t,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events_set_channel(
+ info: *mut snd_seq_remove_events_t,
+ channel: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events_set_event_type(
+ info: *mut snd_seq_remove_events_t,
+ type_: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events_set_tag(
+ info: *mut snd_seq_remove_events_t,
+ tag: ::std::os::raw::c_int,
+ );
+}
+extern "C" {
+ pub fn snd_seq_remove_events(
+ handle: *mut snd_seq_t,
+ info: *mut snd_seq_remove_events_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ #[doc = " \\defgroup SeqMisc Sequencer Miscellaneous"]
+ #[doc = " Sequencer Miscellaneous"]
+ #[doc = " \\ingroup Sequencer"]
+ #[doc = " \\{"]
+ pub fn snd_seq_set_bit(nr: ::std::os::raw::c_int, array: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+ pub fn snd_seq_unset_bit(nr: ::std::os::raw::c_int, array: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+ pub fn snd_seq_change_bit(
+ nr: ::std::os::raw::c_int,
+ array: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_get_bit(
+ nr: ::std::os::raw::c_int,
+ array: *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_control_queue(
+ seq: *mut snd_seq_t,
+ q: ::std::os::raw::c_int,
+ type_: ::std::os::raw::c_int,
+ value: ::std::os::raw::c_int,
+ ev: *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_create_simple_port(
+ seq: *mut snd_seq_t,
+ name: *const ::std::os::raw::c_char,
+ caps: ::std::os::raw::c_uint,
+ type_: ::std::os::raw::c_uint,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_delete_simple_port(
+ seq: *mut snd_seq_t,
+ port: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_connect_from(
+ seq: *mut snd_seq_t,
+ my_port: ::std::os::raw::c_int,
+ src_client: ::std::os::raw::c_int,
+ src_port: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_connect_to(
+ seq: *mut snd_seq_t,
+ my_port: ::std::os::raw::c_int,
+ dest_client: ::std::os::raw::c_int,
+ dest_port: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_disconnect_from(
+ seq: *mut snd_seq_t,
+ my_port: ::std::os::raw::c_int,
+ src_client: ::std::os::raw::c_int,
+ src_port: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_disconnect_to(
+ seq: *mut snd_seq_t,
+ my_port: ::std::os::raw::c_int,
+ dest_client: ::std::os::raw::c_int,
+ dest_port: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_client_name(
+ seq: *mut snd_seq_t,
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_client_event_filter(
+ seq: *mut snd_seq_t,
+ event_type: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_client_pool_output(
+ seq: *mut snd_seq_t,
+ size: usize,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_client_pool_output_room(
+ seq: *mut snd_seq_t,
+ size: usize,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_set_client_pool_input(seq: *mut snd_seq_t, size: usize)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_sync_output_queue(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_parse_address(
+ seq: *mut snd_seq_t,
+ addr: *mut snd_seq_addr_t,
+ str: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_reset_pool_output(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_seq_reset_pool_input(seq: *mut snd_seq_t) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct snd_midi_event {
+ _unused: [u8; 0],
+}
+#[doc = " container for sequencer midi event parsers"]
+pub type snd_midi_event_t = snd_midi_event;
+extern "C" {
+ pub fn snd_midi_event_new(
+ bufsize: usize,
+ rdev: *mut *mut snd_midi_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_midi_event_resize_buffer(
+ dev: *mut snd_midi_event_t,
+ bufsize: usize,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_midi_event_free(dev: *mut snd_midi_event_t);
+}
+extern "C" {
+ pub fn snd_midi_event_init(dev: *mut snd_midi_event_t);
+}
+extern "C" {
+ pub fn snd_midi_event_reset_encode(dev: *mut snd_midi_event_t);
+}
+extern "C" {
+ pub fn snd_midi_event_reset_decode(dev: *mut snd_midi_event_t);
+}
+extern "C" {
+ pub fn snd_midi_event_no_status(dev: *mut snd_midi_event_t, on: ::std::os::raw::c_int);
+}
+extern "C" {
+ pub fn snd_midi_event_encode(
+ dev: *mut snd_midi_event_t,
+ buf: *const ::std::os::raw::c_uchar,
+ count: ::std::os::raw::c_long,
+ ev: *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+ pub fn snd_midi_event_encode_byte(
+ dev: *mut snd_midi_event_t,
+ c: ::std::os::raw::c_int,
+ ev: *mut snd_seq_event_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn snd_midi_event_decode(
+ dev: *mut snd_midi_event_t,
+ buf: *mut ::std::os::raw::c_uchar,
+ count: ::std::os::raw::c_long,
+ ev: *const snd_seq_event_t,
+ ) -> ::std::os::raw::c_long;
+}
diff --git a/third_party/rust/alsa-sys/src/lib.rs b/third_party/rust/alsa-sys/src/lib.rs
new file mode 100644
index 0000000000..2d5df0e09c
--- /dev/null
+++ b/third_party/rust/alsa-sys/src/lib.rs
@@ -0,0 +1,40 @@
+#![allow(non_camel_case_types)]
+
+use libc::{FILE, pid_t, timeval, timespec, pollfd};
+
+pub const SND_PCM_NONBLOCK: ::std::os::raw::c_int = 0x1;
+pub const SND_PCM_ASYNC: ::std::os::raw::c_int = 0x2;
+
+pub const SND_SEQ_OPEN_OUTPUT: i32 = 1;
+pub const SND_SEQ_OPEN_INPUT: i32 = 2;
+pub const SND_SEQ_OPEN_DUPLEX: i32 = SND_SEQ_OPEN_OUTPUT | SND_SEQ_OPEN_INPUT;
+pub const SND_SEQ_NONBLOCK: i32 = 0x0001;
+pub const SND_SEQ_ADDRESS_BROADCAST: u8 = 255;
+pub const SND_SEQ_ADDRESS_SUBSCRIBERS: u8 = 254;
+pub const SND_SEQ_ADDRESS_UNKNOWN: u8 = 253;
+pub const SND_SEQ_QUEUE_DIRECT: u8 = 253;
+pub const SND_SEQ_TIME_MODE_MASK: u8 = 1<<1;
+pub const SND_SEQ_TIME_STAMP_MASK: u8 = 1<<0;
+pub const SND_SEQ_TIME_MODE_REL: u8 = 1<<1;
+pub const SND_SEQ_TIME_STAMP_REAL: u8 = 1<<0;
+pub const SND_SEQ_TIME_STAMP_TICK: u8 = 0<<0;
+pub const SND_SEQ_TIME_MODE_ABS: u8 = 0<<1;
+pub const SND_SEQ_CLIENT_SYSTEM: u8 = 0;
+pub const SND_SEQ_PORT_SYSTEM_TIMER: u8 = 0;
+pub const SND_SEQ_PORT_SYSTEM_ANNOUNCE: u8 = 1;
+pub const SND_SEQ_PRIORITY_HIGH: u8 = 1<<4;
+pub const SND_SEQ_EVENT_LENGTH_FIXED: u8 = 0<<2;
+pub const SND_SEQ_EVENT_LENGTH_MASK: u8 = 3<<2;
+pub const SND_SEQ_EVENT_LENGTH_VARIABLE: u8 = 1<<2;
+pub const SND_SEQ_EVENT_LENGTH_VARUSR: u8 = 2<<2;
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __va_list_tag {
+ pub gp_offset: ::std::os::raw::c_uint,
+ pub fp_offset: ::std::os::raw::c_uint,
+ pub overflow_arg_area: *mut ::std::os::raw::c_void,
+ pub reg_save_area: *mut ::std::os::raw::c_void,
+}
+
+include!("generated.rs");