42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
/// Daq apis that are optionally compiled in. Examples:
|
|
///
|
|
/// - CPAL (Cross-Platform Audio Library)
|
|
/// - ...
|
|
use strum::EnumMessage;
|
|
use strum_macros;
|
|
use std::sync::Arc;
|
|
|
|
use super::{streamstatus::StreamStatus, StreamMetaData};
|
|
|
|
#[cfg(feature = "cpal-api")]
|
|
pub mod api_cpal;
|
|
|
|
#[cfg(feature = "pulse_api")]
|
|
pub mod api_pulse;
|
|
|
|
/// A currently running stream
|
|
pub trait Stream {
|
|
/// Stream metadata. Only available for input streams
|
|
fn metadata(&self) -> Arc<StreamMetaData>;
|
|
|
|
/// Number of input channels in stream
|
|
fn ninchannels(&self) -> usize;
|
|
|
|
/// Number of output channels in stream
|
|
fn noutchannels(&self) -> usize;
|
|
|
|
fn status(&self) -> StreamStatus;
|
|
}
|
|
|
|
#[derive(strum_macros::EnumMessage, Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
#[allow(dead_code)]
|
|
pub enum StreamApiDescr {
|
|
/// CPAL api
|
|
#[strum(message = "Cpal", detailed_message = "Cross-Platform Audio Library")]
|
|
Cpal = 0,
|
|
/// PulseAudio api
|
|
#[strum(message = "pulse", detailed_message = "Pulseaudio")]
|
|
Pulse = 1,
|
|
}
|