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
{{ message }}
Repository navigation
A disk error or a busy graphics card can switch the GPU encoder off or hide a working one #791
The GPU encoder's health tracking cannot tell a bad encoder from a bad moment. (1) Any non-zero ffmpeg exit during a GPU render counts as a GPU failure. Two of them (a full disk, a missing lane file) disable that encoder until the next start. (2) The "Test encoders" button replaces a passing cached result with whatever the new probe returned, even a transient failure, and it holds the probe lock for up to about three minutes.
Who is affected
Anyone using Auto with an NVIDIA, Intel or AMD encoder. The cost is a slower export (CPU) that nothing explains.
How to see it
Fill the disk (or remove an input file) and export twice. After the second failure the log says the encoder is "not used again until StemDeck restarts".
Or start a Demucs separation, press Test encoders while the card is busy, and see "out of memory" cached for ten minutes in place of the earlier pass (which was cached for a week).
Evidence
app/pipeline/take_render.py:598-602 raises TakeRenderError(..., "exit") for any non-zero exit.
app/api/takes.py:1593 calls video_encoder.record_failure for every TakeRenderError.
app/pipeline/video_encoder.py:650-662 counts them toward VIDEO_ENCODER_MAX_FAILURES = 2.
app/pipeline/video_encoder.py:758 calls probe(..., force=True); :606-624 overwrites the cache entry under _probe_lock.
TTLs: app/core/config.py:444-447.
Constraints for anyone fixing it
Only NVIDIA NVENC on Windows has been exercised. Intel QSV, AMD AMF, VAAPI and VideoToolbox report different error text, so any classification of "the encoder is at fault" has to work from exit reasons seen on real hardware (see the platform issue).
The ffmpeg error classifier is classify_failure (video_encoder.py:405).
Settings text (settings.export.encoder.*) would change if a new state is shown, so ten languages and the Guide are affected.
Origin
NEW in 0.21.0 (3b101bb, 2026-10-09). Found on the big-release branch (draft pull request #784); the work is not released yet.
Possible direction
Count a failure only when the exit looks like the encoder (classified reasons), and keep a passing result when a forced probe only fails transiently.
Verified by
read; the classifier output was run once (see the issue about error text reaching the client).
Activity