Skip to content

Add video-to-frame image sequence export - #142

Draft
blackridder22 wants to merge 1 commit into
66HEX:masterfrom
blackridder22:codex/video-frame-sequences
Draft

Add video-to-frame image sequence export#142
blackridder22 wants to merge 1 commit into
66HEX:masterfrom
blackridder22:codex/video-frame-sequences

Conversation

@blackridder22

Copy link
Copy Markdown

AI-generated code disclosure

This contribution was generated primarily by AI ("AI slop"). It has been tested, but it may contain mistakes, missed edge cases, or code that does not match the maintainers' preferred architecture or style. Please review it critically before merging. I am happy to revise or close it based on maintainer feedback.

Summary

Adds an opt-in image-sequence mode for video sources. A user can select JPEG, WebP, PNG, BMP, or TIFF, choose Image sequence, and export every decoded video frame into a uniquely named folder.

What changed

  • adds persisted single / sequence image-output modes with legacy defaults;
  • exposes still-image containers for video sources while continuing to hide them for audio;
  • shows image settings, source-frame estimates, VFR guidance, and disk-size warnings;
  • uses FFmpeg passthrough timing and numbered frame_%06d output for sequences;
  • preserves the existing single-image -frames:v 1 -update 1 behavior;
  • creates <name>_frames, <name>_frames_2, and subsequent collision-safe folders;
  • reports the completed sequence folder through the existing completion event;
  • keeps partial folders after failure or cancellation;
  • adds a deterministic settings-image-sequence visual fixture and focused tests.

User impact

A video can now be converted into all of its decoded frames without manually invoking FFmpeg. For example, a 30-second, 30-fps video displays an estimate of approximately 900 frames. Variable-frame-rate sources use their actual decoded timing, so the final count may differ from the estimate.

Validation performed

  • cargo fmt --all -- --check
  • cargo test --locked -p frame-core — 117 passed
  • cargo test --locked -p frame-app --features gpui_platform/runtime_shaders --lib — 744 passed
  • cargo clippy --all-targets --features gpui_platform/runtime_shaders -- -D warnings
  • targeted ignored FFmpeg image-sequence container matrix with one test thread
  • targeted ignored runner test verifying exact numbered frames and completed folder path
  • cargo xtask workflows --check
  • manual dark/light review of the settings-image-sequence fixture
  • packaged and launched an ad-hoc-signed Apple Silicon .app with bundled FFmpeg 8.1.2

Local toolchain limitation

cargo xtask ci completes the core checks but the standard GPUI app build stops on this machine because only Apple Command Line Tools are installed and xcrun cannot find the metal compiler. The app test suite and clippy pass with GPUI runtime shaders. This should still be rerun by CI or a maintainer machine with full Xcode installed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant