#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
pub enum ProcessMode {
#[default]
Realtime,
Buffered,
Offline,
}
impl ProcessMode {
#[must_use]
pub fn is_offline(self) -> bool {
matches!(self, ProcessMode::Offline)
}
#[must_use]
pub fn as_u8(self) -> u8 {
match self {
ProcessMode::Realtime => 0,
ProcessMode::Buffered => 1,
ProcessMode::Offline => 2,
}
}
#[must_use]
pub fn from_u8(v: u8) -> Self {
match v {
1 => ProcessMode::Buffered,
2 => ProcessMode::Offline,
_ => ProcessMode::Realtime,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq)]
#[non_exhaustive]
pub struct AudioConfig {
pub sample_rate: f64,
pub max_block_size: usize,
pub process_mode: ProcessMode,
}
impl AudioConfig {
#[must_use]
pub fn new(sample_rate: f64, max_block_size: usize) -> Self {
Self {
sample_rate,
max_block_size,
process_mode: ProcessMode::Realtime,
}
}
#[must_use]
pub fn with_process_mode(mut self, mode: ProcessMode) -> Self {
self.process_mode = mode;
self
}
}