Single-pass final and finishing post-steps (#54) #109
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio!109
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-54-single-pass-final"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #54. Part of #24 (User Stories 120, 135, 141 and 142).
What changes
A filmmaker can render a final straight away and get a real ProRes master.
h3.finalin one pass at the profile's final short side (1120 by default), with the same references, prompt and LoRAs as a draft. It saves no latent. Its Rendition iskind = final,via = single_pass. It is a final job, so it runs after drafts and Hold finals holds it.01:00:00:00timecode and the job's FLAC as 24-bit PCM. The result isrenditions/<id>.mov.proxies/<id>.mp4. It usesh264_nvencwhen a startup check (a one-frame NVENC encode) works, otherwiselibopenh264.retry_post_steps). If stamping fails, no proxy is made, because a proxy of the unstamped master would have no sound.rendition:gpu_video_path,proxy_path,post_state(pending/running/failed) andpost_error.Tests
ffmpeg.rs, with real ffmpeg:01:00:00:00, ProRes HQ video andpcm_s24leaudiolibopenh264proxy is H.264 at 1536×768 with AACtests/takes.rs:h3.final, 1984×1120, noSaveLatent, the same slots, ProRes output, final class, held by Hold finals.mov.cargo test --workspace --all-features(635 passed),bun test src scripts(161 passed) andbun run checkall pass.Note on ffmpeg: the tests need an ffmpeg with
libopenh264, as the LGPL sidecar will have. The ffmpeg onPATHhere has nolibopenh264, so I ran the suite withAI_STUDIO_FFMPEGpointing at a BtbN LGPL 8.1 build (outside the repo). CI or anyone else running the tests needs the same.Decisions and known gaps
PostStateenum instead of strings, and an amber tone for "Proxy missing", which ADR-0006 reserves for stale/held/unlocked. Badge.svelte's comment also allows "needs-attention". Please say if you want either changed.Screenshots
The queue dialog with Single-pass final chosen.

A landed final: its post-steps ran in the real app (staged GPU output), and the player streams the H.264 proxy.

A final whose post-steps failed (broken audio): Proxy missing, the reason and Retry post-steps. Retry then made the proxy in the app. This screenshot is from before a copy tweak: the line now says "The render is kept…".
