use crate::error::TalkError;
use tokio::sync::mpsc;
#[cfg(feature = "capture")]
pub mod bt_profile;
#[cfg(feature = "capture")]
pub mod cpal_capture;
pub mod encoder;
pub mod file_source;
#[cfg(feature = "capture")]
pub mod indicator;
pub mod mock;
#[cfg(feature = "capture")]
pub mod monitor_capture;
#[cfg(feature = "capture")]
pub mod pipewire_capture;
#[cfg(feature = "playback")]
pub mod player;
#[cfg(feature = "capture")]
pub mod recording_feedback;
pub mod resample;
pub mod ring_buffer;
pub mod tee;
pub mod writer;
pub use encoder::{AudioEncoder, MockEncoder, OpusEncoder};
#[cfg(feature = "playback")]
pub use player::AudioPlayer;
pub use writer::{AudioWriter, OggOpusWriter, WavWriter};
pub(crate) const CHUNK_DURATION_MS: u64 = 20;
pub(crate) const CHANNEL_CAPACITY: usize = 25;
pub trait AudioCapture: Send {
fn start(&mut self) -> Result<mpsc::Receiver<Vec<i16>>, TalkError>;
fn stop(&mut self) -> Result<(), TalkError>;
}