Skip to content

Hardware Transcoding

This file covers the Hardware acceleration pane under Settings -> Transcode, the “Fall back to software” setting and the container’s GPU device access. Prerequisites: signed in as an admin; at least one transcode rule (Settings -> Transcode) and one library file it matches. Rows that need a GPU say so; on a machine without one, use them to check the failure messages instead. Read ../using/hardware-transcoding.md first. Test environments: Docker (http://:7878) or NAS for the device rows. Native works for the pane and fallback rows when ffmpeg is on PATH.

ID Step Expected result Pass/Fail
HWT-01 Open Settings -> Transcode and find the Hardware acceleration pane below the rules. Every backend (VAAPI, Quick Sync, NVENC, VideoToolbox) is listed with a status of Works or Unavailable. Unavailable rows show a Reason.
HWT-02 On a host with no GPU passed in, read the reasons for VAAPI and Quick Sync. Unavailable, with ffmpeg’s own error line (for example “No VA display found”). The text “Function not implemented” for qsv=hw does not appear on the current image.
HWT-03 On a host with an Intel iGPU and /dev/dri passed through (amd64), open the pane. VAAPI and Quick Sync show Works.
HWT-04 On a host with an NVIDIA GPU, the NVIDIA runtime and the deploy block active, open the pane. NVENC shows Works. Without the video capability it shows Unavailable with “No NVENC capable devices found”.
HWT-05 Add or remove the devices lines in the compose file, recreate the container, then press Test again. The results are recalculated and change to match, without restarting Arclight.
HWT-06 Change the compose file and recreate the container, then reload the page without pressing Test again. Arclight restarted with the container, so the results are fresh. If you change the host while Arclight keeps running, the old results stay until you press Test again.
HWT-07 Open a rule’s editor and look at the Hardware encoding list. Backends that are Unavailable are disabled. A rule that already uses one keeps it, and the editor and the pane show a warning naming the rule and the reason.
HWT-08 Open the pane on the arm64 image (for example a Raspberry Pi). VAAPI and Quick Sync are Unavailable (not in the build). NVENC is the only backend that can work.
ID Step Expected result Pass/Fail
HWT-09 Check the “Fall back to software” switch on a fresh install. It is on.
HWT-10 With a backend Unavailable, set a rule to use it and run the rule on one file. The job finishes. Its message under Activity -> Transcode jobs, and the history entry, say which backend was unavailable, why, and that software was used.
HWT-11 Turn the switch off and run the same rule again. The job fails with a message naming the backend, ffmpeg’s reason and the usual fix.
HWT-12 Run a rule on a damaged or truncated file with the switch on. The job fails and is not retried in software.
ID Step Expected result Pass/Fail
HWT-13 With /dev/dri passed through, run docker logs arclight right after a start. One line per device, for example “/dev/dri/renderD128 found: arclight added to group render (105)”.
HWT-14 Without the devices lines, restart and read the log. No such line, and the container still starts normally.
HWT-15 After HWT-13, run docker exec arclight id with PUID and PGID unchanged. The app user lists the device’s group. PUID and PGID did not need changing.