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§
- Buffer
Desc - Descriptor for a pooled buffer slot.
- Buffer
Pool - A pool of frame buffers identified by integer IDs.
- Pooled
Buffer - A buffer managed by the pool with an associated unique ID.
- Pressure
Thresholds - Fractional watermarks that define memory pressure level transitions.
Enums§
- Memory
Pressure Level - Severity level of memory pressure in a buffer pool.
Type Aliases§
- Memory
Pressure Callback - A callable invoked whenever the pressure level changes.