Intel IHD, HEVC HW Decode in Browsers

I’ve read several threads on similar topics but I couldn’t make sense of it. Please omit any discussion of Nvidia or AMD, or any discrete GPU solutions; this is purely for intel based IGPUs. Bringing up these other platforms will kind of muddy the waters. It is my understanding that Intel Igpus shouldn’t be affected by Manjaro’s 2022 decision to exclude HW decoding of codecs.

I have Manjaro box as a media player connected to my TV. For further context, it’s an odroid H3+. vainfo reports that the IHD driver is being used, and it lists HEVC as a VAEntrypointVLD, it also says that it’s capable of encoding, but I don’t care about that right now. Further, if I use the Jellyfin player flatpack, HEVC decoding works just fine. So far so good.

However, if I use Chromium or FF as my jellyfin media players, My server has to re-encode to H264. This would be fine, except this feature is buggy in my experience, and if you do anything like skip or rewind, the playback is completely broken. It has been like this for years, and it doesn’t seem to matter what HW I have in the server.

Both browsers claim to be configured to use HW accelerated decoding. In FF, the about:config had this enabled by default. By searching the settings menu for Chromium, it also claims that HW accelerated decoding is enabled by default. Despite all this, both browsers force transcoding if the source is HEVC.

The reason I want the browsers to work is because multiple users use this device, and I don’t trust people to log out of jellyfin. LOL. So, each user gets their own client. :slight_smile:

Any help is appreciated.

TLDR:

  • I think that hw decoding is enabled in the system as evidenced by the fact that vainfo reports it so, and the jellyfin flatpack works fine with HW decoding.
  • Neither FF or chromium uses HEVC HW decode when run as jellyfin clients despite the fact that they both claim to be configured to do so.

PS:
The system, and all packages are fully up to date.

That is one fine mess that i struggle to understand too. In theory is enabled (i followed the arch wiki), but reencoding in programs like openshot seems to run purely in software…And i read at least chromium does not support it…then i read somewhere it would come in ver 118, but not if i ask chrome://gpu/

I do not need it often so i ignored it, but a tutorial or some explanation would be nice. Also, i am pretty sure there is a difference if we are talking about the integrated graphics and about ARC.

It can still be blocked at runtime. Look in about:support and scroll down to the HARDWARE_VIDEO_DECODING entry in the Graphics section. What does it say there?

EDIT Nvm, it’s not supported in FF 119 at all. According to this it should be in Chrome via VAAPI but I don’t use Chrome so no idea - HEVC/H.265 video format | Can I use... Support tables for HTML5, CSS3, etc

The decoding part is supposed to work on chromium 119

[teo@teo-lenovo-v15 ~]$ vainfo
Trying display: wayland
Trying display: x11
vainfo: VA-API version: 1.20 (libva 2.20.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.3.5 ()

Canvas: Hardware accelerated
Canvas out-of-process rasterization: Disabled
Direct Rendering Display Compositor: Disabled
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
OpenGL: Enabled
Rasterization: Hardware accelerated
Raw Draw: Disabled
Skia Graphite: Disabled
Video Decode: Hardware accelerated
Video Encode: Software only. Hardware acceleration disabled
Vulkan: Disabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
WebGPU: Disabled

Do you have some file we can test?