1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! Video and audio filter graph operations — the Rust way.
//!
//! This crate provides a safe, ergonomic API for constructing and running
//! `FFmpeg` libavfilter filter graphs. All `unsafe` `FFmpeg` internals are
//! encapsulated in the `filter_inner` module; users never need to write `unsafe` code.
//!
//! ## Quick start
//!
//! ```ignore
//! use ff_filter::{FilterGraph, ToneMap};
//! use std::time::Duration;
//!
//! // Build a filter graph: scale to 1280×720, then apply tone mapping.
//! let mut graph = FilterGraph::builder()
//! .scale(1280, 720)
//! .tone_map(ToneMap::Hable)
//! .build()?;
//!
//! // Push decoded VideoFrames in …
//! graph.push_video(0, &decoded_frame)?;
//!
//! // … and pull filtered frames out.
//! while let Some(frame) = graph.pull_video()? {
//! // encode or display `frame`
//! }
//! ```
//!
//! ## Module structure
//!
//! - [`graph`] — public types: [`FilterGraph`], [`FilterGraphBuilder`], [`ToneMap`], [`HwAccel`]
//! - [`error`] — [`FilterError`]
//! - `filter_inner` — `pub(crate)` unsafe `FFmpeg` calls (not part of the public API)
pub use ;
pub use ;
pub use BlendMode;
pub use FilterError;
pub use ;