I’m investigating hardware-accelerated video decode on Raspberry Pi 5 using Chromium (Wayland). The goal is smooth playback (no frame drops) and a Chromium-based UI. So far, Chromium appears to run software-only for video decode/compositing on Pi 5, despite extensive flag and VA-API attempts.
- Hardware: Raspberry Pi 5 (BCM2712)
- OS/Display: Wayland (Sway/Wlroots)
- Browser: Chromium (aarch64)
- GPU: V3D
- Decoder API: V4L2 stateless (rpivid)
- Pi 5 appears to expose HEVC-only hardware decode via V4L2 stateless (rpivid). H.264 hardware decode is not available.
- Chromium’s
chrome://gpushows Video Decode: Software only. - CDP Media diagnostics report
FFmpegVideoDecoder(software decode). video.canPlayType('video/mp4; codecs="hvc1"')andMediaSource.isTypeSupported(...)return not supported for HEVC in current Chromium build.
- Enabled Chromium features/flags:
VaapiVideoDecoder,VaapiIgnoreDriverChecks,V4L2VideoDecoder,V4L2StatelessVideoDecoder,VaapiVideoDecodeLinuxGL,UseMultiPlaneFormatForHardwareVideo,Vulkan,DefaultANGLEVulkan,PlatformHEVCDecoderSupport, etc.
- Forced VA-API V4L2 backend via
LIBVA_DRIVER_NAME=v4l2andLIBVA_DRIVERS_PATH=.... - Tested
libva-v4l2(mxsrc fork): loads but reports no profiles/entrypoints on Pi 5. - Attempted to build
libva-v4l2-request(bootlin) but it fails against modern kernel headers.
Pi 5 hardware decode is HEVC-only, but Chromium on Linux does not accept HEVC without a custom build (proprietary codecs + platform decoder enabled). If Chromium can’t be built to accept HEVC on aarch64, then hardware decode may be unavailable in Chromium on Pi 5.
- Has anyone successfully enabled HEVC playback in Chromium on Raspberry Pi 5?
- Are there known patches or build flags to enable HEVC/platform decoding on aarch64 Chromium?
- Any references to Chromium builds with V4L2 stateless HEVC decode working on Pi 5?
- Custom Chromium build with proprietary codecs + HEVC enabled (and platform decoder wired in). If
canPlayTypeflips and CDP Media shows a platform decoder, this is likely the best path. - Alternate Chromium builds (e.g., downstream patches) that explicitly enable V4L2/HEVC.
- Pipeline split (still Chromium UI): keep Chromium for UI but offload video playback to a native player only if Chromium cannot do HEVC (last resort).
- HEVC / proprietary codecs on Chromium:
- V4L2 decoding support in Chromium builds:
- Pi 5 / HEVC decode discussions:
- VA-API / driver stack notes:
chrome://gpushows Video Decode: Hardware accelerated.chrome://media-internalsshows a hardware/platform decoder (not FFmpeg).MediaSource.isTypeSupported('video/mp4; codecs="hvc1.1.6.L93.B0"')returns true.
- Pi 5 decode block: Pi 5 removed the legacy H.264 decoder block; hardware decode appears to be HEVC‑only (rpivid / V4L2 stateless). If Chromium can’t accept HEVC, hardware decode is effectively unavailable.
- VA-API backend status:
libva-v4l2loads but reports no profiles/entrypoints on Pi 5. This suggests the V4L2 -> VA-API shim may not expose HEVC yet (or needs specific device paths/patches). - V4L2 device signals:
/dev/video19reportsS265(HEVC parsed slices).rpivid_hevckernel module is loaded; no H.264 module appears. - Chromium diagnostics:
chrome://gpuconsistently reports “Video Decode: Software only” even withVaapiIgnoreDriverChecksandV4L2StatelessVideoDecoderenabled. CDP Media usesFFmpegVideoDecoder. - HEVC support in Chromium:
video.canPlayTypeandMediaSource.isTypeSupportedreturn empty for HEVC in current builds, implying missing proprietary codecs/platform decode wiring. - If HEVC can be enabled: We’d expect
canPlayTypeto flip toprobably/maybe,chrome://media-internalsto show a platform decoder, andchrome://gputo report hardware decode.
If you’ve seen this working (or know why it can’t), please share links/patches/build flags.