Skip to main content

Crate ffcine_render

Crate ffcine_render 

Source
Expand description

The ffcine render path: Pipeline, Grade and EncoderSettings (backend-neutral), and backend::Ffmpeg (feature ffmpeg), which runs them on ffmpeg’s libav* and libplacebo/Vulkan with frames kept in VRAM end to end.

Re-exports§

pub use bake::Bake;
pub use blend::BlendMode;
pub use encode::Codec;
pub use encode::EncoderSettings;
pub use encode::PixelFormat;
pub use encode::RateControl;
pub use grade::Border;
pub use grade::ColorMapTuning;
pub use grade::ColorOverride;
pub use grade::Crop;
pub use grade::Deband;
pub use grade::Dither;
pub use grade::DitherMethod;
pub use grade::GamutMapping;
pub use grade::Grade;
pub use grade::Hook;
pub use grade::LutStage;
pub use grade::ParamTrack;
pub use grade::Scaler;
pub use grade::Scaling;
pub use grade::Size;
pub use grade::ToneMapping;
pub use grade::Warp;
pub use layer::Image;
pub use layer::Layer;
pub use layer::LayerSource;
pub use layer::STILL_PIXELS;
pub use layer::STILL_SIDE;
pub use layer::Scene;
pub use layer::still_fits;
pub use overlay::Mask;
pub use overlay::Motion;
pub use overlay::Overlay;
pub use overlay::OverlayPart;
pub use pipeline::Backend;
pub use pipeline::Decode;
pub use pipeline::Device;
pub use pipeline::FrameContext;
pub use pipeline::Pipeline;
pub use pipeline::RunStats;
pub use pipeline::Stage;
pub use profile::DeliveryProfile;

Modules§

backend
Backends. Only ffmpeg (libav* I/O) + libplacebo (Vulkan processing) exists today.
bake
The LUT baker: a camera LUT, a grade LUT and the look (LookParams) evaluated over a lattice into one 3D LUT, with no ffmpeg in the loop. The result goes on the source as one pl_custom_lut (or out as a .cube for other tools), in the order the GPU pass runs them: camera LUT, grade LUT, look.
blend
Blend modes for crate::Layers (ffcine.comp.blend/1 mode, Resolve’s composite modes): the W3C compositing formulas (Photoshop’s where W3C has none), as a CPU reference and as the GLSL the backend’s composite pass runs. Both work on encoded RGB in 0..1 (the output’s transfer), the backdrop opaque: out = (1 − a) · b + a · B(b, s) with a the layer’s alpha times its opacity.
encode
Encoder settings, backend-neutral (names follow ffmpeg’s encoder options).
extra
A grade’s raw ffmpeg filters (extra, after the grade) as GPU hooks: the colour filters the prototype’s edits use, parsed from ffmpeg’s filter syntax (name=k=v:k=v, positional arguments, comma-separated chains) and run as PREOUTPUT hooks in chain order, so nothing falls back to the CPU.
filter_node
The libavfilter escape hatch (docs/compositing.md#libavfilter-escape-hatch): a raw libavfilter graph run over a layer’s frames in its prep, before the GPU pass.
grade
The grade: everything libplacebo does to a frame between decode and encode.
layer
Picture layers composited over a pipeline’s graded frames in the same GPU pass: split-screen panels, picture-in-picture, stickers and logos, the incoming side of a transition.
overlay
Overlays composited onto the output in the grade pass (text cards, captions), backend-neutral.
pipeline
A pipeline: one input, a chain of GPU stages, one encoded output.
profile
Delivery render profiles: the encoder and output size for a kind of copy (DeliveryProfile).
shaders
libplacebo user shaders (mpv .hook format) generated by ffcine.

Structs§

ColorSpace
A complete colour description, as tagged on a stream or requested for an output.
HdrMetadata
Static HDR metadata written with an HDR deliverable: the SMPTE ST 2086 mastering display and the CTA-861.3 content light levels (HEVC SEI, and mdcv / clli in MP4 and MOV).
Lut
A 3D LUT: size^3 RGB entries, red varying fastest (.cube order).
MediaInfo
Rational
An exact ratio (frame rates, time bases).

Enums§

Error
Errors from ffcine and its backends.
LutType
What colour space a LUT’s input/output live in (libplacebo’s lut_type).

Type Aliases§

Result