#![forbid(unsafe_code)]
use crate::{CaptureError, Select};
use mediaway_common::{AudioFrame, Rational, SampleFormat, StreamInfo};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct AudioCaptureConfig {
pub select: Select,
pub time_base: Rational,
pub sample_format: SampleFormat,
}
impl AudioCaptureConfig {
#[must_use]
pub const fn microphone(time_base: Rational) -> Self {
Self {
select: Select::Default,
time_base,
sample_format: SampleFormat::F32,
}
}
}
pub trait AudioCapture {
fn stream_info(&self) -> &StreamInfo;
fn poll_frame(&mut self) -> Result<Option<AudioFrame>, CaptureError>;
fn close(&mut self) -> Result<(), CaptureError>;
}