facett-video — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: A themed egui video player whose transport chrome is KeyMap-driven and whose decode is a pluggable backend trait.
- Does: Ships
VideoPlayer(play/pause/toggle/seek/scrub/volume/ROI + fullscreen) painted with facett-core theming and the sharedKeyMap. Decode is abstracted behind theFrameSourcetrait; the shippedFrameSequencebackend lets a consumer push RGBA frames (image sequences / sim / camera). ROI selection mirrors the grid range-select; "copy frame" yields a typedClipPayload::Image. - Key deps:
facett-core(theme, KeyMap, Facet, clip payload),egui,serde/serde_json(state). A real FFmpeg (egui-video) backend is intended host-side, not pulled here. - Shape: lib, small (~400 lines: lib.rs + tests.rs). Single-module. Key types:
FrameSourcetrait,FrameSequence,VideoPlayer. - Observed role in the workspace: A facett UI component; a deterministic frame-source backend makes it headless-snapshot-testable, so it slots into a FacetDeck like the other panes.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: