zk-audio 0.1.0

Audio processing library for voice recording and enhancement
Documentation
use crate::core::{AudioFrame, AudioResult, AudioSpec};
use crate::types::{AudioBlock, ProcessContext, ProcessorInfo};

pub trait MicrophoneSimProcessor: Send {
    fn name(&self) -> &'static str;
    fn prepare(&mut self, spec: AudioSpec) -> AudioResult<()>;
    fn process(&mut self, frame: &mut AudioFrame) -> AudioResult<()>;

    fn prepare_with_context(&mut self, ctx: &ProcessContext) -> AudioResult<ProcessorInfo> {
        self.prepare(ctx.spec)?;
        Ok(ProcessorInfo::default())
    }

    fn process_block(&mut self, block: &mut AudioBlock, _ctx: &ProcessContext) -> AudioResult<()> {
        let mut frame = AudioFrame {
            samples: std::mem::take(&mut block.samples),
            spec: block.spec,
        };
        self.process(&mut frame)?;
        block.samples = frame.samples;
        Ok(())
    }
}