#![allow(nonstandard_style)]
use crate::{c_char, c_int, c_long, c_uint, c_ulong, c_void};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_pcm_t {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub(crate) struct snd_pcm_hw_params_t {
_unused: [u8; 0],
}
pub(crate) type snd_pcm_uframes_t = c_ulong;
pub(crate) type snd_pcm_sframes_t = c_long;
pub(crate) const SND_PCM_STREAM_PLAYBACK: snd_pcm_stream_t = 0;
pub(crate) const SND_PCM_STREAM_CAPTURE: snd_pcm_stream_t = 1;
pub(crate) type snd_pcm_stream_t = c_uint;
pub(crate) const SND_PCM_ACCESS_RW_INTERLEAVED: snd_pcm_access_t = 3;
pub(crate) const SND_PCM_ACCESS_RW_NONINTERLEAVED: snd_pcm_access_t = 4;
pub(crate) type snd_pcm_access_t = c_uint;
pub(crate) const SND_PCM_FORMAT_S8: snd_pcm_format_t = 0;
pub(crate) const SND_PCM_FORMAT_U8: snd_pcm_format_t = 1;
pub(crate) const SND_PCM_FORMAT_S16_LE: snd_pcm_format_t = 2;
pub(crate) const SND_PCM_FORMAT_S32_LE: snd_pcm_format_t = 10;
pub(crate) const SND_PCM_FORMAT_FLOAT_LE: snd_pcm_format_t = 14;
pub(crate) const SND_PCM_FORMAT_FLOAT64_LE: snd_pcm_format_t = 16;
pub(crate) const SND_PCM_FORMAT_S24_3LE: snd_pcm_format_t = 32;
pub(crate) type snd_pcm_format_t = c_int;
#[rustfmt::skip]
#[cfg(ffi_alsa··)]
#[link(name = "asound")]
unsafe extern "C" {
pub(crate) fn snd_device_name_free_hint(hints: *mut *mut c_char) -> c_int;
pub(crate) fn snd_device_name_get_hint(hint: *mut c_char, id: *const c_char) -> *mut c_char;
pub(crate) fn snd_pcm_open(pcm: *mut *mut snd_pcm_t, name: *const c_char, stream: c_int,
mode: c_int) -> c_int;
pub(crate) fn snd_pcm_close(pcm: *mut snd_pcm_t) -> c_int;
pub(crate) fn snd_device_name_hint(card: c_int, iface: *const c_char,
hints: *mut *mut *mut c_char) -> c_int;
pub(crate) fn snd_pcm_drain(pcm: *mut snd_pcm_t) -> c_int;
pub(crate) fn snd_pcm_drop(pcm: *mut snd_pcm_t) -> c_int;
pub(crate) fn snd_pcm_writei(pcm: *mut snd_pcm_t, buffer: *const c_void,
size: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
pub(crate) fn snd_pcm_readi(pcm: *mut snd_pcm_t, buffer: *mut c_void,
size: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
pub(crate) fn snd_pcm_writen(pcm: *mut snd_pcm_t, bufs: *mut *mut c_void,
size: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
pub(crate) fn snd_pcm_readn(pcm: *mut snd_pcm_t, bufs: *mut *mut c_void,
size: snd_pcm_uframes_t) -> snd_pcm_sframes_t;
pub(crate) fn snd_pcm_prepare(pcm: *mut snd_pcm_t) -> c_int;
pub(crate) fn snd_pcm_recover(pcm: *mut snd_pcm_t, err: c_int, silent: c_int) -> c_int;
pub(crate) fn snd_pcm_hw_params_malloc(ptr: *mut *mut snd_pcm_hw_params_t) -> c_int;
pub(crate) fn snd_pcm_hw_params_any( pcm: *mut snd_pcm_t, params: *mut snd_pcm_hw_params_t)
-> c_int;
pub(crate) fn snd_pcm_hw_params_set_access(pcm: *mut snd_pcm_t,
params: *mut snd_pcm_hw_params_t, _access: snd_pcm_access_t) -> c_int;
pub(crate) fn snd_pcm_hw_params_set_format(pcm: *mut snd_pcm_t,
params: *mut snd_pcm_hw_params_t, val: snd_pcm_format_t) -> c_int;
pub(crate) fn snd_pcm_hw_params_set_rate_near(pcm: *mut snd_pcm_t,
params: *mut snd_pcm_hw_params_t, val: *mut c_uint, dir: *mut c_int) -> c_int;
pub(crate) fn snd_pcm_hw_params_set_channels(pcm: *mut snd_pcm_t,
params: *mut snd_pcm_hw_params_t, val: c_uint) -> c_int;
pub(crate) fn snd_pcm_hw_params(pcm: *mut snd_pcm_t, params: *mut snd_pcm_hw_params_t) -> c_int;
pub(crate) fn snd_pcm_hw_params_free(obj: *mut snd_pcm_hw_params_t);
pub(crate) fn snd_strerror(errnum: c_int) -> *const c_char;
}