Commit Graph

189 Commits

Author SHA1 Message Date
Brandon Thomas 6f13cbe6ea Merge branch 'main' into worktree-agent-a2fb03c37eff0a53c 2026-09-30 23:14:19 -04:00
Brandon Thomas bfc4ad47b5 Merge branch 'main' into worktree-agent-adeb64ed6481c199b 2026-09-30 23:14:17 -04:00
Brandon Thomas 0594cdf8b6 M11: interchange in the engine — file.import detects and merges EDL / FCP7 XML / FCPXML / OTIO (links media on disk, rebases EDL source timecode); File ▸ Export ▸ EDL, Final Cut Pro XML, FCPXML, OpenTimelineIO
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:45:22 -04:00
Brandon Thomas 13beb09833 Merge branch 'worktree-agent-ae43da33282300438' 2026-09-30 22:41:15 -04:00
Brandon Thomas 916de99fda M9.8: filmcraft-vp9 clean-room VP9 decoder (profiles 0-3, tiles, superframes, scaling) with ffmpeg oracle tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:22:12 -04:00
Brandon Thomas ed47db6861 M9.13: Opus decoder (WIP: range decoder, packet parsing, CELT core, SILK tables)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:21:51 -04:00
Brandon Thomas dc9e3933a8 M7.3: clip audio effects run on filmcraft-audio-dsp (Amplify, Dynamics, Hard Limiter, Delay, Parametric EQ, High/Low/Bandpass, DeNoise, DeHummer, Studio Reverb, Invert, Pitch Shifter) with keyframed params, latency compensation and a continuation cache with pre-roll for random access
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 11:40:58 -04:00
Brandon Thomas c14a7d44a4 M11.3: EDL — filmcraft-interchange crate with CMX 3600 import/export
New L2 crate filmcraft-interchange (roxmltree for XML reading). API: import/import_with,
export, export_edl_per_track, detect, merge_into, rebase_source_timecode, Report.
EDL: drop-frame FCM, dissolves/wipes/keys, BL fades, V/A/AA/B/AA/V/A3/A4 channels,
M2 speed/reverse/freeze, reel modes (8/32), clip name/source file/effect/LOC comments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 11:38:19 -04:00
Brandon Thomas de7e84307d M7.1: BS.1770 loudness in Audio Meters (momentary/short-term/integrated LUFS, true peak) fed with contiguous programme audio; matches ffmpeg ebur128
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 11:33:53 -04:00
Brandon Thomas 498ac6da23 Merge branch 'worktree-agent-a4193d1e7345108d5' 2026-09-30 11:12:22 -04:00
Brandon Thomas d3ed28ed61 Cargo.lock: hevc in codecs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 11:12:22 -04:00
Brandon Thomas 2e6adb1a20 Merge branch 'worktree-agent-a14267622437e4bbe' 2026-09-30 11:08:28 -04:00
Brandon Thomas 51acfddf66 Merge M9.1/M9.2: filmcraft-hevc decoder (Main/Main 10, bit-exact on 41 fixtures) 2026-09-30 11:08:07 -04:00
Brandon Thomas 627c230871 M7.1: BS.1770 loudness meter
New crate filmcraft-audio-dsp (L1, dependency-free): K-weighting for any
sample rate via bilinear transform, momentary/short-term/integrated
(gated) loudness, LRA (Tech 3342), sample and true peak (polyphase 4x),
normalisation helper, RBJ biquads, radix-2 FFT, parameter smoothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 10:58:11 -04:00
Brandon Thomas 77a096884b M9.9: Matroska/WebM demuxer (WIP: EBML reader, metadata, cluster scan, packets, seek)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 10:57:02 -04:00
Brandon Thomas d0304c41b8 M9.1: filmcraft-hevc — clean-room H.265 decoder (Main / Main 10)
Parameter sets (VPS/SPS/PPS incl. VUI, scaling lists, short/long-term RPS,
tiles, WPP entry points), slice segment headers, POC / RPS / DPB management
with bumping, CABAC for all Main/Main10 syntax elements, coding / transform
quadtrees, AMP, PCM, transform skip, lossless bypass, intra prediction (35
modes, substitution, filtering, strong smoothing), merge / AMVP / TMVP,
8-tap / 4-tap interpolation, weighted prediction, DCT 4..32 / DST, scaling,
deblocking and SAO run row-pipelined, frame-threaded decoding.

