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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! # ff-pipeline
//!
//! Unified decode → filter → encode pipeline for the ff-* crate family.
//!
//! This crate wires together `ff-decode`, `ff-filter`, and `ff-encode` into a
//! single high-level API. All `unsafe` `FFmpeg` internals remain encapsulated in
//! the underlying crates; users of `ff-pipeline` never need to write `unsafe` code.
//!
//! ## Features
//!
//! - **Single-call transcode**: open → filter → encode in one `Pipeline::run()`
//! - **Progress callbacks**: real-time frame-count and elapsed-time updates
//! - **Cancellation**: returning `false` from the progress callback aborts the pipeline
//! - **Multi-input concatenation**: pass multiple input paths to concatenate clips
//!
//! ## Usage
//!
//! ```ignore
//! use ff_pipeline::{Pipeline, EncoderConfig};
//! use ff_format::{VideoCodec, AudioCodec};
//! use ff_encode::BitrateMode;
//!
//! let config = EncoderConfig::builder()
//! .video_codec(VideoCodec::H264)
//! .audio_codec(AudioCodec::Aac)
//! .bitrate_mode(BitrateMode::Cbr(4_000_000))
//! .resolution(1280, 720)
//! .framerate(30.0)
//! .build();
//!
//! Pipeline::builder()
//! .input("input.mp4")
//! .output("output.mp4", config)
//! .on_progress(|p| {
//! println!("frame={} elapsed={:?}", p.frames_processed, p.elapsed);
//! true // return false to cancel
//! })
//! .build()?
//! .run()?;
//! ```
//!
//! ## Module Structure
//!
//! - [`audio_pipeline`] — [`AudioPipeline`]
//! - [`encoder_config`] — [`EncoderConfig`], [`EncoderConfigBuilder`]
//! - [`error`] — [`PipelineError`]
//! - [`pipeline`] — [`Pipeline`], [`PipelineBuilder`]
//! - [`progress`] — [`Progress`], [`ProgressCallback`]
//! - [`thumbnail`] — [`ThumbnailPipeline`]
//! - [`video_pipeline`] — [`VideoPipeline`]
pub use AudioPipeline;
pub use Clip;
pub use ;
pub use PipelineError;
pub use ;
pub use ;
pub use ThumbnailPipeline;
pub use ;
pub use VideoPipeline;