HDR and Dolby Vision preview thumbnails without washed-out or green frames

Washed-out or green previews come from HDR frames not tone-mapped. This app tone-maps HDR10, HLG and Dolby Vision; DV Profile 5 needs a Vulkan GPU.

Washed-out, grey or green preview thumbnails come from frames taken from HDR video without tone mapping them to SDR. Tone mapping converts HDR's brightness and colour range into the smaller range a JPEG thumbnail can show. Media Preview Generator does this automatically:

Why the built-ins get it wrong

Checked 23 September 2026. See the comparison page for sources.

What this app does, per format

The app picks the path per file from its metadata. A Dolby Vision file whose video also declares a PQ (HDR10) or HLG transfer is tone-mapped through that layer; one that declares neither is treated as Profile 5. Nothing needs to be set per library. Full detail is in Guides — HDR & Dolby Vision.

The one setup step: NVIDIA and Dolby Vision Profile 5

NVIDIA's container toolkit only loads its Vulkan driver when the container asks for the graphics capability. The common compute,video,utility setting leaves it out. Everything else still works, but Dolby Vision Profile 5 doesn't.

docker run -d \
  --gpus all \
  -e NVIDIA_VISIBLE_DEVICES=all \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  ...
  stevezzau/media_preview_generator:latest

In Docker Compose, set NVIDIA_DRIVER_CAPABILITIES=all under environment:. compute,video,utility,graphics also works if you prefer the minimum. Restart the container after changing it.

If NVIDIA's Vulkan driver arrives without the small config files that point to it, which happens with --gpus all on some Docker setups, the app writes those files itself. If those thumbnails are still tinted, the dashboard says what is missing under Settings → Processing Options → GPU device tuning.

NVIDIA graphics files missing from the container

The dashboard says this when CUDA works in the container but none of NVIDIA's graphics driver files reached it, even with NVIDIA_DRIVER_CAPABILITIES=all. The app can't fill this gap itself, because the driver isn't there to use. Look for the files on the host (not in the container):

find / -xdev -name 'libGLX_nvidia.so*' 2>/dev/null

It finds nothing: the host's NVIDIA driver was installed without its graphics part. Install the full driver.

It finds them: the host's NVIDIA container setup isn't passing them in. It's worth telling whoever provides your NVIDIA driver package. Until that's fixed, mount the files in yourself. In the lines below, replace /usr/lib with the folder find printed, and 595.99.02 with your driver version (the number at the end of libGLX_nvidia.so.<version>). First check that every file exists on the host:

ls /usr/lib/libGLX_nvidia.so.0 /usr/lib/libEGL_nvidia.so.0 /usr/lib/libnvidia-{glcore,glvkspirv,tls,eglcore,glsi}.so.595.99.02

Then add them to the container's volumes: in compose (or as -v options) and recreate it:

    volumes:
      - /usr/lib/libGLX_nvidia.so.0:/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:ro
      - /usr/lib/libEGL_nvidia.so.0:/usr/lib/x86_64-linux-gnu/libEGL_nvidia.so.0:ro
      - /usr/lib/libnvidia-glcore.so.595.99.02:/usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.595.99.02:ro
      - /usr/lib/libnvidia-glvkspirv.so.595.99.02:/usr/lib/x86_64-linux-gnu/libnvidia-glvkspirv.so.595.99.02:ro
      - /usr/lib/libnvidia-tls.so.595.99.02:/usr/lib/x86_64-linux-gnu/libnvidia-tls.so.595.99.02:ro
      - /usr/lib/libnvidia-eglcore.so.595.99.02:/usr/lib/x86_64-linux-gnu/libnvidia-eglcore.so.595.99.02:ro
      - /usr/lib/libnvidia-glsi.so.595.99.02:/usr/lib/x86_64-linux-gnu/libnvidia-glsi.so.595.99.02:ro

The app writes the config files Vulkan needs, and the log then says Vulkan ready for Dolby Vision Profile 5 tone-mapping. After a host driver update, change the version numbers to match. A file that doesn't exist on the host is created there as an empty folder, and Vulkan stays unavailable.

Intel and AMD need no extra step beyond passing /dev/dri, which also brings the Mesa Vulkan driver.

Without a hardware Vulkan driver, the app can't run the Profile 5 tone-mapping path. It logs a warning and extracts those frames without tone mapping, so their thumbnails come out with a green and purple tint. If only a software Vulkan driver is found (the usual case on NVIDIA without the graphics capability), the bell menu also shows a notification. With no Vulkan at all, the log is the only sign. For a diagnostic bundle to attach to a GitHub issue, use GET /api/system/vulkan/debug.

Checking the result

Speed

Dolby Vision Profile 5 is the slowest format to process. How long it takes depends on the GPU, the codec and your storage, and each GPU vendor needs something different (FAQ).

Limits

Edit this page on GitHub
Type to search the documentation.