Skip to main content

PooledBuffer

Struct PooledBuffer 

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

A buffer acquired from a FramePool.

When this buffer is dropped, it is automatically returned to its parent pool if the pool still exists. This enables zero-overhead buffer reuse during video decoding.

§Memory Management

The buffer holds a weak reference to its parent pool. If the pool is dropped before the buffer, the buffer’s memory is simply freed rather than being returned to the pool.

§Cloning

When cloned, the new buffer becomes a standalone buffer (no pool reference). This prevents double-free issues where both the original and cloned buffer would attempt to return the same memory to the pool.

Implementations§

Source§

impl PooledBuffer

Source

pub fn new(data: Vec<u8>, pool: Weak<dyn FramePool>) -> PooledBuffer

Creates a new pooled buffer with a reference to its parent pool.

§Arguments
  • data - The buffer data.
  • pool - A weak reference to the parent pool.
Source

pub fn standalone(data: Vec<u8>) -> PooledBuffer

Creates a new pooled buffer without a parent pool.

This is useful for buffers allocated outside of a pool context. When dropped, the buffer’s memory is simply freed.

Source

pub fn data(&self) -> &[u8]

Returns a reference to the buffer data.

Source

pub fn data_mut(&mut self) -> &mut [u8]

Returns a mutable reference to the buffer data.

Source

pub fn len(&self) -> usize

Returns the length of the buffer in bytes.

Source

pub fn is_empty(&self) -> bool

Returns true if the buffer is empty.

Source

pub fn into_inner(self) -> Vec<u8>

Consumes the buffer and returns the underlying data.

After calling this, the buffer will not be returned to the pool.

Trait Implementations§

Source§

impl AsMut<[u8]> for PooledBuffer

Source§

fn as_mut(&mut self) -> &mut [u8]

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<[u8]> for PooledBuffer

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for PooledBuffer

Source§

fn clone(&self) -> PooledBuffer

Clones the buffer data, but the cloned buffer becomes standalone.

The cloned buffer will NOT be returned to the pool when dropped. This prevents double-free issues where both buffers would attempt to return the same memory to the pool.

Only the original buffer retains its pool reference.

1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PooledBuffer

Source§

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

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

impl Drop for PooledBuffer

Source§

fn drop(&mut self)

Executes the destructor for this 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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.