Trait audio_streams::StreamSource
source · pub trait StreamSource: Send {
// Required method
fn new_playback_stream(
&mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
) -> Result<(Box<dyn StreamControl>, Box<dyn PlaybackBufferStream>), BoxError>;
// Provided methods
fn new_async_playback_stream(
&mut self,
_num_channels: usize,
_format: SampleFormat,
_frame_rate: u32,
_buffer_size: usize,
_ex: &dyn AudioStreamsExecutor,
) -> Result<(Box<dyn StreamControl>, Box<dyn AsyncPlaybackBufferStream>), BoxError> { ... }
fn async_new_async_playback_stream<'life0, 'life1, 'async_trait>(
&'life0 mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
ex: &'life1 dyn AudioStreamsExecutor,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn StreamControl>, Box<dyn AsyncPlaybackBufferStream>), BoxError>> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn new_capture_stream(
&mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
_effects: &[StreamEffect],
) -> Result<(Box<dyn StreamControl>, Box<dyn CaptureBufferStream>), BoxError> { ... }
fn new_async_capture_stream(
&mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
_effects: &[StreamEffect],
_ex: &dyn AudioStreamsExecutor,
) -> Result<(Box<dyn StreamControl>, Box<dyn AsyncCaptureBufferStream>), BoxError> { ... }
fn async_new_async_capture_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
effects: &'life1 [StreamEffect],
ex: &'life2 dyn AudioStreamsExecutor,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn StreamControl>, Box<dyn AsyncCaptureBufferStream>), BoxError>> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn keep_rds(&self) -> Option<Vec<RawDescriptor>> { ... }
}Expand description
StreamSource creates streams for playback or capture of audio.
Required Methods§
sourcefn new_playback_stream(
&mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
) -> Result<(Box<dyn StreamControl>, Box<dyn PlaybackBufferStream>), BoxError>
fn new_playback_stream( &mut self, num_channels: usize, format: SampleFormat, frame_rate: u32, buffer_size: usize, ) -> Result<(Box<dyn StreamControl>, Box<dyn PlaybackBufferStream>), BoxError>
Returns a stream control and buffer generator object. These are separate as the buffer generator might want to be passed to the audio stream.
Provided Methods§
sourcefn new_async_playback_stream(
&mut self,
_num_channels: usize,
_format: SampleFormat,
_frame_rate: u32,
_buffer_size: usize,
_ex: &dyn AudioStreamsExecutor,
) -> Result<(Box<dyn StreamControl>, Box<dyn AsyncPlaybackBufferStream>), BoxError>
fn new_async_playback_stream( &mut self, _num_channels: usize, _format: SampleFormat, _frame_rate: u32, _buffer_size: usize, _ex: &dyn AudioStreamsExecutor, ) -> Result<(Box<dyn StreamControl>, Box<dyn AsyncPlaybackBufferStream>), BoxError>
Returns a stream control and async buffer generator object. These are separate as the buffer generator might want to be passed to the audio stream.
sourcefn async_new_async_playback_stream<'life0, 'life1, 'async_trait>(
&'life0 mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
ex: &'life1 dyn AudioStreamsExecutor,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn StreamControl>, Box<dyn AsyncPlaybackBufferStream>), BoxError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn async_new_async_playback_stream<'life0, 'life1, 'async_trait>(
&'life0 mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
ex: &'life1 dyn AudioStreamsExecutor,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn StreamControl>, Box<dyn AsyncPlaybackBufferStream>), BoxError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns a stream control and async buffer generator object asynchronously.
Default implementation calls and blocks on new_async_playback_stream().
sourcefn new_capture_stream(
&mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
_effects: &[StreamEffect],
) -> Result<(Box<dyn StreamControl>, Box<dyn CaptureBufferStream>), BoxError>
fn new_capture_stream( &mut self, num_channels: usize, format: SampleFormat, frame_rate: u32, buffer_size: usize, _effects: &[StreamEffect], ) -> Result<(Box<dyn StreamControl>, Box<dyn CaptureBufferStream>), BoxError>
Returns a stream control and buffer generator object. These are separate as the buffer
generator might want to be passed to the audio stream.
Default implementation returns NoopStreamControl and NoopCaptureStream.
sourcefn new_async_capture_stream(
&mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
_effects: &[StreamEffect],
_ex: &dyn AudioStreamsExecutor,
) -> Result<(Box<dyn StreamControl>, Box<dyn AsyncCaptureBufferStream>), BoxError>
fn new_async_capture_stream( &mut self, num_channels: usize, format: SampleFormat, frame_rate: u32, buffer_size: usize, _effects: &[StreamEffect], _ex: &dyn AudioStreamsExecutor, ) -> Result<(Box<dyn StreamControl>, Box<dyn AsyncCaptureBufferStream>), BoxError>
Returns a stream control and async buffer generator object. These are separate as the buffer
generator might want to be passed to the audio stream.
Default implementation returns NoopStreamControl and NoopCaptureStream.
sourcefn async_new_async_capture_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
effects: &'life1 [StreamEffect],
ex: &'life2 dyn AudioStreamsExecutor,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn StreamControl>, Box<dyn AsyncCaptureBufferStream>), BoxError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn async_new_async_capture_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
num_channels: usize,
format: SampleFormat,
frame_rate: u32,
buffer_size: usize,
effects: &'life1 [StreamEffect],
ex: &'life2 dyn AudioStreamsExecutor,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn StreamControl>, Box<dyn AsyncCaptureBufferStream>), BoxError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Returns a stream control and async buffer generator object asynchronously.
Default implementation calls and blocks on new_async_capture_stream().
sourcefn keep_rds(&self) -> Option<Vec<RawDescriptor>>
fn keep_rds(&self) -> Option<Vec<RawDescriptor>>
Returns any open file descriptors needed by the implementor. The FD list helps users of the StreamSource enter Linux jails making sure not to close needed FDs.