Commit Graph

301 Commits

Author SHA1 Message Date
Brandon Thomas b48c558e9e Merge branch 'main' into worktree-agent-a861ca53f77717930 2026-10-03 11:02:40 -04:00
Brandon Thomas e7e9ebe55e Release 0.1.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:55:34 -04:00
Brandon Thomas 81873deedb Merge branch 'main' into worktree-agent-a861ca53f77717930
# Conflicts:
#	Cargo.toml
#	docs/architecture.md
#	xtask/src/main.rs
2026-10-03 08:55:10 -04:00
Brandon Thomas fab3a59942 ROADMAP: ~86% after MPEG-2, TS/PS and AC-3; 1562 tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:50:56 -04:00
Brandon Thomas bd5f618c01 M11.4: AAF consolidated audio as OP-Atom MXF (audioFormat mxf) using the MXF writer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 07:14:32 -04:00
Brandon Thomas 8e7eebce41 M6.6: fix the architecture crate table after merging the MXF writer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 07:12:07 -04:00
Brandon Thomas 9ec0c7213b Merge branch 'worktree-agent-a1a2bf10c26331f84' into worktree-agent-a861ca53f77717930
# Conflicts:
#	docs/architecture.md
2026-10-03 07:11:48 -04:00
Brandon Thomas 41942e17d8 Merge branch 'main' into worktree-agent-a3c3d94e29f8131bb 2026-10-03 07:11:09 -04:00
Brandon Thomas 7e16968b3a M9.15: MPEG-2 decoded frames carry the draft flag introduced on main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 05:50:54 -04:00
Brandon Thomas 167f971e05 Merge branch 'main' into worktree-agent-a861ca53f77717930
# Conflicts:
#	crates/ui-egui/src/panels/dialogs.rs
2026-10-03 05:04:28 -04:00
Brandon Thomas 3ce2726a24 M11.4: Cargo.lock for the ui-egui interchange dev-dependency
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 05:04:00 -04:00
Brandon Thomas a96f046b34 ROADMAP: ~85% after Project panel and Media Browser parity; 1513 tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:59:33 -04:00
Brandon Thomas 6cddaf08aa M11.4: document AAF / OMF interchange and the cfb crate
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:55:23 -04:00
Brandon Thomas ba3695e102 M11.4: AAF / OMF export settings dialogs (File ▸ Export), AAF/OMF in File ▸ Import
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:54:27 -04:00
Brandon Thomas 09947712d0 M6.6: MXF OP1a / OP-Atom writer and MXF export formats
filmcraft-mxf gains a streaming writer (ST 377-1 partitions, primer, header
metadata, VBR index segments with temporal offsets, RIP; ST 378 OP1a
frame wrapping, ST 390 OP-Atom clip wrapping) for VC-3, ProRes, AVC byte
stream and PCM with start timecode and caller-supplied package UMIDs, plus
write_opatom_pcm. filmcraft-export adds mxf-op1a / mxf-opatom formats
(DNxHR, ProRes or H.264 + PCM; OP-Atom writes one mono file per channel),
presets, the engine mxfVideoCodec parameter and CLI .mxf inference.
Tests read our files back and check them against ffprobe / ffmpeg.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:45:27 -04:00
Brandon Thomas 72425d476f M11.4: file.exportAaf / file.exportOmf / file.importAaf engine commands
Premiere's AAF and OMF export options: embedded or separate WAV/AIFF audio,
sample rate and bit depth, trim with handles, rendered clip effects, breakout
to mono, AAF video mixdown and linked media; AAF/OMF import writes embedded
audio next to the document and links it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:43:37 -04:00
Brandon Thomas 0658967a5b M11.4: AAF (Edit Protocol) and OMF 2.0 import/export in filmcraft-interchange
Shared mob-style composition model; AAF objects in structured storage over
filmcraft-cfb; OMF objects in a Bento container; embedded / consolidated audio
supplied by the caller (essence::audio_needs, MediaOptions).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:23:20 -04:00
Brandon Thomas 72e0dda167 Merge main into M9.15 2026-10-03 04:16:41 -04:00
Brandon Thomas 37008cab5e M9.15: import .vob/.mod/.tod/.m2t/.m2v/.m1v/.mpv video and standalone .mp2 audio
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:16:41 -04:00
Brandon Thomas 263a39132f M9.15: READMEs for mpeg2v / mpegts / ac3 (specs, accuracy, benchmark); architecture and testing docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:14:23 -04:00
Brandon Thomas 78c263a238 M9.15: AC-3 decoder from ATSC A/52 (all modes, coupling, rematrixing, block switching), wired into TS/PS/MP4/MKV
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:11:27 -04:00
Brandon Thomas 2078cc0e22 M9.15: MPEG-2 in QuickTime (XDCAM/IMX/HDV), MP4 (mp4v) and Matroska (V_MPEG2); MP2 in Matroska; fixture generators
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:59:54 -04:00
Brandon Thomas 89c8565106 M9.15: filmcraft-cli probe reports MPEG TS/PS programs, streams and access units
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:57:23 -04:00
Brandon Thomas a814ff632a M12.7: Media Browser thumbnails use exact (non-draft) frames after merging M4.9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:53:13 -04:00
Brandon Thomas d5e3d7e2ef Merge branch 'main' into worktree-agent-a8349582751c0ec31 2026-10-03 03:51:43 -04:00
Brandon Thomas 0eb74d7d85 M9.15: MPEG-2 video in MXF (D-10/IMX, XDCAM HD/HD422) decodes; open-GOP leading pictures seek from the previous GOP
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:51:20 -04:00
Brandon Thomas 02a7039ac5 M11.4: filmcraft-cfb, a Compound File Binary ([MS-CFB]) reader and writer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:51:18 -04:00
Brandon Thomas 1fc10b6949 M9.15: MPEG TS/PS/ES media source (MPEG-2, H.264, HEVC; MP2, AAC ADTS/LATM, LPCM) with ffmpeg oracle tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:49:33 -04:00
Brandon Thomas 30d6e3e950 Merge branch 'm4.9-h264'
# Conflicts:
#	ROADMAP.md
2026-10-03 03:42:29 -04:00
Brandon Thomas 104dff1e82 M9.15: MPEG-2 Systems demuxer crate (TS 188/192/204, PS/VOB, PSI, PES, access-unit index)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:19:03 -04:00
Brandon Thomas 16acff035b M9.15: mpeg2v 1080i decode benchmark test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:08:19 -04:00
Brandon Thomas a218c22f8f M9.15: MPEG-2 synthetic-stream oracle (field pictures, 16x8, dual prime, concealment), reference-decoder vector wrap and skip semantics
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:06:50 -04:00
Brandon Thomas 2cbf91dded M9.15: MPEG-1/2 video decoder crate (frame/field pictures, 4:2:2, IEEE 1180 IDCT) with ffmpeg oracle tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:43:29 -04:00
Brandon Thomas ee763cad6a M12.7: merge main (graphics templates M10.7); source graphics stay listed in the Project panel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:16:00 -04:00
Brandon Thomas 31c6d05b9f ROADMAP: ~83% after graphics templates, rolls/crawls and caption formats; 1479 tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:14:47 -04:00
Brandon Thomas cb5b013812 M4.9: merge main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:14:33 -04:00
Brandon Thomas c1c846aaad M12.7: Project panel and Media Browser parity
List / Icon / Freeform views, Metadata Display, view presets, font size,
Preview Area, bin tabs and windows, hover-scrub In/Out; Media Browser tree,
Favorites, history, file types, thumbnails, Edit Columns, import and drag.
Engine: project_panel and media_browser modules, Services::list_entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:14:31 -04:00
Brandon Thomas ac4d458712 Merge main into M10.7 2026-10-03 01:02:27 -04:00
Brandon Thomas cb1804b4c3 M10.7: Essential Graphics Browse/Edit UI, template/font dialogs, golden scenes
- Essential Graphics panel with Browse (Graphics Templates library: engine-rendered thumbnails,
  search, category filter, apply, drag to timeline, install, remove) and Edit tabs.
