Blog

AV1 in Jellyfin on an Intel UHD 770: measured decode and transcode speed

We measured AV1 in Jellyfin's own ffmpeg on an Intel UHD 770: 4K 10-bit hardware decoding at 13.5x real time, HDR10 to SDR transcoding at 4.6x, 5 simultaneous 4K streams.

AV1 in Jellyfin on an Intel UHD 770: measured decode and transcode speed

AV1 files are becoming common, and many Jellyfin setups still run on an Intel integrated GPU. The question is simple: can an Intel UHD 770 handle AV1 for Jellyfin, and how many streams? We measured it with jellyfin-ffmpeg, the ffmpeg build that Jellyfin itself ships.

Results in short

  • AV1 decoding runs on the GPU: a 4K 10-bit AV1 file decodes at 13.5x real time while using about 13% of one CPU core.
  • 4K AV1 HDR to 1080p H.264 with HDR→SDR tone mapping: 4.6x real time for one stream.
  • 5 simultaneous 4K HDR→1080p SDR transcodes stay in real time.
  • AV1 encoding is done on the CPU (for example with SVT-AV1), not on this GPU. For Jellyfin this rarely matters: clients that cannot play AV1 receive H.264 or HEVC, which the GPU encodes.

Test setup

ItemValue
CPU / GPUIntel Core i5-13500, integrated Intel UHD 770 (shared GPU)
Virtual machineLinux (Debian 13), 4 vCPU, 8 GB RAM, kernel 7.3
ffmpegjellyfin-ffmpeg 7.1.4 from the official Jellyfin repository
Media driverIntel iHD 25.4.6 (VAProfileAV1Profile0 decode supported)
Sources30 s, 24 fps, encoded with SVT-AV1 with added film grain: 4K 10-bit tagged HDR10 (PQ / BT.2020, about 39 Mbit/s) and 1080p 8-bit

The clips are synthetic, so real films can behave slightly differently. Each figure is the ffmpeg speed= value: 1x means real time, 10x means ten times faster than playback.

1. AV1 decoding: GPU vs CPU

4K 10-bit AV1, decode onlySpeedCPU used
Hardware decoding (VA-API)13.5x (324 fps)13% of one core
Software decoding (dav1d, 4 vCPU)4.0x (97 fps)227%

Hardware decoding is more than three times faster and leaves the CPU almost idle, which is what you want when Jellyfin, a database and other services share the same machine.

/usr/lib/jellyfin-ffmpeg/ffmpeg -vaapi_device /dev/dri/renderD128 \
  -hwaccel vaapi -hwaccel_output_format vaapi -i movie-av1.mkv -f null -

2. Transcoding AV1 for clients that cannot play it

This is the usual Jellyfin case: a TV, an older phone or a browser cannot play AV1, so Jellyfin converts it on the fly. We used the same Quick Sync pipeline Jellyfin uses (VA-API decode, QSV scaling and encoding).

TranscodeSpeedCPU used
4K AV1 10-bit → 1080p H.264, full GPU pipeline10.3x29% of one core
4K AV1 HDR10 → 1080p H.264 SDR with tone mapping (vpp_qsv)4.6x—
1080p AV1 → 720p H.2649.2x19% of one core
1080p AV1 → 1080p HEVC8.5x18% of one core
4K AV1 decoded on CPU, H.264 encoded on GPU (for comparison)3.8x271%

Tone mapping (turning HDR10 into SDR for a non-HDR screen) costs the most: it divides the speed by about two. We checked the output colour tags (BT.709) to make sure it was really applied.

/usr/lib/jellyfin-ffmpeg/ffmpeg \
  -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device qsv=qs@va -filter_hw_device qs \
  -hwaccel vaapi -hwaccel_output_format vaapi -i movie-av1-hdr10.mkv \
  -vf 'hwmap=derive_device=qsv,format=qsv,vpp_qsv=w=1920:h=1080:format=nv12:tonemap=1' \
  -c:v h264_qsv -preset veryfast -b:v 8M -c:a copy out.mkv

3. How many simultaneous streams?

Several 4K AV1 HDR10 → 1080p H.264 SDR transcodes (with tone mapping) running at the same time; the table shows the slowest stream:

Simultaneous streamsSlowest streamReal time?
14.6xyes
41.37xyes
51.10xyes
60.92xjust below
80.69xno

Five 4K HDR movies at once, each converted to 1080p SDR, is a comfortable limit for a household or a small group. Without tone mapping (SDR or 1080p sources), the GPU handles far more.

4. And AV1 encoding?

If you want Jellyfin to produce AV1 (for example to save bandwidth when streaming to an AV1-capable client), the encoding is done on the CPU with SVT-AV1, which is also how our test files were made. In practice Jellyfin rarely needs it: it direct-plays AV1 to clients that support it and sends H.264 or HEVC to the others, both encoded on the GPU.

What this means for a Jellyfin server

  • AV1 libraries are no problem on an Intel UHD 770: decoding is hardware-accelerated and the CPU stays free.
  • Plan on about 5 simultaneous 4K HDR→SDR transcodes, many more for 1080p.
  • Keep tone mapping enabled only when needed (non-HDR screens): it is the most expensive step.

See also: Jellyfin and Plex hardware transcoding, ffmpeg Quick Sync commands that work and our shared GPU load test.

Try it

All our iGPU plans include an Intel UHD 770 with VA-API and Quick Sync ready to use: Jellyfin installs in minutes and finds the GPU at /dev/dri/renderD128. See the plans, from €14.99 per month.