[BUG] VAAPI hardware encoding fails on Intel J4125 CPU (Synology DS920+)

Open
#94 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
docker, linux

Research direction

Start by reproducing the issue with the provided Synology Docker configuration and device mappings, then inspect the logs around Unified VAAPI Encoder and Parsed_scale_vaapi_1. Done means the J4125 initializes VAAPI H.264 hardware encoding successfully and the stream reports a hardware encoder instead of falling back to CPU.

Written by the indexing model from the issue text.

Description

no-issue-activity
Is there an existing issue for this?
  • I have searched the existing issues
Current Behavior

VAAPI hardware encoding fails to initialize on an Intel J4125 (Synology DS920+) despite the GPU being detected correctly.

Selkies detects /dev/dri/renderD128 and begins initializing the VAAPI encoder, but fails with:

[Parsed_scale_vaapi_1] Failed to create processing pipeline config: 12 (the requested VAProfile is not supported).
[x11] Failed to init VAAPI: Failed to config filter graph. Falling back to CPU.

The stream then falls back to CPU encoding, resulting in approximately 10-20 FPS at 1920x1080 and making video playback (e.g. YouTube) unusably slow.

Additional troubleshooting performed: I confirmed that /dev/dri/renderD128 is accessible inside the container, the abc user is a member of the render/video group, iHD_drv_video.so is present, and LIBVA_DRIVER_NAME=iHD is set. Selkies successfully detects the Intel GPU before failing during VAAPI filter graph initialization.

Expected Behavior

The Intel Quick Sync GPU (Intel UHD 600 / J4125) should initialize successfully using VAAPI and hardware H.264 encoding instead of falling back to CPU encoding.

Steps To Reproduce
  1. Run on a Synology DS920+ (Intel Celeron J4125 / Intel UHD 600).
  2. Pass through:
    /dev/dri/card0
    /dev/dri/renderD128
  3. Start the latest linuxserver/firefox container.
  4. Connect to the browser.
  5. Observe the container log showing:

[x11] AUTO_GPU enabled. Selected: /dev/dri/renderD128
[x11] Initializing Unified VAAPI Encoder...
[Parsed_scale_vaapi_1] Failed to create processing pipeline config: 12 (the requested VAProfile is not supported).
[Parsed_scale_vaapi_1] Failed to configure output pad on Parsed_scale_vaapi_1
[x11] Failed to init VAAPI: Failed to config filter graph. Falling back to CPU.

The stream then reports:

[x11] Stream settings active -> Encoder: CPU

Environment
OS: Synology DSM 7.2.2-72806 Update 2

How docker service was installed:
Synology Container Manager (Docker)

CPU architecture:
x86_64

CPU:
Intel Celeron J4125
CPU architecture

x86-64

Docker creation
services:
  firefox:
    image: lscr.io/linuxserver/firefox:latest
    container_name: firefox
    security_opt:
      - seccomp:unconfined
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    environment:
      - PUID=1026
      - PGID=100
      - TZ=Australia/Melbourne
      - HTTP_PROXY=http://localhost:8888
      - HTTPS_PROXY=https://localhost:8888
      - DRINODE=/dev/dri/renderD128
      - DRI_NODE=/dev/dri/renderD128
      - AUTO_GPU=true
      - PIXELFLUX_WAYLAND=true
      - LIBVA_DRIVER_NAME=iHD
      - SELKIES_ENCODER=x264enc
    volumes:
      - /volume3/docker/firefox:/config
    shm_size: "2gb"
    network_mode: "container:gluetun"
    restart: unless-stopped
Container logs
Relevant section of the log:

[x11] AUTO_GPU enabled. Selected: /dev/dri/renderD128
[x11] Initializing Unified VAAPI Encoder...
[h264_vaapi] Slice count rounded up due to driver constraints.
[Parsed_scale_vaapi_1] Failed to create processing pipeline config: 12 (the requested VAProfile is not supported).
[Parsed_scale_vaapi_1] Failed to configure output pad on Parsed_scale_vaapi_1
[x11] Failed to init VAAPI: Failed to config filter graph. Falling back to CPU.
[x11] Stream settings active -> Encoder: CPU
Dominant language
Dockerfile
Stars
324
Forks
59
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Similar issues

More Audio/Video & RTC issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.