Filmstrip
Probes, plans, exports, previews and renders frames of an edit.
One instance per component graph: injectable, disposable, and created by the Filmstrip factory function. Implemented by filmstrip, never by a consumer.
probe asks what a file is, capabilities asks what the device can encode, plan asks what this device will do with an edit, and export, preview and frame do the work, all three over the same EditComposition value, built with dev.jordond.filmstrip.edit.compositionOf.
The last two are what FrameRenderer and PreviewFactory declare, so a component that only draws frames or only plays takes one of those and is handed this.
Which of these work depends on what is registered. export, plan and capabilities need this target's engine artifact, which is filmstrip-transform-media3, filmstrip-transform-avfoundation, filmstrip-transform-webcodecs or filmstrip-transform-ffmpeg. preview and effect-applied frames need filmstrip-player, and effects need filmstrip-effects. Each registers itself through FilmstripBuilder, or dev.jordond.filmstrip:filmstrip with allBackends() registers the engine and the player together. A missing one is reported as FilmstripError.BackendMissing naming the artifact rather than as a crash.
Functions
Asks what this device's hardware encoders can do. Cached per process.
Runs a plan.
Plans and exports in one call.
Renders one frame of a composition, with its effects applied.
Renders one frame of a single source, with no composition to build by hand.
Renders several frames, emitting each as it is ready.
How faithfully an effect will be previewed, with no work at all.
Resolves every effect and validates the pipeline against this device, without decoding, encoding or writing anything.
Opens a player over the same composition value that an export takes.
Reads a source's metadata without decoding it.
Renders one frame of a composition and writes it as a still image.
Encodes one frame of a single source as a still image, with no composition to build by hand.