Module ao::auto
[−]
[src]
Automatic device format adjustment.
Given a way to poll the properties of an incoming buffer of samples, this module provides a way
to automatically adjust the output SampleFormat
so all data being fed to the output need not
have the same format. This is particularly useful for situations where non-homogenous inputs
can be switched to the same output, without requiring resampling prior to output.
use ao::AO; use ao::auto::{SampleBuffer, AutoFormatDevice}; use std::error::Error; struct StereoBuffer(Vec<(i16, i16)>); impl<'z> SampleBuffer for StereoBuffer { fn channels(&self) -> usize { 2 } fn sample_rate(&self) -> usize { 44100 } fn endianness(&self) -> ao::Endianness { ao::Endianness::Native } fn sample_width(&self) -> usize { 16 } fn data<'a>(&self) -> &'a [u8] { unsafe { std::slice::from_raw_parts(self.0.as_ptr() as *const u8, self.0.len() * 4) } } } fn main() { let lib = AO::init(); let driver = lib.get_driver("").expect("No default driver available"); let mut device = AutoFormatDevice::new(driver, vec!["", "L", "L,R"]); let data = StereoBuffer(vec![(16383, -16383)]); match device.play(&data) { Ok(_) => (), Err(e) => println!("Playback failed: {}", e.description()) } }
Structs
AutoFormatDevice |
Automatically adjusts the output format according to incoming buffers. |
Traits
SampleBuffer |
A buffer containing samples. |