makepad/libs/video_flow/Cargo.toml
Admin dc389d71a1 vj: the transport becomes a platter — one clock per deck, the producer contract, GPU frame tweening with RIFE, NV12 end to end, AI3 adaptive subdivision, and bit-identical decks
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
2026-08-26 08:49:48 +02:00

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"]