Skip to main content

Hardware video (VCN)

VCN works since ps5-linux-patches #38 (commit 8081cd8, 8 Oct 2026). The PS5 has VCN 2.0 (IP 2.0.3), driven by vcn_v2_0.

WhatStatus
Decode H.264, HEVC Main/Main 10, VP9 Profile 0/2, VC-1✅ Working, bit-exact with software decoding
Decode MPEG-2✅ Working, very close but not bit-exact
Encode H.264✅ Working
Encode HEVC, I-frames only✅ Working
Encode HEVC, normal GOP with P-frames❌ Broken: corrupt colours at every tested bitrate
Decode H.264 High 10, AV1, VP8, Theora, MPEG-4 Part 2❌ Not supported by the hardware

Tested sizes: H.264 up to 4096×2304, HEVC and VP9 up to 8192×4352. H.264 at 4096×4096 is advertised but fails.

How it works​

The PS5 runs AMD's Navi 10 VCN firmware with a small patch. The stock firmware waits for an SMU handshake at boot that the PS5 never answers, so the patch skips it. The patched firmware ships in the patches repository as firmware/amdgpu/ps5_vcn.bin and is built into the kernel.

On 1002:13fb, the driver also:

  • turns off VCN doorbells (the rings use direct register writes instead),
  • resets the VCPU before starting and after a failed stop,
  • clears stale ring state before starting.

Getting it​

Not in a release yet

There is no prebuilt release with VCN yet; the newest release is still 7.1.7. Build the kernel yourself from ps5-linux-patches at 8081cd8 or newer, see Kernel setup.

The repository's .config sets:

CONFIG_EXTRA_FIRMWARE="amdgpu/ps5_vcn.bin"
CONFIG_EXTRA_FIRMWARE_DIR="../ps5-linux-patches/firmware"

That path is relative to the kernel source tree, so linux and ps5-linux-patches must be cloned side by side, exactly as in the build steps.

Check that it works​

Install libva-utils (Arch) or vainfo (Debian/Ubuntu), then run:

vainfo

It should list H.264, HEVC, VP9, MPEG-2 and VC-1 decoding, plus H.264 and HEVC encoding. This was verified with Mesa 26.2.4 on kernel 7.2.4.

Using it with FFmpeg​

Decode:

ffmpeg -hwaccel vaapi -i input.mkv -f null -

Transcode to H.264:

ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input.mkv -c:v h264_vaapi -b:v 12M output.mkv

HEVC encoding only produces a clean picture with I-frames only; with P-frames, the colours are corrupted. Force I-frame-only output with -g 1 -bf 0:

ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input.mkv -c:v hevc_vaapi -g 1 -bf 0 -b:v 25M output.mkv

I-frame-only encoding needs a much higher bitrate for the same quality. Use h264_vaapi when file size matters.

Browsers and streaming​

Firefox uses VCN for video through VAAPI. Tested on Firefox 157 with Mesa 26.2.4: H.264 at 720p60, 1080p and 4K, HEVC and HEVC Main 10 at 1080p, and VP9 at 1080p all played without errors, with at most 2 dropped frames in 20-second clips. To see which codecs Firefox decodes in hardware, open about:support and look under Media.

Moonlight streaming from the PS5 works through Sunshine with H.264 VCN encoding, see Game streaming.

Results​

In short: hardware decoding uses around 1% of a CPU core where software decoding uses up to 84% (HEVC Main 10 at 4K), and H.264 hardware transcoding runs at full speed at about 1–2.5% CPU.

CPU use is measured with 100% = one logical CPU, as FFmpeg's CPU use between seconds 2 and 9.5.

