Skip to main content

Repacketizer

Struct Repacketizer 

Source
pub struct Repacketizer { /* private fields */ }
Expand description

opus_repacketizer: accumulate frames from one or more same-config packets, then emit them as a single re-framed packet.

Implementations§

Source§

impl Repacketizer

Source

pub fn new() -> Self

An empty repacketizer, holding no frames.

Source

pub fn clear(&mut self)

Drop every frame, keeping the buffers that held them.

This is what makes one repacketizer reusable across packets. Building a fresh Repacketizer::new per packet is correct but allocates a buffer per frame every time; clearing and refilling one reuses them.

Source

pub fn nb_frames(&self) -> usize

Frames accumulated so far by cat.

Also the upper bound for out_range, which is how a packet is split rather than joined.

Source

pub fn cat(&mut self, data: &[u8]) -> Result<()>

Append the frames of data (opus_repacketizer_cat). Errors if the TOC config differs from frames already held, or the 120 ms cap is exceeded.

Source

pub fn out_range(&self, begin: usize, end: usize) -> Result<Vec<u8>>

Emit frames [begin, end) as one packet (opus_repacketizer_out_range).

Source

pub fn out(&self) -> Result<Vec<u8>>

Emit all held frames (opus_repacketizer_out).

Source

pub fn out_into(&self, out: &mut Vec<u8>) -> Result<()>

out, appended to out instead of allocating.

The _into forms exist because every other one hands back a fresh Vec, which is an allocation per packet a caller in a steady loop can do without. They append, so one buffer can accumulate several packets.

Source

pub fn out_range_into( &self, begin: usize, end: usize, out: &mut Vec<u8>, ) -> Result<()>

out_range, appended to out.

Source

pub fn out_self_delimited_into(&self, out: &mut Vec<u8>) -> Result<()>

out_self_delimited, appended to out.

Source

pub fn out_self_delimited(&self) -> Result<Vec<u8>>

Emit all frames with the self-delimited framing multistream uses (the last frame’s length is coded so the packet’s total size is derivable).

Trait Implementations§

Source§

impl Debug for Repacketizer

Shows what the repacketizer holds without printing the frames themselves, which are compressed audio and unreadable either way.

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Repacketizer

Source§

fn default() -> Repacketizer

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.