feat: render .fcast recordings through felis's offscreen renderer #2
Loading…
Reference in a new issue
No description provided.
Delete branch "poc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
First working felis-reel: it renders a
.fcastrecording to MP4, WebM, GIF or a PNG sequence through felis's offscreen renderer (natsukium/felis#465).Why
That offscreen renderer was the one upstream change the design needed. With it merged, the pipeline in
docs/explanation/design.mdcan run end to end.What changed
deny.tomlwith a git-source allow-list, and CI running fmt, clippy, test and deny.5c8b9769. felis-fcast is a git dependency at its own pin; itsCastholds frame bodies as JSON, so the two felis revisions never meet.timeline:--idle-limitcaps each gap and--speedscales it.replay:json_v1.GridMsg→ renderer mapping (natsukium/felis#442 tracks sharing it).canvas: the renderer draws at the exact grid size, because it centers a grid in any larger target. Each frame is copied top-left into a canvas as large as the largest grid, with even dimensions. The rest of the canvas is filled with the renderer's clear color, and alpha is forced to 255.sink: raw RGBA piped toffmpeg(H.264, VP9, or GIF throughpalettegen/paletteuse), or one PNG per frame into an empty directory.felis_jsonthis build does not read.--speedvalues that are not finite and positive.--idle-limitvalues that are not finite and non-negative.--font-sizeoutside felis's 4–72 px band.--themeselects a file; the client id isreel). TheRendererConfigis built here because felis-client's conversion is private. A configured post shader is ignored with a warning.Verification
-D warnings, 10 unit tests andcargo denypass.gen_hello/gen_scrollsamples:felis_jsonheader exit 1 with a message.Open in the backlog: GIF duplicate-frame merging,
--cursor-blink, an end-to-end test that includes a mid-recording resize, and golden tests (which need pinned fonts from felis).