use serde::{Deserialize, Serialize};
use std::sync::Arc;
use strum::EnumMessage;
use strum_macros;
use crate::config::*;
use super::{streamdata::StreamMetaData, streamstatus::StreamStatus};
#[cfg(feature = "cpal-api")]
pub mod api_cpal;
#[cfg(feature = "pulse_api")]
pub mod api_pulse;
pub trait Stream {
fn metadata(&self) -> Arc<StreamMetaData>;
fn ninchannels(&self) -> usize;
fn noutchannels(&self) -> usize;
fn status(&self) -> StreamStatus;
}
#[cfg_attr(feature = "python-bindings", pyclass)]
#[derive(strum_macros::EnumMessage, Debug, Clone, PartialEq, Serialize, Deserialize, strum_macros::Display)]
#[allow(dead_code)]
pub enum StreamApiDescr {
#[strum(message = "Cpal", detailed_message = "Cross-Platform Audio Library")]
Cpal = 0,
#[strum(message = "pulse", detailed_message = "Pulseaudio")]
Pulse = 1,
}