You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(engine): closed-GOP VP9 encoder args + concat-copy smoke test
PR 8.1 of the WebM distributed-rendering plan (v1.5 backlog #1; see
DISTRIBUTED-RENDERING-PLAN.md §7.2). Gates whether PR 8.2 ships Path A
(concat-copy) or Path B (re-encode-in-assemble) for webm distributed mode.
Two changes:
1. Extend buildEncoderArgs to lay closed-GOP args on libvpx-vp9 when
lockGopForChunkConcat=true: -g <chunkSize>, -keyint_min <chunkSize>,
-auto-alt-ref 0, -cpu-used 2. Mirrors the existing libx264/libx265
branches. Alt-ref disabling is the critical bit — libvpx-vp9's default
non-displayable alt-ref frames can reach across chunk seams and break
concat-copy. cpu-used=2 pins the speed/quality tradeoff so chunks
encoded on workers with different libvpx-vp9 defaults produce
visually consistent output across seams.
2. Smoke test at packages/producer/tests/distributed/_smoke/webm-concat-copy.test.ts.
Generates 60 PNGs via lavfi testsrc2, encodes them as 4 VP9 chunks
of 15 frames using buildEncoderArgs with lockGopForChunkConcat=true,
concat-copies via ffmpeg -f concat -c copy, then runs three
independent verifications: ffprobe -show_streams, ffmpeg -f null -
decode test, and ffprobe -count_frames. Each verification surfaces
its failure fingerprint in the error message so PR 8.2 has the data
it needs to pick the right architectural path.
Smoke test result locally: ALL 6 tests pass. Path A (concat-copy) works
for libvpx-vp9 with the new closed-GOP args. PR 8.2 will ship the
plan-time-error-removal path.
Also exports buildEncoderArgs from @hyperframes/engine so adapters /
tests can construct args without re-implementing the contract.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments