#53 streaming playback engine PR1: streaming decode + continuous compositing (off-by-default)#165
Merged
Merged
Conversation
PR1 of the Rust streaming playback engine (ROADMAP Phase 4). Adds an off-by-default playback-engine feature with the headless core: one forward VideoStream per clip-id, drained non-blocking (try_recv) into the existing wgpu compositor — the same build_render_plan + Compositor pixel path as export — on a dedicated render thread that owns its own GPU device (never touches the preview RenderState). Clock/sink/emitter are traits so PR2 can swap in the cpal master clock + MJPEG transport without touching the loop. No commands or UI are wired yet; with the feature off the default build is unchanged. - playback/project.rs: timeline->render projections (mirrors export.rs) - playback/resolver.rs: StreamingResolver + pure drain_to_target (7 unit tests) - playback/engine.rs: RenderLoop + threaded PlaybackEngine + InstantClock - tests/playback_integration.rs: GPU+ffmpeg gated (decode->composite, advance, seek, 2-track concurrent) - ci.yml: lint+test the feature explicitly (integration tests skip on GPU-less CI) Refs #53; #63 (cpal) / #64 (MJPEG) / #65 (Lottie) land in PR2/PR3.
…e-left) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#53 streaming playback engine — PR1 (ROADMAP Phase 4). Headless core behind an off-by-default
playback-enginefeature: one forwardVideoStreamper clip-id drained non-blocking into the existing wgpu compositor (samebuild_render_plan+Compositorpixel path as export) on a dedicated render thread with its own GPU device. Clock/sink/emitter are traits so PR2 swaps in cpal master clock + MJPEG transport.Reviewed (independent pass): default
cargo checkdoes NOT compile cpal/axum/tokio (gating confirmed at compiler level); default build/UX unchanged; faithful AVPlayer master-clock port; 57 unit + 2 integration tests pass on a GPU+ffmpeg machine. No commands/UI wired by default.#63 (cpal) / #64 (MJPEG) / #65 (Lottie) land in PR2/PR3 (PR2 =
feat/53-cpal-mjpeg, stacks on this).🤖 Generated with Claude Code