Skip to content

Intel QSV: 10-bit HEVC source → H264 output fails with "Current pixel format is unsupported" #9

Description

@zarttak

Intel QSV: 10-bit HEVC source → H264 output fails with "Current pixel format is unsupported"

Hardware: Intel Arc A770 (DG2), Unraid, jellyfin-ffmpeg 7.1.4
Profile: Default streaming test, "4K HEVC -> 1080p H264"

Summary

Every GPU run using the default "4K HEVC -> 1080p H264" streaming profile fails immediately with:

DG2 [Arc A770] pipeline did not start. [out#0/null @ ...]
Nothing was written into output file, because at least one of its streams received no packets.

Root cause confirmed via manual ffmpeg reproduction: the source clip (source_4k_hevc.mkv) is HEVC Main10 (yuv420p10le, 10-bit). The scale_qsv filter preserves the 10-bit format through the downscale to 1080p, but h264_qsv only accepts 8-bit NV12 input. The encoder then fails to open with:

[h264_qsv] Current pixel format is unsupported
[h264_qsv] some encoding parameters are not supported by the QSV runtime.
[vost#0:0/h264_qsv] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.

Reproduction (fails)

ffmpeg -v verbose -hwaccel qsv -hwaccel_output_format qsv \
  -i source_4k_hevc.mkv \
  -vf 'scale_qsv=w=1920:h=1080' \
  -c:v h264_qsv -f null -

Fix (works)

Adding an explicit format conversion to 8-bit NV12 in the same scale_qsv filter resolves it:

ffmpeg -v verbose -hwaccel qsv -hwaccel_output_format qsv \
  -i source_4k_hevc.mkv \
  -vf 'scale_qsv=w=1920:h=1080:format=nv12' \
  -c:v h264_qsv -f null -

This completes successfully — 1440/1440 frames encoded at ~11x realtime speed on the A770.

Suggested fix

When building the QSV filter chain for any HEVC 10-bit → H264 (8-bit only) conversion, append :format=nv12 (or equivalent 8-bit pixel format) to the scale_qsv filter. This likely affects any 10-bit source (HEVC Main10, HDR profiles) being converted to an 8-bit output codec on Intel QSV, not just the default streaming profile.

Environment

  • GPU: Intel Arc A770 (DG2), detected correctly by the benchmark
  • ffmpeg: 7.1.4-Jellyfin, iHD driver 25.4.6
  • Confirmed device passthrough (/dev/dri), LIBVA_DRIVERS_PATH/LIBVA_DRIVER_NAME env vars, and file permissions are all correctly configured — this is purely a filter-chain issue in the pipeline the app generates for 10-bit sources.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions