Squashed from work; the fine-grained history is under tag archive/work-2026-08-26: - vj: thumbnails become mp4 — hardware-coded sheets at measured-4K cells, and the bake stops racing the GPU - vj: the console grows real transports, and the deck stops lying about reverse - vj: reverse earns a memory, and the effects stop aging - vj: video goes NV12 end to end, and the GPU does the unpacking - vj: the GPU learns to see motion — realtime frame tweening on every deck - vj: the tweener learns — RIFE runs on the Mac and feeds the warp - vj: the classical tweener grows up, and every deck gets a tween chip - vj: the tween clock tells presented time, not producer time - vj: the transport becomes a platter — velocity in, position out, one map - vj: the tween presenter reads the platter — one clock per deck, cued once at the frame on screen - vj: the OFF tier joins the platter — a resident clip's picture is cache[nearest(pos)] - vj: the media thread loses its second clock — resident clips park the decoder - vj: the producer gets a contract — keyed ladders, deadlines, and a capacity law - vj: two decks, one law — identical inputs are bit-identical, and the warp agrees to the byte - vj: the presenter switch lands without its scaffolding - vj: the next pair's fields are fetched ahead of the change under the capacity law — a pair change costs an ordinary beat; macos: the layer's own display link paces the frame when the system offers it, the old path stays as fallback - vj: AI3 subdivides adaptively — one, three or seven neural frames per pair, chosen from measured synth time against the pair's own period, with classical flow between them and a 7-3-1-FL fallback; the deck shows the depth - video_flow: the flow debug bins, declared behind the convert feature so --no-default-features skips them instead of failing
39 lines
1.4 KiB
TOML
39 lines
1.4 KiB
TOML
# The motion-field half of flow-warp playback, as ONE implementation shared
|
|
# by everything that produces an `mkfl` clip: the asset-ai `video-enhance`
|
|
# backend (whose field comes from RIFE) and the VJ's import converter (whose
|
|
# field comes from the classical estimator in this crate — no AI model, no
|
|
# weights, no download).
|
|
|
|
[package]
|
|
name = "makepad-video-flow"
|
|
version = "0.1.0"
|
|
authors = ["Makepad <info@makepad.nl>"]
|
|
edition = "2021"
|
|
description = "mkfl motion-vector payload + a classical optical-flow estimator + the all-intra flow re-encode, shared by the enhance backend and the VJ importer"
|
|
license = "MIT OR Apache-2.0"
|
|
|
|
[features]
|
|
# The conversion pipeline (decode -> flow -> all-intra re-encode -> mkfl).
|
|
# Off leaves a std-only crate: the payload format and the estimator, which
|
|
# is all the enhance backend needs from here.
|
|
default = ["convert"]
|
|
convert = ["dep:makepad-video"]
|
|
|
|
[dependencies]
|
|
makepad-video = { path = "../../platform/video", optional = true }
|
|
|
|
# The synthetic optical-flow debug clips. It writes mp4s, so it needs the
|
|
# codec seam the `convert` feature pulls in — declared explicitly rather than
|
|
# auto-discovered so `--no-default-features` skips it instead of failing.
|
|
[[bin]]
|
|
name = "flowtest_gen"
|
|
path = "src/bin/flowtest_gen.rs"
|
|
required-features = ["convert"]
|
|
|
|
[[bin]]
|
|
name = "flowbake"
|
|
required-features = ["convert"]
|
|
|
|
[[bin]]
|
|
name = "flowref"
|
|
required-features = ["convert"]
|