FFmpeg's Vulkan Video hwaccel is the youngest code in our decode chain (merged
around 6.1/7.0) and 7.1 is a stabilisation branch that does not receive its ongoing
fixes. Both field reports of silent inter-frame corruption on Windows — Intel B580
(2026-07) and AMD Xbox Ally X (2026-08) — sit on that hwaccel, while the mature
d3d11va one streams clean on the same boxes. Getting onto current FFmpeg is the
cheapest thing that can move that, and it keeps Vulkan Video as the default rather
than demoting a whole vendor to DXVA.
Not new ground for our API usage: Ubuntu 26.04 already ships avcodec 62 (FFmpeg
8.0.1) and pf-client-core clippies clean there today. ffmpeg-sys-next 8.1.0 accepts
avcodec 56..63, so the binding needs no change.
The presence check is now version-stamped. It used to test only for
`lib\avcodec.lib`, which meant editing the pin here would have done NOTHING on every
already-provisioned runner — CI would have gone on building against 7.1 while this
file said 8.1, and the bump would have looked applied without being applied. A
`.punktfunk-ffmpeg-version` marker, written only after a successful extract, makes
runners re-provision themselves when the pin moves.
Still lgpl-shared (the licensing posture is unchanged) and still SHA-256 pinned
fail-closed; both pins re-captured 2026-08-05 from the current n8.1 assets.
Verified on the CI runner against a SEPARATE tree (C:\temp\ff81 — the canonical
C:\Users\Public\ffmpeg is shared with every other branch's jobs and was left alone):
ffmpeg n8.1.2, `cargo check -p pf-client-core --all-targets` and
`cargo check -p pf-encode --features amf-qsv,qsv --all-targets` both clean.