Commit Graph

38 Commits

Author SHA1 Message Date
Skyler Lehmkuhl 5bed2e8adb Bump version to 1.0.6-alpha 2026-06-25 18:37:55 -04:00
Skyler Lehmkuhl 911d896610 packaging: build ffmpeg with VAAPI and declare libva runtime deps
The Linux release ffmpeg is built statically from source, and ffmpeg only
autodetects --enable-vaapi when libva headers are present at configure time.
Neither build path installed them, so every release shipped a static ffmpeg
with no h264_vaapi encoder -- the zero-copy export silently fell back to
software 100% of the time.

- Containerfile + build.yml: install libva-dev + libdrm-dev so the from-source
  ffmpeg gets VAAPI.
- build.yml: assert the release binary links libva, so a missing dep can't
  silently regress to a software-only build again.
- deb/rpm: libva (libva2/libva-drm2/libdrm2, libva/libdrm) is a hard runtime
  dep -- the vaapi-enabled ffmpeg DT_NEEDEDs it, so the app won't launch
  without it. The VA driver is a soft recommends (absent it, export falls back
  to software): va-driver-all (deb), intel-media-driver/mesa-va-drivers (rpm).

build.rs needs no change: releases link ffmpeg statically (its bundling path
is skipped) and the AppImage is thin, taking libva from the host like libvulkan.
2026-06-25 18:28:43 -04:00
Skyler Lehmkuhl 3e4f29c297 Wire zero-copy VAAPI H.264 into video+audio export
When exporting H.264 with audio, try the gpu-video-encoder ZeroCopyEncoder:
render each frame to RGBA and hardware-encode it into a VAAPI surface
inline, on the encoder's own VAAPI-capable wgpu device — no GPU->CPU
readback, no swscale, no software-encoder thread. Falls back to the
existing software path verbatim when VAAPI/the device is unavailable
(non-Linux, non-H264, or init failure), so it's additive.

- VideoExportState gains zero_copy: Option<ZeroCopyVideo> (encoder + its own
  vello renderer + ExportGpuResources + a reused RGBA target, all on the
  encoder's device).
- start_video_with_audio_export builds it for H.264 and skips spawning the
  software encoder thread when present.
- render_next_video_frame routes to a zero-copy arm that reuses
  render_frame_to_gpu_rgba on the encoder's device, then encode_rgba; on the
  last frame finish() writes the temp .mp4 and sets video_progress=Complete
  so the existing mux runs. video_thread=None makes the mux join a no-op.

Separate export device (vs modifying the eframe device) keeps this contained
to export. Video-only export stays on the software path for now. Runtime
verification (an actual H.264 export) is pending — cannot run the editor in
the dev container.
2026-06-25 15:44:50 -04:00
Skyler Lehmkuhl 3c3a482e2e Bump version to 1.0.5-alpha 2026-06-21 16:14:44 -04:00
Skyler Lehmkuhl d7de5ce3f1 Bump version to 1.0.4-alpha 2026-06-02 14:37:07 -04:00
Skyler Lehmkuhl b8f847e167 Add drawing tablet input support 2026-03-11 10:58:30 -04:00
Skyler Lehmkuhl f72c2c5dbd Release 1.0.3-alpha 2026-03-10 21:43:26 -04:00
Skyler Lehmkuhl 89721d4c0e Release 1.0.2-alpha 2026-03-09 13:40:58 -04:00
Skyler Lehmkuhl 5d39627d03 Update version to 1.0.1 2026-03-01 03:17:41 -05:00
Skyler Lehmkuhl 543d99e5d5 fix rpm build 2026-02-25 01:14:33 -05:00
Skyler Lehmkuhl bc7f1170e1 fix version 2026-02-24 12:09:50 -05:00
Skyler Lehmkuhl 7ff5ddf6ee Update packaging 2026-02-24 12:05:59 -05:00
Skyler Lehmkuhl 84f1f8e7d7 Add orchestral sampled instruments 2026-02-21 07:28:19 -05:00
Skyler Lehmkuhl 116db01805 Build Linux packages 2026-02-19 15:50:23 -05:00
Skyler Lehmkuhl c66487b25e Add script node 2026-02-19 09:29:14 -05:00
Skyler Lehmkuhl 6c10112a16 Fix build on Windows 2026-02-16 10:05:39 -05:00
Skyler Lehmkuhl 7387299b52 node graph fixes 2026-02-15 09:11:39 -05:00
Skyler Lehmkuhl 8ac5f52f28 Render audio waveforms on gpu 2026-02-11 14:38:58 -05:00
Skyler Lehmkuhl 2dea1eab9e improve video import performance a bit 2025-12-17 14:12:16 -05:00
Skyler Lehmkuhl c58192a7da Use egui_node_graph2 for node graph 2025-12-16 10:14:34 -05:00
Skyler Lehmkuhl 798d8420af Node graph initial work 2025-12-16 07:59:16 -05:00
Skyler Lehmkuhl dda1319c42 Add debug overlay 2025-12-12 12:19:12 -05:00
Skyler Lehmkuhl c2f092b5eb Add notification when export completes 2025-12-12 11:26:22 -05:00
Skyler Lehmkuhl efca9da2c9 show previews for effects 2025-12-08 13:32:11 -05:00
Skyler Lehmkuhl 06246bba93 Video export 2025-12-07 13:17:21 -05:00
Skyler Lehmkuhl 2cd7682399 mp3 and aac export 2025-12-04 15:58:37 -05:00
Skyler Lehmkuhl 727d782190 initial audio export 2025-12-03 17:54:15 -05:00
Skyler Lehmkuhl c2f8969432 Render audio clip waveforms 2025-12-02 00:57:20 -05:00
Skyler Lehmkuhl ba9a4ee812 File save/load 2025-12-01 09:18:49 -05:00
Skyler Lehmkuhl c943f7bfe6 Add info panel 2025-11-30 10:01:10 -05:00
Skyler Lehmkuhl 4d1e052ee7 Add asset pane 2025-11-30 06:54:53 -05:00
Skyler Lehmkuhl 5fbb2c078b Use audio engine as source of truth for playback time 2025-11-28 11:36:33 -05:00
Skyler Lehmkuhl bbeb85b3a3 Clips in timeline 2025-11-28 05:53:11 -05:00
Skyler Lehmkuhl 67724c944c Select and move shapes 2025-11-18 00:22:28 -05:00
Skyler Lehmkuhl afda2d9d4f CSS improvements, light and dark mode 2025-11-17 07:42:40 -05:00
Skyler Lehmkuhl 08232454a7 Add stage pane with scrolling 2025-11-16 00:01:07 -05:00
Skyler Lehmkuhl 48da21e062 Toolbar 2025-11-13 18:12:21 -05:00
Skyler Lehmkuhl bf007e774e Add Rust desktop UI with Blender-style pane system
Implemented foundational pane system using eframe/egui:
- Workspace structure with lightningbeam-core and lightningbeam-editor
- Layout data structures matching existing JSON schema
- All 8 predefined layouts (Animation, Video Editing, Audio/DAW, etc.)
- Recursive pane rendering with visual dividers
- Layout switcher menu
- Color-coded pane types for visualization

Foundation complete for interactive pane operations (resize, split, join).
2025-11-12 06:13:00 -05:00