Decoding: CPU use
CodecSizeSoftwareVCNVCN frame check
H.264 Baseline720p4.35%0.54%32 exact frames
H.264 Main1080p17.19%0.60%32 exact frames
H.264 High1080p17.66%0.67%32 exact frames
HEVC Main1080p29.77%0.54%32 exact frames
HEVC Main 101080p35.12%0.47%32 exact frames
VP9 Profile 01080p19.40%0.60%32 exact frames
VP9 Profile 21080p23.68%0.54%32 exact frames
MPEG-2 Main1080p7.76%0.74%57.09 dB, not exact
VC-1 Advanced720p19.67%0.87%32 exact frames
H.264 High4K66.89%1.74%32 exact frames
HEVC Main 104K83.48%1.07%12 exact frames
VP9 Profile 04K75.12%1.14%12 exact frames
H.264 High 101080p21.47%n/aUnsupported
AV1 Main1080p16.99%n/aUnsupported
Theora1080p8.96%n/aUnsupported
VP81080p14.18%n/aUnsupported
MPEG-4 Part 2 Simple1080p8.03%n/aUnsupported
Decoding: frames per second
CodecSizeSoftwareVCN
H.264 Baseline720p29.729.4
H.264 Main1080p29.729.4
H.264 High1080p29.729.4
HEVC Main1080p29.729.4
HEVC Main 101080p29.729.4
VP9 Profile 01080p29.629.4
VP9 Profile 21080p29.429.4
MPEG-2 Main1080p28.828.5
VC-1 Advanced720p59.458.8
H.264 High4K29.429.4
HEVC Main 104K30.030.0
VP9 Profile 04K29.729.7
H.264 High 101080p29.4n/a
AV1 Main1080p30.9n/a
Theora1080p21.9n/a
VP81080p29.7n/a
MPEG-4 Part 2 Simple1080p29.7n/a
Transcoding: CPU use
CodecSizeTarget (Mbps)SoftwareVCNVCN output
H.264 Baseline1080p1290.12%1.00%Checked
H.264 Main1080p12102.15%1.00%Checked
H.264 High1080p12103.02%1.00%Checked
HEVC Main1080p12292.23%0.94%Corrupt colours
HEVC Main 101080p12298.39%1.00%Corrupt colours
H.2641080p487.78%0.94%Checked
HEVC1080p4322.99%0.80%Corrupt colours
H.2641080p895.00%0.94%Checked
HEVC1080p8309.06%0.94%Corrupt colours
H.2641080p25118.16%1.20%Checked
HEVC1080p25284.08%1.20%Corrupt colours
H.2644K25315.14%2.27%Checked
HEVC4K25419.63%1.87%Corrupt colours
H.2644K50356.79%2.41%Checked
HEVC4K50367.30%2.14%Corrupt colours
Transcoding: frames per second
CodecSizeTarget (Mbps)SoftwareVCN
H.264 Baseline1080p1229.429.4
H.264 Main1080p1229.429.4
H.264 High1080p1229.429.4
HEVC Main1080p1218.429.4
HEVC Main 101080p1215.429.4
H.2641080p429.429.4
HEVC1080p426.829.4
H.2641080p829.429.4
HEVC1080p821.429.4
H.2641080p2529.429.4
HEVC1080p2514.429.4
H.2644K2529.429.4
HEVC4K258.029.4
H.2644K5029.429.4
HEVC4K506.429.4
Encoding quality: PSNR (dB)

Higher is better. HEVC VCN results use a normal GOP with P-frames, which is why they are so low (corrupt colours).

CodecSizeTarget (Mbps)SoftwareVCN
H.264 Baseline1080p1251.1648.19
H.264 Main1080p1252.5449.90
H.264 High1080p1252.2049.90
HEVC Main1080p1251.7615.46
HEVC Main 101080p1252.1415.31
H.2641080p441.6639.68
HEVC1080p443.2515.85
H.2641080p847.5445.12
HEVC1080p847.9815.61
H.2641080p2560.8859.90
HEVC1080p2560.2015.42
H.2644K2545.7242.68
HEVC4K2547.3215.03
H.2644K5053.2451.30
HEVC4K5053.8415.01
Output file bitrate (Mbps)
CodecSizeTargetSoftwareVCN
H.2641080p44.084.01
HEVC1080p44.104.10
H.2641080p88.178.00
HEVC1080p88.207.96
H.2641080p2524.8124.86
HEVC1080p2525.6224.90
H.2644K2525.3924.90
HEVC4K2525.5925.05
H.2644K5050.6749.78
HEVC4K5051.2449.81

How to read the results​

TermMeaning
CPU scale100% = one logical CPU. FFmpeg CPU use between seconds 2 and 9.5.
FPSPaced runs, including startup. Not maximum throughput.
HEVC VCN encodingNormal GOP with P-frames. Corrupt colours at every tested bitrate; I-frame-only output is clean.
PSNRMeasured over the first 60 encoded frames. Higher means less pixel error.
File bitrateIncludes container overhead.
RepeatsDecoding and 12 Mbps tests: two runs. Other bitrates: one run.
Exact framesDecoded pixels match software decoding exactly.