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; /// 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, }