pub trait AudioEncoder: Send {
// Required methods
fn new() -> Result<Self>
where Self: Sized;
fn process(&mut self, raw_frame: RawAudioFrame) -> Result<()>;
fn drain(&mut self) -> Result<()>;
fn reset(&mut self) -> Result<()>;
fn get_encoder(&self) -> &Option<Audio>;
fn take_encoded_recv(&mut self) -> Option<HeapCons<EncodedAudioFrame>>;
fn drop_encoder(&mut self);
}