Syntax tables extracted from the ITU-T H.265 text by tools/extract_tables.py.
41 libx265 / VideoToolbox fixtures bit-exact vs ffmpeg (single and
multi-threaded).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 10:11:22 -04:00
Brandon Thomas 3f3265bb35 M6: H.264 MP4 export (own encoder, High profile, VBR, B-frames with edit list) + AAC
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 09:38:45 -04:00
Brandon Thomas bd816ead68 Merge M6.1: filmcraft-h264enc encoder 2026-09-30 09:35:35 -04:00
Brandon Thomas 7103b58df9 M6.1: filmcraft-h264enc — clean-room H.264 encoder (High/Main/Baseline, CABAC/CAVLC, intra/inter mode decision, deblocking, RC)
- SPS/PPS/AUD/SEI with VUI (SAR, colour description, timing, reorder), avcC, Annex-B or length-prefixed packets
- Intra 16x16/4x4/8x8 + chroma, hexagon ME with half/quarter-sample refinement, 16x16/16x8/8x16/8x8, P_Skip
- B-frames (1-3, spatial direct/B_Skip, L0/L1/Bi), variance AQ, scene-cut IDR
- 4x4/8x8 transforms, deadzone quant, decimation; normative deblocking in the loop
- CABAC (init tables checked against the spec text) and CAVLC
- Rate control: QP, CRF-like, 1-pass ABR + VBV, closed-loop 2-pass VBR
- Slice-parallel encoding with rayon, concurrent B-frames, parallel lookahead/hpel
- ffmpeg-oracle tests: zero decode errors, exact frame counts, decoder output bit-identical to reconstruction

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 09:32:20 -04:00
Brandon Thomas efc617cb97 M6.2: own AAC-LC decoder replaces the symphonia bootstrap for AAC; AAC encoder for MP4 export
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:38:47 -04:00
Brandon Thomas b80de3ea96 Merge M6.2: filmcraft-aac encoder + decoder 2026-09-30 07:37:46 -04:00
Brandon Thomas 627931fc72 UI fidelity pass from the Premiere 26 black-box reference: measured palette and label colours, square panels with 4 pt gutters, tab strips with underline + menu glyph, header layout, native macOS menu bar (muda), status/hint bar, Properties panel, timeline restyle (clip bodies, name band, fx badge, head thumbnails, rectified waveforms, hatched transitions, track header layout with patch/target buttons, markers row, 30 pt toolbar, zoom bar knobs), monitor controls, meters, tools
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:37:38 -04:00
Brandon Thomas c2872fbd8d M6.2: filmcraft-aac — clean-room AAC-LC encoder and decoder
Encoder: transient-driven window switching (long/start/short/stop, grouping),
sine/KBD MDCT, MDCT-domain psychoacoustic model (Bark spreading, SFM tonality,
ATH, PE), TNS, per-band M/S, lambda rate-distortion loop with measured-error
scalefactor search and DP sectioning over all codebooks, bit reservoir with
fill elements (exact CBR), VBR quality scale, 1-8 channels (configs 1-7 + PCE
for 7ch), ASC + optional ADTS, 1024-sample priming reported.

Decoder: full AAC-LC syntax incl. PNS (correlated M/S noise), intensity stereo,
TNS, M/S, pulse data, both window shapes, PCE/DSE/FIL, ADTS helpers; never
panics on malformed input.

