Skip to content

Video Flows 1.5

Latest

Choose a tag to compare

@p-chops p-chops released this 08 Mar 13:39
· 2 commits to main since this release

Automated video processing pipeline for dense, textural, otherworldly visuals. Takes source footage or generates visuals from scratch via GLSL shaders, then processes through shader stacks, temporal effects, codec crush, compositing, and transitions.

What's new in 1.5

Generate → curate → join workflow

Two new CLI commands for a human-in-the-loop batch workflow:

# Generate individual clips (no reel, no transitions)
vf shows input/footage.mp4 -n 10 --duration 10 --archetype deep_time

# Generate from a directory of source files (one show per file)
vf shows input/ -n 3 --duration 15 -o curated/

# Watch, delete duds, then join survivors
vf join curated/ -o final_reel.mp4 --transition random --transition-dur 0.5

# Shuffle order, join from a playlist file
vf join playlist.txt --shuffle --seed 42 -o final_reel.mp4

vf shows renders clips individually to an output directory for review. vf join joins curated clips with transitions (all 12 types supported, or random for per-pair variety). Supports --shuffle, directory or text file input, and all transition parameters.

Codec crush simulation shader

New starter_macroblocks shader — simulates H.264 compression artifacts in the shader domain: temporal prediction errors (stale blocks frozen on old content), DCT-style quantisation, and bidirectional block-edge ringing. Blocks hold stale/fresh state for ~0.5s so motion clearly reveals frozen blocks lagging behind the live image. Parameters: block_size, stale_prob, ringing, quantize.

Starter pack now at 30 shaders (13 processors, 17 generators), 24 evolved stacks.

Time effect memory guards

Fused time chains now estimate peak RAM before decoding frames. Per-effect multipliers (e.g. temporal_sort: 6.0x, temporal_fft: 5.0x) predict memory usage; if the estimate exceeds available system RAM, a MemoryError is raised before any work begins. _stack_and_free() builds volumetric arrays while freeing source list entries for GC, reducing peak memory for effects that operate on (T,H,W,C) volumes.

Temporal sort compensation

temporal_sort now compensates for its inherent brightness shift. Sorting pixel values along the time axis redistributes them non-uniformly; compensation restores per-pixel temporal means to match the original footage.

CI workflow

New GitHub Actions workflow (.github/workflows/ci.yml) tests pip install and verifies the vf CLI, subcommands, pack discovery, Python imports, and starter shader parsing on Python 3.10, 3.12, and 3.13. No GPU or ffmpeg required.

Requirements

  • Python 3.10+
  • ffmpeg / ffprobe on PATH
  • OpenGL 3.3+ GPU (headless — no window needed)

Quick start

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

# Generate a show reel — works immediately, no source footage needed
vf reel -n 8 --seed 42

Output lands in output/. The included starter pack has everything needed to produce output on first run.

License

MIT