pub struct FlacStreamReader<R> { /* private fields */ }Expand description
A FLAC reader which operates on streamed input
Streamed FLAC files are simply a collection of raw FLAC frames with no accompanying metadata, like might be delivered over a multicast stream.
Because this reader needs to scan the stream for
valid frame sync codes before playback,
it requires std::io::BufRead instead of std::io::Read.
§Example
use flac_codec::{
decode::{FlacStreamReader, FrameBuf},
encode::{FlacStreamWriter, Options},
};
use std::io::{Cursor, Seek};
use std::num::NonZero;
use bitstream_io::SignedBitCount;
let mut flac = Cursor::new(vec![]);
let samples = (0..100).collect::<Vec<i32>>();
let mut w = FlacStreamWriter::new(&mut flac, Options::default());
// write a single FLAC frame with some samples
w.write(
44100, // sample rate
1, // channels
16, // bits-per-sample
&samples,
).unwrap();
flac.rewind().unwrap();
let mut r = FlacStreamReader::new(&mut flac);
// read a single FLAC frame with some samples
assert_eq!(
r.read().unwrap(),
FrameBuf {
samples: &samples,
sample_rate: 44100,
channels: 1,
bits_per_sample: 16,
},
);Implementations§
Source§impl<R: BufRead> FlacStreamReader<R>
impl<R: BufRead> FlacStreamReader<R>
Auto Trait Implementations§
impl<R> Freeze for FlacStreamReader<R>where
R: Freeze,
impl<R> RefUnwindSafe for FlacStreamReader<R>where
R: RefUnwindSafe,
impl<R> Send for FlacStreamReader<R>where
R: Send,
impl<R> Sync for FlacStreamReader<R>where
R: Sync,
impl<R> Unpin for FlacStreamReader<R>where
R: Unpin,
impl<R> UnwindSafe for FlacStreamReader<R>where
R: UnwindSafe,
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