pub struct WavSpec {
pub channels: u16,
pub sample_rate: u32,
pub bits_per_sample: u16,
pub sample_format: SampleFormat,
}
Expand description
Specifies properties of the audio data.
Fields§
§channels: u16
The number of channels.
sample_rate: u32
The number of samples per second.
A common value is 44100, this is 44.1 kHz which is used for CD audio.
bits_per_sample: u16
The number of bits per sample.
A common value is 16 bits per sample, which is used for CD audio.
sample_format: SampleFormat
Whether the wav’s samples are float or integer values.
Implementations§
Source§impl WavSpec
impl WavSpec
Sourcepub fn into_header_for_infinite_file(self) -> Vec<u8>
pub fn into_header_for_infinite_file(self) -> Vec<u8>
Get “stand-alone” wav header representing infinite or unknown size wav file. Use this if you need to write audio data to non-seekable sinks (like stdout).
Actual samples are supposed to be written using low-level Sample::write
call.
Such wav files are produced e.g. by FFmpeg and have 0xFFFFFFFF
instead of chunk sizes.
Note that such files may be non-standard. Consider using WavWriter
for better API.
Example:
extern crate hound;
use std::io::Write;
let spec = hound::WavSpec {
bits_per_sample: 16,
channels: 1,
sample_format: hound::SampleFormat::Int,
sample_rate: 16000,
};
let v = spec.into_header_for_infinite_file();
let so = std::io::stdout();
let mut so = so.lock();
so.write_all(&v[..]).unwrap();
loop {
for i in 0..126 {
let x : i16 = (i * 256) as i16;
hound::Sample::write(x, &mut so, 16).unwrap();
}
}
Trait Implementations§
impl Copy for WavSpec
impl Eq for WavSpec
impl StructuralPartialEq for WavSpec
Auto Trait Implementations§
impl Freeze for WavSpec
impl RefUnwindSafe for WavSpec
impl Send for WavSpec
impl Sync for WavSpec
impl Unpin for WavSpec
impl UnwindSafe for WavSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)