pub struct OpusEncoder { /* private fields */ }Expand description
Stateful Opus encoder with the fixed WaveKat voice profile.
Unlike G711Codec this is not Copy —
libopus carries inter-frame prediction state, so one encoder serves
exactly one outbound stream and must be fed every frame in order.
Implementations§
Source§impl OpusEncoder
impl OpusEncoder
Sourcepub fn new() -> Result<Self, CoreError>
pub fn new() -> Result<Self, CoreError>
Create an encoder with the locked profile: 16 kHz mono VoIP, ~28 kbps, in-band FEC on (with expected loss set so it actually engages), DTX off.
Sourcepub fn encode(
&mut self,
pcm: &[i16],
out: &mut Vec<u8>,
) -> Result<usize, CoreError>
pub fn encode( &mut self, pcm: &[i16], out: &mut Vec<u8>, ) -> Result<usize, CoreError>
Encode exactly one 20 ms frame (OPUS_FRAME_SAMPLES samples at
OPUS_PCM_SAMPLE_RATE) into one Opus packet. Appends the packet
bytes to out and returns the packet length.
The length is enforced because libopus only accepts legal frame durations and the WaveKat send path packetizes at 20 ms; a wrong slice length here is always a caller bug, not a stream condition.
Auto Trait Implementations§
impl !Sync for OpusEncoder
impl Freeze for OpusEncoder
impl RefUnwindSafe for OpusEncoder
impl Send for OpusEncoder
impl Unpin for OpusEncoder
impl UnsafeUnpin for OpusEncoder
impl UnwindSafe for OpusEncoder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more