diff --git a/docs/superpowers/specs/2026-07-26-jellyfin-hw-transcoding.md b/docs/superpowers/specs/2026-07-26-jellyfin-hw-transcoding.md index af4e585..6b959fb 100644 --- a/docs/superpowers/specs/2026-07-26-jellyfin-hw-transcoding.md +++ b/docs/superpowers/specs/2026-07-26-jellyfin-hw-transcoding.md @@ -106,3 +106,40 @@ show up as low CPU, some GPU (`intel_gpu_top`) activity instead. - Exact supported codec list depends on the iGPU generation (device ID `9a49`) — confirm via `vainfo` output once run, and enable only the hardware decode paths it actually reports. + +## Post-deploy fix: two additional runtime packages required + +After the initial deploy (Task 1's `SupplementaryGroups` grant) and +enabling QSV in the dashboard, HEVC HDR playback hung indefinitely +(Direct Play worked for some titles; titles that needed a real +transcode+tonemap never produced output). Root-caused via +`journalctl -u jellyfin` and the per-session ffmpeg transcode log +(`find / -xdev -iname '*ffmpeg-transcode*'`) — two separate runtimes +were missing beyond `intel-media-driver` (which only provides VAAPI): + +1. **QSV session creation failed:** `Error creating a MFX session: -9` + / `Error initializing an MFX session: -3` on + `-init_hw_device qsv=qs@va`. VAAPI and QSV are separate runtimes on + Linux — QSV needs the oneVPL/MFX GPU implementation. Fix: added + `pkgs.vpl-gpu-rt` ("oneAPI Video Processing Library Intel GPU + implementation"; note `onevpl-intel-gpu` is the old, renamed + attribute) to `hardware.graphics.extraPackages` in + `machines/jupiter/hardware-configuration.nix`. + +2. **OpenCL device creation failed:** `Failed to get number of OpenCL + platforms: -1001` (`CL_PLATFORM_NOT_FOUND_KHR`) on + `-init_hw_device opencl=ocl@va`. The `tonemap_opencl` filter jellyfin + uses for HDR→SDR tone-mapping needs a working OpenCL ICD, which + nothing installed so far provides. Fix: added + `pkgs.intel-compute-runtime` ("Intel Graphics Compute Runtime oneAPI + Level Zero and OpenCL, supporting 12th Gen and newer" — matches + jupiter's Tiger Lake/Xe iGPU) to the same `extraPackages` list. + +Confirmed working end-to-end: HEVC HDR transcode with QSV encode + +OpenCL tone-map runs at `speed=2.68x` realtime on jupiter's iGPU, and +plays smoothly on Apple TV (JellyTV app). + +Both packages live in `machines/jupiter/hardware-configuration.nix` +(`hardware.graphics.extraPackages`), alongside `intel-media-driver`, +rather than in the jellyfin module itself — they're iGPU runtime +capabilities, not something specific to the jellyfin service.