ff-common 0.16.0

Common types and utilities for FFmpeg-based media processing
Documentation

ff-common

Shared buffer-pooling abstractions for the ff-* crate family.

ff-common is a small, FFmpeg-free foundation shared across the ff-* family: frame-buffer memory pooling (FramePool, PooledBuffer, VecPool). It links no FFmpeg and contains no unsafe. Applications usually get it transitively through the decode/encode crates, though VecPool is directly usable to control frame allocation. Each crate is versioned independently; see crates.io for current versions.

Overview

ff-common provides the FramePool trait, PooledBuffer type, and VecPool (a ready-to-use pool implementation) used internally across the ff-* crates. It has no external dependencies and does not link against FFmpeg.

PooledBuffer wraps an allocated block of memory and returns it to the originating pool automatically when dropped, so no manual free call is needed. If no pool is associated, the memory is deallocated. FramePool is Send + Sync, so pools can be shared across threads without additional locking.

Usage

ff-common is an internal workspace crate, not intended for direct use in application code. The following example shows the PooledBuffer::standalone constructor, which allocates a buffer without a backing pool:

use ff_common::PooledBuffer;

// Wrap a 4096-byte buffer with no pool backing.
// Memory is freed normally when `buf` is dropped.
let buf = PooledBuffer::standalone(vec![0u8; 4096]);
assert_eq!(buf.len(), 4096);

MSRV

Rust 1.93.0 (edition 2024).

License

MIT OR Apache-2.0