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
impl PooledBuffer
Sourcepub fn new(data: Vec<u8>, pool: Weak<dyn FramePool>) -> Self
pub fn new(data: Vec<u8>, pool: Weak<dyn FramePool>) -> Self
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.
Sourcepub fn standalone(data: Vec<u8>) -> Self
pub fn standalone(data: Vec<u8>) -> Self
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.
Sourcepub fn into_inner(self) -> Vec<u8> ⓘ
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
impl AsMut<[u8]> for PooledBuffer
Source§impl AsRef<[u8]> for PooledBuffer
impl AsRef<[u8]> for PooledBuffer
Source§impl Clone for PooledBuffer
impl Clone for PooledBuffer
Source§fn clone(&self) -> Self
fn clone(&self) -> Self
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)
fn clone_from(&mut self, source: &Self)
source. Read more