- Edit tab: Template Properties (one editor per control), Responsive Design - Time (intro/outro,
  roll/crawl options), Responsive Design - Position (Pin To + edges); Type-tool selections style
  just the selected characters (graphics.setCharStyle).
- Export As Motion Graphics Template and Replace Fonts in Projects dialogs; Install via file picker.
- Source graphics listed in the Project panel; caption pickers accept MCC/STL/TTML/DFXP.
- ui.set gfxTemplates / gfxEdit; headless UI tests; golden scenes graphic_template and
  graphic_rich_text (sidecars + ATTRIBUTION rows); docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 01:02:24 -04:00
Brandon Thomas 0bc1d4e8b8 M4.9: merge main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:04:16 -04:00
Brandon Thomas 7e991ea95b M4.9: performance docs, h264 README and roadmap for 4K H.264 playback
Interleaved before/after bench (decode, playback incl. 1/4 and draft cases,
4K cold seeks) and decoder cycle counts in docs/performance.md; threading,
draft mode and 4K numbers in crates/h264/README.md; bench cases in
docs/testing.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:03:58 -04:00
Brandon Thomas 849f269525 M4.9: H.264 deblocking skips edges whose alpha or beta is 0
No sample can pass the filterSamplesFlag test (8.7.2.2) at those indices.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:52:31 -04:00
Brandon Thomas 999af3a1a5 ROADMAP: ~81% after keyboard parity and 5.1/voice-over/Remix; 1432 tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:52:15 -04:00
Brandon Thomas aa3ad1d950 M4.9: H.264 inverse transforms reconstruct across columns at once
The column pass and the add/clip of idct4/idct8 work on whole rows so they
vectorise (same integer steps in the spec's row-then-column order; checked
against the per-column formulation on random blocks). Docs: draft decoding in
architecture.md and perf.stats fields in control-protocol.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:46:52 -04:00
Brandon Thomas 1f4546d549 M4.9: draft decoding for reduced-resolution playback (opt-in preference)
Settings > Playback > Draft decoding (off by default): the Program monitor
asks for draft frames only while playing at 1/2 resolution or lower
(FrameKey::draft, filmcraft_media::cancel::with_draft). The GOP cache runs
the decoder in draft mode for those requests and serves draft frames to draft
requests only, so paused frames, renders and exports always get exact
pictures (codecs test: exports after draft playback match ffmpeg). Draft
plans hand the GPU box-decimated YUV planes at the drawn size. perf.stats
reports draft frames, H.264 threads and the preference; the bench gains
2160p quarter and draft playback cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:33:03 -04:00
Brandon Thomas b3a09fab64 M4.9: H.264 draft mode (no deblocking of non-reference pictures, off by default)
Decoder::set_draft: non-reference pictures skip the deblocking filter and are
flagged Picture::draft; all other pictures stay bit-exact (conformance test,
single- and frame-threaded). Conformance fixtures now also decode with 3
threads. Decoder::threads / default_threads for perf.stats.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:06:54 -04:00
Brandon Thomas 16e820041a Merge branch 'main' into worktree-agent-ad1e17b124f8a0d69
# Conflicts:
#	crates/engine/src/commands.rs
2026-10-02 23:02:29 -04:00
Brandon Thomas a95fd5c829 M4.9: H.264 vectorised deblocking edge filters and branch-free CABAC bins
Deblocking filters all lines of an edge at once with per-lane masks (bit-exact
with the per-line filter, checked on random edges); CABAC decode_decision /
bypass select instead of branching. 4K single-thread CPU -19 %, output
identical to ffmpeg.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:54:50 -04:00
Brandon Thomas ee9fd53079 M10.7: graphics templates (.fcgt), rolls/crawls, responsive design, per-character styles, MCC/STL/TTML/DFXP captions
- Text engine: per-character style runs (layout_rich), per-run underline/colour index.
- Project: graphic_design (style runs, pins, roll/crawl maths, responsive time, source graphics),
  gtemplate (.fcgt format, validation, base64 resources, 8 original built-in templates; .mogrt refused).
