Skip to main content

ffcine_reframe/
lib.rs

1//! Reframe (roadmap step 5, `docs/design.md#roadmap`, `docs/reframe.md`): keyframed crop windows
2//! for punch-ins, eased push-ins, pans and vertical aspect windows (9:16 reels, 4:5 feed) from
3//! 16:9 sources, evaluated in Rust per frame and applied as the crop/scale of the libplacebo grade
4//! pass. Replaces the prototype's per-frame libplacebo crop expressions (`render.py` `gpu_geo`),
5//! without their pixel rounding: windows are `f64` until libplacebo resamples them sub-pixel.
6//!
7//! - [`Reframe`]: the `ffcine.geo.reframe/1` effect (prototype fields, keyframes, per-profile
8//!   overrides), evaluated into a [`Frame`] per output frame.
9//! - [`Profile`]: the output frame (one timeline renders once per profile), with a [`SafeArea`]
10//!   overlay for review.
11//! - [`pass::apply`]: puts the frames into a [`ffcine_render::Grade`], composed with the
12//!   stabilizer's warp ([`ffcine_core::geom::Mat3`]) when there is one.
13
14pub mod geo;
15pub mod keyframe;
16pub mod pass;
17pub mod profile;
18pub mod reframe;
19pub mod window;
20
21pub use geo::{Geo, Mapped};
22pub use keyframe::{Interp, Key, Keyed};
23pub use profile::{Profile, SafeArea};
24pub use reframe::{Fit, Frame, Punch, Reframe, Shot, Slide};
25pub use window::Rect;
26
27#[cfg(test)]
28mod tests;