use audio_samples::{AudioSamples, traits::StandardSample};
use crate::error::StreamingError;
pub trait AudioStream {
type Sample: StandardSample;
type Error: Into<StreamingError>;
fn fill_chunk(
&mut self,
buffer: &mut AudioSamples<'static, Self::Sample>,
) -> Result<Option<usize>, Self::Error>;
}
pub trait AudioSink {
type Sample: StandardSample;
type Error: Into<StreamingError>;
fn write_chunk(
&mut self,
chunk: &AudioSamples<'static, Self::Sample>,
) -> Result<(), Self::Error>;
fn flush(&mut self) -> Result<(), Self::Error>;
fn finalize(self) -> Result<(), Self::Error>;
}