- Render: item-level graphic evaluation (responsive time, pins, rolls), per-run fills.
- Engine: graphics.template.* (list/apply/export/install/remove/set/controls/thumbnail),
  graphics.setRoll/setResponsiveTime/pin/setCharStyle, Upgrade Caption to Graphic,
  Upgrade to Source Graphic (shared edits), Replace Fonts in Projects, fonts used.
- Captions: MacCaption MCC (CDP, CEA-608 + CEA-708), EBU STL (Tech 3264), TTML/IMSC1, DFXP.
- Schema v12 (no-op migration + fixture), docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:52:15 -04:00
Brandon Thomas 3d14099425 M3.12: Premiere default keyboard parity
Adds ~115 keyboard-only commands from Premiere's default keyboard (engine:
filmcraft_engine::keyboard, UI: panels::keyboard): edit-point navigation on
targeted/any track, go to selected clip start/end, reveal nested sequence,
select clip at playhead/next/previous, extend previous/next edit to playhead,
nudge/slip/slide clip selection, target and source-patch toggles, clip volume
keys, audio scrubbing toggle, text size/leading/alignment, object nudge,
Export Frame, poster frames, frame maximize/full screen/panel cycling, monitor
zoom, track heights, Project and Text panel keyboard navigation, play to Out.
Existing commands that lacked their Premiere key are added to the table;
panel-scoped keys live in PREMIERE_PANEL. docs/keyboard.md lists the 39
skipped shortcuts with reasons. Tests: table integrity (no dangling ids, no
duplicate keys per scope, no conflicts), engine behaviour with undo, headless
key presses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:29:23 -04:00