Tests use ffmpeg only as an oracle: our streams decode cleanly in ffmpeg
(CBR within 0.1%), our decoder matches ffmpeg to ~1e-7 on ffmpeg-encoded
streams (8-96 kHz, mono..7.1, IS/MS/TNS), plus fuzzing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:30:13 -04:00
Brandon Thomas b7b7042b87 M5.8: wgpu compositor — frame plans (render crate), YUV/RGB layer sampling with footprint supersampling in WGSL, linear-light premultiplied compositing, upload cache; Program monitor composites on the GPU (FILMCRAFT_CPU_COMPOSITE=1 to disable)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:16:32 -04:00
Brandon Thomas f4d3efe32a M9.5: ProRes decode in the codec hub and ProRes 422 HQ export; decoder colour metadata takes precedence unless the container has an explicit colr
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:05:42 -04:00
Brandon Thomas 4faf2c295a Merge M9.5: filmcraft-prores decoder + encoder 2026-09-30 07:04:08 -04:00
Brandon Thomas eae1c8ad92 M9.5: filmcraft-prores decoder + encoder
Clean-room ProRes (SMPTE RDD 36) codec: 422 Proxy/LT/Standard/HQ and
4444/4444 XQ decode incl. alpha and interlaced fields, slice-parallel;
progressive encoder with frame-level quantiser rate control targeting
Apple nominal rates. Oracle tests vs ffmpeg (within 1 LSB on all 29
fixtures), round-trip, fuzz and ignored perf tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:02:58 -04:00
Brandon Thomas 0c1b413595 M1/M2: wire filmcraft-h264 into the codec hub (MP4/MOV H.264 with B-frames, GOP-aware seeking)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:01:36 -04:00
Brandon Thomas 11709186ea Merge M2: filmcraft-h264 pure-Rust H.264 decoder (bit-exact, frame-threaded) 2026-09-30 06:58:44 -04:00
Brandon Thomas 01b1ba1a0b M6.5/M6.6: export pipeline (parallel render → MJPEG/PCM MOV, PNG sequence, GIF, WAV) as background engine jobs; Export mode wired; control channel defers requests until elements render
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 06:58:34 -04:00
Brandon Thomas 3eac0a2ee7 M14: MCP server (headless + bridge to live app), filmcraft-cli (probe/commands/render/run/mcp), .mcp.json, control protocol docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 06:50:31 -04:00
Brandon Thomas 8194dac6a8 M1.4–M1.8: filmcraft-codecs hub — MP4/MOV sources with GOP-aware seeking and frame cache, MJPEG, PCM, AAC/MP3/FLAC/ALAC/Vorbis (symphonia bootstrap), standalone audio files; engine registers openers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 06:42:53 -04:00
Brandon Thomas 235c8a9bbd M0.10/M0.11: egui shell — docking workspaces, header/menus, Project, Source/Program monitors, Timeline with all edit tools, Tools, Effects, Effect Controls, Lumetri, meters, mixer, control channel, desktop app with cpal audio
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 06:29:18 -04:00
Brandon Thomas a2ac32916b M2.1: H.264 NAL/SPS/PPS/slice header parsing
New crate filmcraft-h264 (L0, depends only on filmcraft-bitstream):
- SPS incl. VUI/HRD, scaling lists with fall-back rules A/B, frame cropping,
  high-profile chroma_format_idc / bit depth fields, DPB size from level
- PPS incl. transform_8x8_mode, scaling lists, slice groups (parse only)
- slice header: all fields incl. ref_pic_list_modification, pred_weight_table,
  dec_ref_pic_marking
- POC types 0/1/2 (incl. MMCO5 handling and frame_num gap hooks)
- default scaling / QPc / deblocking tables from the public ITU-T spec
- ffmpeg/libx264 fixture generator for tests (skips when ffmpeg is absent)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 06:12:38 -04:00
Brandon Thomas ba7fd65730 Merge M1.2: filmcraft-isobmff 2026-09-30 06:05:50 -04:00
Brandon Thomas 37193b63b7 M0.9: engine session, history, media pool, ~110 commands, demo project
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 06:05:45 -04:00
Brandon Thomas 8d83799cc0 M0.3–M0.8: geom, color, frame, media generators, project model, edit algebra, CPU renderer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 05:58:41 -04:00
Brandon Thomas 527f2aa1e6 M1.2: filmcraft-isobmff MP4/MOV demux + mux
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 05:58:32 -04:00
Brandon Thomas 936b28e4c4 M0.1/M0.2: workspace skeleton, time and bitstream crates
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 05:33:20 -04:00