feat(pipeline): all-intra ffmpeg builders for seekable morph re-bake
Per plan Task 7. Extracts transition_cmd/reverse_cmd argv builders and adds the ALL_INTRA flag set (-g 1 -keyint_min 1 -sc_threshold 0) so every baked frame is a keyframe — smooth arbitrary-frame seeking for the scrub interaction. Unit-tested. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -54,3 +54,17 @@ def test_generate_media_bakes_every_member_pair(monkeypatch, tmp_path):
|
||||
for h in b.POOLS[H] for l in b.POOLS[L]}
|
||||
assert fwd <= outs and rev <= outs
|
||||
assert len(fwd) + len(rev) == 154
|
||||
|
||||
|
||||
def test_transition_cmd_is_all_intra():
|
||||
cmd = b.transition_cmd("ffmpeg", "/a/base.mp4", "/b/base.mp4", "/out/x__y.mp4")
|
||||
assert "-g" in cmd and cmd[cmd.index("-g") + 1] == "1"
|
||||
assert "-keyint_min" in cmd and cmd[cmd.index("-keyint_min") + 1] == "1"
|
||||
assert "-sc_threshold" in cmd and cmd[cmd.index("-sc_threshold") + 1] == "0"
|
||||
assert "libx264" in cmd
|
||||
|
||||
|
||||
def test_reverse_cmd_is_all_intra():
|
||||
cmd = b.reverse_cmd("ffmpeg", "/out/x__y.mp4", "/out/x__y.rev.mp4")
|
||||
assert "-g" in cmd and cmd[cmd.index("-g") + 1] == "1"
|
||||
assert "reverse" in " ".join(cmd)
|
||||
|
||||
Reference in New Issue
Block a user