extern crate asio_sys as sys;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SampleFormat {
I16,
U16,
F32,
}
pub type ChannelCount = u16;
pub type SampleRate = u32;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Format {
pub channels: ChannelCount,
pub sample_rate: SampleRate,
pub data_type: SampleFormat,
}
fn main() {
let asio = sys::Asio::new();
for name in asio.driver_names() {
println!("Driver: {:?}", name);
let driver = asio.load_driver(&name).expect("failed to load driver");
let channels = driver
.channels()
.expect("failed to retrieve channel counts");
let sample_rate = driver
.sample_rate()
.expect("failed to retrieve sample rate");
let in_fmt = Format {
channels: channels.ins as _,
sample_rate: sample_rate as _,
data_type: SampleFormat::F32,
};
let out_fmt = Format {
channels: channels.outs as _,
sample_rate: sample_rate as _,
data_type: SampleFormat::F32,
};
println!(" Input {:?}", in_fmt);
println!(" Output {:?}", out_fmt);
}
}