Repository navigation
fix(engine): passthrough keeps frame count and accepts films whose audio outlasts the picture - #6920
Conversation
…hort video's last frame
There was a problem hiding this comment.
Verdict: APPROVE · 0 blocker · 1 important · 0 nits · head 88f065c5
The named test fails at main for fix 1. Fix 2, the frame count, has no test. ↓ inline
Scope
Read the full diff, plus qualifyVideoLayer and planVideoLayerPassthrough (the only caller). The caller passes the composition duration, and only a video that starts at 0 and runs to the end qualifies, so removing -t can't play the source past its element. videoLayerInput, streamingEncoder and videoLayerPassthrough tests pass locally (99/99). I checked the filter graph directly with ffmpeg, using a transparent page stream over a 2 s film with 2.4 s audio and over a 5 s film: 72 page frames → 72 output frames, 61 → 61, and the short film's tail holds its last frame. No prior reviews. CI was still running at review time; nothing had failed.
Edit accuracy: accurate 271 (base branch 271), smooth 121 of thoseThe gate passes. Quarantined, measured but not gated (0) Unstable (1)
|
…n the video is shorter
There was a problem hiding this comment.
Verdict: APPROVE — 1 resolved, 0 open, 0 new · 88f065c5 → 15294c68. The frame-count fix is now covered by a real ffmpeg encode: with eof_action=endall removed it fails with 90 ≠ 74; videoLayerInput and streamingEncoder tests pass at this head (91/91).
…ugh frame count test
What
Fixes two ways the opt-in video layer passthrough (#6914, off by default) mishandled a real film whose audio track is a little longer than its picture, which most exported films are (refs #6881).
source_unsupported), so passthrough never ran on such films. Up to half a second of shortfall is now allowed, and the video's last frame is held for the rest, as extraction does.-tafter the video input is an output option and cut the file at the video's length. It is removed, and the encoder now ends when the page frames end (overlay=eof_action=endall), so the output length is decided by the page frames alone.fails without the fix:
expected undefined to be definedon main)expected 73 to be 74with the-t, padding and end rule taken out (the output was cut at floor(duration x fps) frames)Real-footage check
Devbox, one worker and four pinned cores in both arms, three runs per arm, each run started once load was under 8 (box load was 9 to 12 by the end of each run, so treat the times as indicative). Each film is the full-canvas source under a caption every five seconds. The sources are public films hosted for the OSS docs; none is from a private project.
I looked at the frames at 25, 50 and 75 percent of each film side by side; they match, and sampled pixel values in the caption boxes agree within a few levels.
The repo and catalog carry no real 1080p, 4K or long footage of their own, so these three hosted films stand in. There is no 4K film in this check.
Size
Under 100 changed lines plus one test file.