Skip to main content

Module buffer_pool

Module buffer_pool 

Source
Expand description

Frame buffer pool for zero-copy operations.

This module provides an ID-based buffer pool (BufferPool) for efficient frame buffer reuse with explicit ownership tracking. Features include:

  • Memory pressure level monitoring (Low / Medium / High / Critical)
  • Pressure callbacks fired on level transitions
  • Automatic pool shrinking to reclaim idle memory

§Example

use oximedia_core::buffer_pool::{BufferPool, PressureThresholds, MemoryPressureLevel};

let mut pool = BufferPool::with_pressure(4, 1024, PressureThresholds::default());
pool.add_pressure_callback(Box::new(|level| {
    // react to memory pressure level changes
    let _ = level;
}));
// Acquire 3/4 buffers (75%) → High pressure level
let id0 = pool.acquire().expect("buffer available");
let id1 = pool.acquire().expect("buffer available");
let id2 = pool.acquire().expect("buffer available");
assert_eq!(pool.current_pressure_level(), MemoryPressureLevel::High);
pool.release(id0);
pool.release(id1);
pool.release(id2);
assert_eq!(pool.current_pressure_level(), MemoryPressureLevel::Low);

Structs§

BufferDesc
Descriptor for a pooled buffer slot.
BufferPool
A pool of frame buffers identified by integer IDs.
PooledBuffer
A buffer managed by the pool with an associated unique ID.
PressureThresholds
Fractional watermarks that define memory pressure level transitions.

Enums§

MemoryPressureLevel
Severity level of memory pressure in a buffer pool.

Type Aliases§

MemoryPressureCallback
A callable invoked whenever the pressure level changes.