README: hero + gallery from public-domain films (Night of the Living Dead, Carnival of Souls, Charade) with CC0 Chopin; attribution sidecars and credits; Export defaults to H.264 MP4 with a ~/Movies path

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Brandon ThomasandClaude Opus 5.5 committed 2026-09-30 22:32:04 -04:00
1 parent da9ca6c12d
commit 45f3c6c7d0
12 files changed
+98 -15

No files matched your search

+17 -1
View File
@@ -13,7 +13,23 @@ iconography, images or other Adobe assets; open licences only; every asset attri
| `assets/fonts/Inter-Medium.ttf` | The Inter Project Authors | https://github.com/rsms/inter | OFL-1.1 (`assets/fonts/OFL-Inter.txt`) |
| `assets/fonts/Inter-SemiBold.ttf` | The Inter Project Authors | https://github.com/rsms/inter | OFL-1.1 (`assets/fonts/OFL-Inter.txt`) |
| `assets/fonts/JetBrainsMono-Regular.ttf` | The JetBrains Mono Project Authors | https://github.com/JetBrains/JetBrainsMono | OFL-1.1 (`assets/fonts/OFL-JetBrainsMono.txt`) |
| `docs/images/filmcraft-hero.png` | FilmCraft contributors | Original work: screenshot of FilmCraft showing procedurally generated demo footage | MIT OR Apache-2.0 |
| `docs/images/filmcraft-hero.png` | FilmCraft contributors | Original work: FilmCraft screenshot; frames from public-domain films (Night of the Living Dead 1968, Carnival of Souls 1962), CC0 Chopin (Musopen) | MIT OR Apache-2.0; film frames public domain |
| `docs/images/filmcraft-color.png` | FilmCraft contributors | Original work: FilmCraft screenshot; frames from Charade (1963, public domain) | MIT OR Apache-2.0; film frames public domain |
| `docs/images/filmcraft-keyframes.png` | FilmCraft contributors | Original work: FilmCraft screenshot; frames from Night of the Living Dead (1968, public domain) | MIT OR Apache-2.0; film frames public domain |
| `docs/images/filmcraft-export.png` | FilmCraft contributors | Original work: FilmCraft screenshot; frame from Night of the Living Dead (1968, public domain) | MIT OR Apache-2.0; film frames public domain |
## Third-party media shown in screenshots
The README screenshots show frames from these works. The media files themselves are not in the
repository; each screenshot's sidecar lists exactly which appear.
| Work | Author | Status | Source |
|---|---|---|---|
| Night of the Living Dead (1968) | George A. Romero / Image Ten | US public domain (no copyright notice) | https://archive.org/details/night-of-the-living-dead-1968-english |
| Carnival of Souls (1962) | Herk Harvey / Harcourt Productions | US public domain | https://archive.org/details/CarnivalOfSoulsVideoQualityUpgrade |
| Charade (1963) | Stanley Donen / Universal | US public domain (defective notice) | https://archive.org/details/charade-1963-cary-grant-audrey-hepburn-comedy-mystery-romance-thriller-full-movie |
| Earth Views from the ISS (NHQ_2020_1221) | NASA | US Government work, public domain (no NASA endorsement implied) | https://images.nasa.gov/details/NHQ_2020_1221_Earth%20Views |
| Chopin: Nocturne Op. 48 No. 1, Ballade No. 1 | Musopen | CC0-1.0 | https://archive.org/details/musopen-chopin |
## Assets drawn or generated in code
+16 -4
View File
@@ -7,22 +7,34 @@
</p>
<p align="center">
<img src="docs/images/filmcraft-hero.png" alt="FilmCraft editing the demo project: Effect Controls, the Program monitor on an ocean sunset, Properties, the Project bin, and a multi-track timeline with transitions, markers and audio waveforms" width="100%">
<img src="docs/images/filmcraft-hero.png" alt="FilmCraft cutting a trailer for Night of the Living Dead (1968): Effect Controls, the Program monitor on the ghouls advancing, the Project bin of public-domain films, and a multi-track timeline with dissolves, markers, a Carnival of Souls insert, a Chopin score and loudness meters" width="100%">
</p>
<table>
<tr>
<td width="50%"><img src="docs/images/filmcraft-color.png" alt="Color workspace: a Lumetri grade on Charade (1963) with curves, colour sliders, waveform and vectorscope"><br><sub><b>Colour.</b> Grading <i>Charade</i> (1963) with Lumetri-style curves and scopes.</sub></td>
<td width="50%"><img src="docs/images/filmcraft-keyframes.png" alt="Effect Controls with the value and velocity graphs of an eased Scale push-in on the Night of the Living Dead title"><br><sub><b>Keyframes.</b> An eased push-in on the title, with value and velocity graphs.</sub></td>
</tr>
<tr>
<td width="50%"><img src="docs/images/filmcraft-export.png" alt="Export mode with H.264 MP4 settings"><br><sub><b>Export.</b> H.264 MP4 with our own encoder.</sub></td>
<td width="50%"><sub>Footage: <i>Night of the Living Dead</i> (1968), <i>Carnival of Souls</i> (1962) and <i>Charade</i> (1963), all in the US public domain; music: Chopin performed for Musopen (CC0). The media is not in this repository; full credits in <a href="ATTRIBUTION.md">ATTRIBUTION.md</a>.</sub></td>
</tr>
</table>
## Highlights
- **Own codecs, in Rust.** H.264 decoder (bit-exact against ffmpeg, 500+ fps at 1080p) and encoder (High profile, CABAC, B-frames, 2-pass), HEVC Main/Main 10 decoder, ProRes decode and encode, AAC-LC decode and encode, and an MP4/MOV demuxer and muxer. No FFmpeg inside.
- **Own codecs, in Rust.** H.264 decoder (bit-exact against ffmpeg, 500+ fps at 1080p) and encoder (High profile, CABAC, B-frames, 2-pass), HEVC Main/Main 10 decoder, ProRes decode and encode, AAC-LC decode and encode, MP4/MOV and Matroska/WebM containers. No FFmpeg inside.
- **Real editing.** Insert, overwrite, ripple, roll, slip, slide, rate stretch, razor, lift/extract, nesting and markers, all built on an exact integer time base (254,016,000,000 ticks per second), so frame math never drifts.
- **GPU compositing.** A wgpu compositor samples YUV directly with footprint supersampling and blends in linear light, with a matching CPU path. Playback runs in real time at 1080p, using the audio clock as master.
- **Colour.** Lumetri-style grading: basic correction, creative looks, RGB and hue curves, colour wheels, HSL secondary and vignette, plus waveform and vectorscope.
- **Keyframes.** Linear, Bezier, auto/continuous Bezier, hold and ease, with value and velocity graphs.
- **Audio.** EBU R128 / BS.1770 loudness meters (momentary, short-term, integrated, true peak), and clip effects (EQ, filters, dynamics, limiter, delay, reverb, DeNoise, DeHum, pitch shift) on our own DSP library.
- **Export.** H.264 MP4 with AAC, ProRes and MJPEG MOV, PNG sequences, GIF and WAV, run as background jobs.
- **Agent-drivable.** Every action is a command. The UI, a CLI, a JSON control channel and an MCP server all drive the same engine, so Claude or any agent can edit, grade and export.
## Status
Early but moving fast: about a quarter of the way to Premiere Pro parity. See **[ROADMAP.md](ROADMAP.md)** for milestone status and estimates.
Early but moving fast: roughly 30% of the way to Premiere Pro parity. See **[ROADMAP.md](ROADMAP.md)** for milestone status and estimates.
## Quick start
@@ -39,7 +51,7 @@ The control protocol is documented in [docs/control-protocol.md](docs/control-pr
A layered Cargo workspace: codecs and containers at the bottom, then frames and media, project model and edit algebra, rendering and export, the engine (command registry, session, undo), and finally the swappable UI (`ui-egui`). Nothing below the UI layer depends on a UI toolkit or OS APIs, and everything up to the engine compiles to `wasm32`. `cargo xtask ci` checks formatting, lints, tests, the layering rules and the wasm build.
## The Craft family
## Crafting Apps
Open-source, clean-room, pure-Rust creative tools. Each runs natively on macOS, Windows and Linux, and on the web.
+11 -4
View File
@@ -40,10 +40,9 @@ pub fn show(app: &mut FilmcraftApp, ui: &mut egui::Ui, rect: Rect) {
}
// settings
let seq_name = app.session.project.item(seq_id).map(|i| i.name.clone()).unwrap_or_default();
let fmt = filmcraft_engine::export::Format::from_name(&app.ui.export_format).unwrap_or(filmcraft_engine::export::Format::Mjpeg);
let fmt = filmcraft_engine::export::Format::from_name(&app.ui.export_format).unwrap_or(filmcraft_engine::export::Format::H264);
if app.ui.export_path.is_empty() || !app.ui.export_path.ends_with(fmt.extension()) {
let dir = std::env::var("HOME").map(|h| format!("{h}/Movies")).unwrap_or_else(|_| ".".into());
app.ui.export_path = format!("{dir}/{}.{}", seq_name.replace(' ', "_"), fmt.extension());
app.ui.export_path = format!("~/Movies/{}.{}", seq_name.replace(' ', "_"), fmt.extension());
}
let mut sui = ui.new_child(egui::UiBuilder::new().max_rect(right.shrink(16.0)).id_salt("export-settings"));
sui.label(egui::RichText::new("Settings").strong().size(14.0));
@@ -98,7 +97,7 @@ pub fn show(app: &mut FilmcraftApp, ui: &mut egui::Ui, rect: Rect) {
ui.painter().text(b.center(), Align2::CENTER_CENTER, "Export", Tokens::semibold(13.0), Color32::WHITE);
app.auto.add("export.button", b, "Export");
if resp.clicked() {
let r = app.session.execute("file.exportMedia", serde_json::json!({"path": app.ui.export_path, "format": app.ui.export_format}));
let r = app.session.execute("file.exportMedia", serde_json::json!({"path": expand_home(&app.ui.export_path), "format": app.ui.export_format}));
if let Err(e) = r {
app.ui.status = e.to_string();
}
@@ -107,3 +106,11 @@ pub fn show(app: &mut FilmcraftApp, ui: &mut egui::Ui, rect: Rect) {
crate::dock::placeholder(ui, mid, &t, "Open a sequence to export");
}
}
/// `~/…` → the user's home directory (the path field shows the short form).
fn expand_home(p: &str) -> String {
match (p.strip_prefix("~/"), std::env::var("HOME")) {
(Some(rest), Ok(h)) => format!("{h}/{rest}"),
_ => p.to_string(),
}
}
+1 -1
View File
@@ -287,7 +287,7 @@ impl Default for UiState {
dark: true,
show_scopes: false,
status: String::new(),
export_format: "mjpeg".into(),
export_format: "h264".into(),
export_path: String::new(),
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

@@ -0,0 +1,14 @@
asset: filmcraft-color.png
title: README gallery: Color workspace grading Charade
author: FilmCraft contributors (screenshot); film/footage/music credits below
source: original work (screenshot of FilmCraft captured with its ui.screenshot control command)
license: MIT OR Apache-2.0 (screenshot); embedded film frames are public domain, music CC0-1.0
license-file:
added: 2026-09-30 by Claude (agent) for Brandon Thomas
notes: Color workspace; Lumetri Color grade (basic correction, RGB curve) on Charade (1963); Lumetri Scopes. Downscaled to 2400 px. All UI icons are drawn in code; fonts are Inter and JetBrains Mono (OFL-1.1). Contains no Adobe artwork.
Media visible in the screenshot (none of it is committed to the repository):
- Night of the Living Dead (1968), dir. George A. Romero, Image Ten. US public domain (released without a copyright notice). Source: https://archive.org/details/night-of-the-living-dead-1968-english (Public Domain Mark).
- Carnival of Souls (1962), dir. Herk Harvey, Harcourt Productions. US public domain. Source: https://archive.org/details/CarnivalOfSoulsVideoQualityUpgrade (Public Domain Mark).
- Charade (1963), dir. Stanley Donen, Universal. US public domain (defective copyright notice). Source: https://archive.org/details/charade-1963-cary-grant-audrey-hepburn-comedy-mystery-romance-thriller-full-movie (Public Domain Mark).
- Earth Views from the ISS (NASA, NHQ_2020_1221, no-music edition). US Government work, public domain; NASA does not endorse this project. Source: https://images.nasa.gov/details/NHQ_2020_1221_Earth%20Views
- Chopin, Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen. CC0-1.0. Source: https://archive.org/details/musopen-chopin (shown only as waveforms).
Binary file not shown.

After

Width:  |  Height:  |  Size: 740 KiB

@@ -0,0 +1,14 @@
asset: filmcraft-export.png
title: README gallery: Export mode
author: FilmCraft contributors (screenshot); film/footage/music credits below
source: original work (screenshot of FilmCraft captured with its ui.screenshot control command)
license: MIT OR Apache-2.0 (screenshot); embedded film frames are public domain, music CC0-1.0
license-file:
added: 2026-09-30 by Claude (agent) for Brandon Thomas
notes: Export mode with H.264 MP4 settings; preview frame from Night of the Living Dead (1968). Downscaled to 2400 px. All UI icons are drawn in code; fonts are Inter and JetBrains Mono (OFL-1.1). Contains no Adobe artwork.
Media visible in the screenshot (none of it is committed to the repository):
- Night of the Living Dead (1968), dir. George A. Romero, Image Ten. US public domain (released without a copyright notice). Source: https://archive.org/details/night-of-the-living-dead-1968-english (Public Domain Mark).
- Carnival of Souls (1962), dir. Herk Harvey, Harcourt Productions. US public domain. Source: https://archive.org/details/CarnivalOfSoulsVideoQualityUpgrade (Public Domain Mark).
- Charade (1963), dir. Stanley Donen, Universal. US public domain (defective copyright notice). Source: https://archive.org/details/charade-1963-cary-grant-audrey-hepburn-comedy-mystery-romance-thriller-full-movie (Public Domain Mark).
- Earth Views from the ISS (NASA, NHQ_2020_1221, no-music edition). US Government work, public domain; NASA does not endorse this project. Source: https://images.nasa.gov/details/NHQ_2020_1221_Earth%20Views
- Chopin, Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen. CC0-1.0. Source: https://archive.org/details/musopen-chopin (shown only as waveforms).
Binary file not shown.

Before

Width:  |  Height:  |  Size: 815 KiB

After

Width:  |  Height:  |  Size: 1005 KiB

+11 -5
View File
@@ -1,8 +1,14 @@
asset: filmcraft-hero.png
title: FilmCraft README hero screenshot
author: FilmCraft contributors
source: original work
license: MIT OR Apache-2.0
title: README hero: Editing workspace, Night of the Living Dead trailer
author: FilmCraft contributors (screenshot); film/footage/music credits below
source: original work (screenshot of FilmCraft captured with its ui.screenshot control command)
license: MIT OR Apache-2.0 (screenshot); embedded film frames are public domain, music CC0-1.0
license-file:
added: 2026-09-30 by Claude (agent) for Brandon Thomas
notes: Screenshot of the FilmCraft app itself (Editing workspace, demo project) captured with the app's own ui.screenshot control command; status strip cropped, downscaled to 2400 px. All footage shown is procedurally generated by crates/media (demo scenes); all icons are drawn in code; fonts are Inter and JetBrains Mono (OFL-1.1). Contains no Adobe artwork.
notes: Editing workspace; Program monitor on Night of the Living Dead (1968); timeline with NotLD shots, a Carnival of Souls insert on V2 and Chopin on A2. Downscaled to 2400 px. All UI icons are drawn in code; fonts are Inter and JetBrains Mono (OFL-1.1). Contains no Adobe artwork.
Media visible in the screenshot (none of it is committed to the repository):
- Night of the Living Dead (1968), dir. George A. Romero, Image Ten. US public domain (released without a copyright notice). Source: https://archive.org/details/night-of-the-living-dead-1968-english (Public Domain Mark).
- Carnival of Souls (1962), dir. Herk Harvey, Harcourt Productions. US public domain. Source: https://archive.org/details/CarnivalOfSoulsVideoQualityUpgrade (Public Domain Mark).
- Charade (1963), dir. Stanley Donen, Universal. US public domain (defective copyright notice). Source: https://archive.org/details/charade-1963-cary-grant-audrey-hepburn-comedy-mystery-romance-thriller-full-movie (Public Domain Mark).
- Earth Views from the ISS (NASA, NHQ_2020_1221, no-music edition). US Government work, public domain; NASA does not endorse this project. Source: https://images.nasa.gov/details/NHQ_2020_1221_Earth%20Views
- Chopin, Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen. CC0-1.0. Source: https://archive.org/details/musopen-chopin (shown only as waveforms).
Binary file not shown.

After

Width:  |  Height:  |  Size: 1007 KiB

@@ -0,0 +1,14 @@
asset: filmcraft-keyframes.png
title: README gallery: keyframe value/velocity graphs
author: FilmCraft contributors (screenshot); film/footage/music credits below
source: original work (screenshot of FilmCraft captured with its ui.screenshot control command)
license: MIT OR Apache-2.0 (screenshot); embedded film frames are public domain, music CC0-1.0
license-file:
added: 2026-09-30 by Claude (agent) for Brandon Thomas
notes: Editing workspace; Effect Controls with the eased Motion > Scale push-in on the Night of the Living Dead title shot, value and velocity graphs. Downscaled to 2400 px. All UI icons are drawn in code; fonts are Inter and JetBrains Mono (OFL-1.1). Contains no Adobe artwork.
Media visible in the screenshot (none of it is committed to the repository):
- Night of the Living Dead (1968), dir. George A. Romero, Image Ten. US public domain (released without a copyright notice). Source: https://archive.org/details/night-of-the-living-dead-1968-english (Public Domain Mark).
- Carnival of Souls (1962), dir. Herk Harvey, Harcourt Productions. US public domain. Source: https://archive.org/details/CarnivalOfSoulsVideoQualityUpgrade (Public Domain Mark).
- Charade (1963), dir. Stanley Donen, Universal. US public domain (defective copyright notice). Source: https://archive.org/details/charade-1963-cary-grant-audrey-hepburn-comedy-mystery-romance-thriller-full-movie (Public Domain Mark).
- Earth Views from the ISS (NASA, NHQ_2020_1221, no-music edition). US Government work, public domain; NASA does not endorse this project. Source: https://images.nasa.gov/details/NHQ_2020_1221_Earth%20Views
- Chopin, Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen. CC0-1.0. Source: https://archive.org/details/musopen-chopin (shown only as waveforms).