pub struct MultistreamEncoderRef<'a> { /* private fields */ }Expand description
Borrowed wrapper around a multistream encoder.
Implementations§
Source§impl<'a> MultistreamEncoderRef<'a>
impl<'a> MultistreamEncoderRef<'a>
Sourcepub unsafe fn from_raw(
ptr: *mut OpusMSEncoder,
sr: SampleRate,
mapping: Mapping<'_>,
) -> Self
pub unsafe fn from_raw( ptr: *mut OpusMSEncoder, sr: SampleRate, mapping: Mapping<'_>, ) -> Self
Wrap an externally-initialized multistream encoder without taking ownership.
§Safety
ptrmust point to valid, initialized memory of at leastMultistreamEncoder::size()bytesptrmust be aligned to at leastalign_of::<usize>()(malloc-style alignment)- The memory must remain valid for the lifetime
'a - Caller is responsible for freeing the memory after this wrapper is dropped
Use MultistreamEncoder::init_in_place to initialize the memory before calling this.
Sourcepub fn init_in(
buf: &'a mut AlignedBuffer,
sr: SampleRate,
app: Application,
mapping: Mapping<'_>,
) -> Result<Self>
pub fn init_in( buf: &'a mut AlignedBuffer, sr: SampleRate, app: Application, mapping: Mapping<'_>, ) -> Result<Self>
Initialize and wrap an externally allocated buffer.
§Errors
Returns Error::BadArg if the buffer is too small, or a mapped libopus error.
Sourcepub fn init_in_surround(
buf: &'a mut AlignedBuffer,
sr: SampleRate,
channels: u8,
mapping_family: i32,
app: Application,
) -> Result<(Self, Vec<u8>)>
pub fn init_in_surround( buf: &'a mut AlignedBuffer, sr: SampleRate, channels: u8, mapping_family: i32, app: Application, ) -> Result<(Self, Vec<u8>)>
Initialize a surround encoder in an externally allocated buffer.
§Errors
Returns Error::BadArg if the buffer is too small, or a mapped libopus error.
Methods from Deref<Target = MultistreamEncoder>§
Sourcepub fn encode(
&mut self,
pcm: &[i16],
frame_size_per_ch: usize,
out: &mut [u8],
) -> Result<usize>
pub fn encode( &mut self, pcm: &[i16], frame_size_per_ch: usize, out: &mut [u8], ) -> Result<usize>
Encode interleaved i16 PCM into a multistream Opus packet.
§Errors
Returns Error::InvalidState if the encoder handle is invalid, Error::BadArg
for buffer mismatches, or the mapped libopus error code.
Sourcepub fn encode_float(
&mut self,
pcm: &[f32],
frame_size_per_ch: usize,
out: &mut [u8],
) -> Result<usize>
pub fn encode_float( &mut self, pcm: &[f32], frame_size_per_ch: usize, out: &mut [u8], ) -> Result<usize>
Encode interleaved f32 PCM into a multistream Opus packet.
§Errors
Returns Error::InvalidState if the encoder handle is invalid, Error::BadArg
for buffer mismatches, or the mapped libopus error code.
Sourcepub fn final_range(&mut self) -> Result<u32>
pub fn final_range(&mut self) -> Result<u32>
Final RNG state from the last encode.
§Errors
Returns Error::InvalidState when the encoder handle is null or
propagates the libopus error.
Sourcepub fn set_bitrate(&mut self, bitrate: Bitrate) -> Result<()>
pub fn set_bitrate(&mut self, bitrate: Bitrate) -> Result<()>
Set target bitrate for the encoder.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn bitrate(&mut self) -> Result<Bitrate>
pub fn bitrate(&mut self) -> Result<Bitrate>
Query the current bitrate target.
§Errors
Returns Error::InvalidState if the encoder handle is null, Error::InternalError
if the returned value cannot be represented, or propagates any error reported by
libopus.
Sourcepub fn set_complexity(&mut self, complexity: Complexity) -> Result<()>
pub fn set_complexity(&mut self, complexity: Complexity) -> Result<()>
Set encoder complexity in the range 0..=10.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn complexity(&mut self) -> Result<Complexity>
pub fn complexity(&mut self) -> Result<Complexity>
Query encoder complexity.
§Errors
Returns Error::InvalidState if the encoder handle is null, Error::InternalError
if the response is outside the valid range, or propagates any error reported by libopus.
Sourcepub fn set_dtx(&mut self, enabled: bool) -> Result<()>
pub fn set_dtx(&mut self, enabled: bool) -> Result<()>
Enable/disable discontinuous transmission (DTX).
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn dtx(&mut self) -> Result<bool>
pub fn dtx(&mut self) -> Result<bool>
Query whether DTX is enabled.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn in_dtx(&mut self) -> Result<bool>
pub fn in_dtx(&mut self) -> Result<bool>
Query whether the encoder is currently in DTX.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn set_inband_fec(&mut self, enabled: bool) -> Result<()>
pub fn set_inband_fec(&mut self, enabled: bool) -> Result<()>
Enable/disable in-band FEC generation.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn inband_fec(&mut self) -> Result<bool>
pub fn inband_fec(&mut self) -> Result<bool>
Query whether in-band FEC is enabled.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn set_packet_loss_perc(&mut self, perc: i32) -> Result<()>
pub fn set_packet_loss_perc(&mut self, perc: i32) -> Result<()>
Set expected packet loss percentage (0..=100).
§Errors
Returns Error::BadArg when perc is outside 0..=100, Error::InvalidState if
the encoder handle is null, or propagates any error reported by libopus.
Sourcepub fn packet_loss_perc(&mut self) -> Result<i32>
pub fn packet_loss_perc(&mut self) -> Result<i32>
Query expected packet loss percentage.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn set_vbr(&mut self, enabled: bool) -> Result<()>
pub fn set_vbr(&mut self, enabled: bool) -> Result<()>
Enable/disable variable bitrate.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn vbr(&mut self) -> Result<bool>
pub fn vbr(&mut self) -> Result<bool>
Query VBR status.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn set_vbr_constraint(&mut self, constrained: bool) -> Result<()>
pub fn set_vbr_constraint(&mut self, constrained: bool) -> Result<()>
Constrain VBR to reduce instantaneous bitrate swings.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn vbr_constraint(&mut self) -> Result<bool>
pub fn vbr_constraint(&mut self) -> Result<bool>
Query VBR constraint flag.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn set_max_bandwidth(&mut self, bw: Bandwidth) -> Result<()>
pub fn set_max_bandwidth(&mut self, bw: Bandwidth) -> Result<()>
Set the maximum bandwidth the encoder may use.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn max_bandwidth(&mut self) -> Result<Bandwidth>
pub fn max_bandwidth(&mut self) -> Result<Bandwidth>
Query the configured maximum bandwidth.
§Errors
Returns Error::InvalidState if the encoder handle is null, Error::InternalError
if the value cannot be represented, or propagates any error reported by libopus.
Sourcepub fn set_bandwidth(&mut self, bw: Bandwidth) -> Result<()>
pub fn set_bandwidth(&mut self, bw: Bandwidth) -> Result<()>
Force a specific output bandwidth (overrides automatic selection).
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn bandwidth(&mut self) -> Result<Bandwidth>
pub fn bandwidth(&mut self) -> Result<Bandwidth>
Query the current forced bandwidth, if any.
§Errors
Returns Error::InvalidState if the encoder handle is null or Error::InternalError
if the value is outside the known set, and propagates any error reported by libopus.
Sourcepub fn set_force_channels(&mut self, channels: Option<Channels>) -> Result<()>
pub fn set_force_channels(&mut self, channels: Option<Channels>) -> Result<()>
Force mono/stereo output for coupled streams, or None for automatic.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn force_channels(&mut self) -> Result<Option<Channels>>
pub fn force_channels(&mut self) -> Result<Option<Channels>>
Query forced channel configuration (if any).
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn set_signal(&mut self, signal: Signal) -> Result<()>
pub fn set_signal(&mut self, signal: Signal) -> Result<()>
Hint the type of content being encoded (voice/music).
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn signal(&mut self) -> Result<Signal>
pub fn signal(&mut self) -> Result<Signal>
Query the current signal hint.
§Errors
Returns Error::InvalidState if the encoder handle is null, Error::InternalError
if the response is not recognized, or propagates any error reported by libopus.
Sourcepub fn lookahead(&mut self) -> Result<i32>
pub fn lookahead(&mut self) -> Result<i32>
Query the algorithmic lookahead in samples at 48 kHz.
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn reset(&mut self) -> Result<()>
pub fn reset(&mut self) -> Result<()>
Reset the encoder state (retaining configuration).
§Errors
Returns Error::InvalidState if the encoder handle is null or propagates any error
reported by libopus.
Sourcepub fn sample_rate(&self) -> SampleRate
pub fn sample_rate(&self) -> SampleRate
Input sampling rate.
Sourcepub fn coupled_streams(&self) -> u8
pub fn coupled_streams(&self) -> u8
Number of coupled streams.
Sourcepub unsafe fn encoder_state_ptr(
&mut self,
stream_index: i32,
) -> Result<*mut OpusEncoder>
pub unsafe fn encoder_state_ptr( &mut self, stream_index: i32, ) -> Result<*mut OpusEncoder>
Borrow a pointer to an individual underlying encoder state for CTLs.
§Safety
Caller must not outlive the multistream encoder and must ensure the returned pointer is only used for immediate FFI calls.
§Errors
Returns Error::InvalidState if the encoder handle is invalid or propagates the
libopus error if retrieving the state fails.