Advanced Search
Search Results
70 total results found
Venturi Architecture
Internal architecture of the Venturi video editor: crates, data model, media/render/audio pipelines, application core, UI, concurrency and the MCP server. Developer-facing; not a user guide.
1. Overview
What Venturi is, the decisions that shape it, how the Cargo workspace is split into crates, and the vocabulary used in the rest of the book.
Workspace Map
Venturi is a single Cargo workspace (edition 2024) of eight crates. Dependencies never point upwards: the data model knows nothing about media, the engines know nothing about each other, and the application core knows nothing about any UI. The GUI and the MCP ...
2. Data Model (vv-core)
The project model, ids, keyframes, edits and undo, persistence and OTIO interchange.
3. Media Pipeline (vv-media)
Probing, decoding with hardware acceleration, the frame cache, proxies, thumbnails, waveforms and encoding.
4. Rendering (vv-render)
The wgpu compositor, text rendering and the GPU device shared with the UI.
5. Audio (vv-audio, vv-vad)
The real-time mixer and effect chain, time-stretch, voiceover recording and voice activity detection.
6. Application Core (vv-session)
The UI-free session shared by the editor and headless hosts: jobs, workers, frame provider and export.
7. Editor UI (vv-app)
The egui application: frame loop, timeline, viewer and playback, panels, dialogs, settings and localisation.
8. Concurrency
Which threads exist, what each one owns, and how data moves between them.
9. MCP Server (vv-mcp)
How MCP tool calls reach a Session, headless and inside the editor, and the tool catalogue.
10. Build & Distribution
Building from source, test conventions and packaging.
Goals & Scope
Venturi is an editing-focused non-linear video editor (NLE) written in Rust. It does few things and aims to do them well: cutting, the transforms used while editing, correcting the color and finishing the sound in place. System context A single binary, vv-app...
Packaging
Releases ship three files: an AppImage for Linux x86_64, one for Linux aarch64, and a dmg for Apple Silicon Macs. Each bundles its own FFmpeg, built from source. Release workflow scripts/release.sh 0.2.0 # bumps Cargo.toml/Cargo.lock, commits, tags gi...
Key Design Decisions
The choices that shape the rest of the code. Each one is detailed in the chapter of the crate it belongs to. Platform and stack Decision Why Rust Mature media ecosystem, no GC pauses, memory safety while iterating fast (also with AI assistance). egui + eframe ...
Glossary
Terms used throughout the book. Code names are given where they differ from the plain term. Model Term Meaning Project The whole document and single source of truth: media pool, timelines, folders, id counters. Saved as .vvproj (RON). Timeline A sequence with...
Building & Dependencies
Full instructions live in docs/BUILDING.md; this page summarises what the build needs and why. Build-time dependencies Dependency Needed by Rust ≥ 1.88 (edition 2024) The whole workspace. FFmpeg dev libraries + pkg-config ffmpeg-next: decode, encode, resampl...
Testing Conventions
Where unit tests live Unit tests are not inline. They live in crates/<crate>/src/tests/, mirroring the source path, and each source file pulls its tests in as a child module so they still see private items: // in src/export.rs; tests in src/tests/export.rs #[...