Package Details: intel-hybrid-codec-driver 2.0.0.r169.edead0c-2

Git Clone URL: https://aur.archlinux.org/intel-hybrid-codec-driver.git (read-only)
Package Base: intel-hybrid-codec-driver
Description: Libva support for partially hardware accelerated encode and decode on Haswell and newer
Upstream URL: https://01.org/linuxmedia/vaapi
Licenses: MIT
Submitter: DetMittens
Maintainer: DetMittens
Last Packager: DetMittens
Votes: 14
Popularity: 1.540817
First Submitted: 2017-07-16 18:38
Last Updated: 2018-01-21 11:38

Dependencies (3)

Required by (1)

Sources (1)

Latest Comments

wan109020 commented on 2019-05-20 15:34

This codec seems to work way better under Intel Clear Kernel. On my machine, rendering 1080p Youtube Video with chromium-vaapi only took ~5% under Intel Clear Kernel, just like it gots full hw-acceleration.

wan109020 commented on 2018-11-08 17:44

It's working fine for me.

I am using a skylake CPU (Intel Corei7-6560U)

Playing YouTube in VP9 with chromium-vaapi is smooth, <10%CPU is used and no frame drops with libva-intel-driver-hybrid and this package installed

Without this package, ~30%is used when playing 1080p vp9 youtube and there's occasional frame drops

DetMittens commented on 2018-01-21 11:45

Unfortunately that sounds like the hardware just isn't fast enough, even with this driver (depending on which graphics generation) a lot of the decoding is still done in software. For example the Braswell nuc I have can do vp9 decoding but past ~720p30 it stutters and drops frames.

I've updated the package to make the driver at least partially usable for now and included a warning when upgrading from a previous version.

Burdeman commented on 2018-01-21 01:45

After adding --disable-x11 No more error and I can see the VP9 profile.

$ vainfo libva info: VA-API version 1.0.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_1_0 libva info: va_openDriver() returns 0 ................... VAProfileVP9Profile0 : VAEntrypointVLD

Chromium still runs like a dog on VP9 video (e.g. Youtube) so don't know whats going on there. It is indicating GPU decoding in use though.

Back to forcing h264 for now...

DetMittens commented on 2018-01-20 17:20

I'm not sure what is causing the driver to depend on the old version of libva-x11, as all the configures seem correct to me.

When I add --disable-x11 to this package's configure the resulting driver is able to load and I was able to use VP9 decoding on BSW successfully in mpv. Adding this flag means that when in an X11 session vaapi decoding of hybrid codecs can only be done via drm however this way is recommended over vaapi via X11 AFAIK

If anyone is able to test this package with --disable-x11 flag please let me know the outcome because if it works then I'll add it to the PKGBUILD until a better solution can be found.

Burdeman commented on 2018-01-20 15:18

init error on hybrid_drv_video.so

$ vainfo libva info: VA-API version 1.0.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_1_0 failed to open /usr/lib/dri/hybrid_drv_video.so Failed to wrapper hybrid_drv_video.so ...

strace reveals its looking for libva-x11.so.1:

<hr>

openat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib/tls/haswell/x86_64", 0x7ffd8640d1e0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/tls/haswell/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib/tls/haswell", 0x7ffd8640d1e0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/tls/x86_64/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib/tls/x86_64", 0x7ffd8640d1e0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/tls/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib/tls", 0x7ffd8640d1e0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/haswell/x86_64/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib/haswell/x86_64", 0x7ffd8640d1e0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/haswell/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib/haswell", 0x7ffd8640d1e0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/x86_64/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib/x86_64", 0x7ffd8640d1e0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/libva-x11.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=135168, ...}) = 0

...

argen14 commented on 2018-01-08 04:16

I guess I am having same problem as @Detmittens . I have i5-6200u skylake graphics. After installing this package I've re-compiled libva-intel-driver

$ yaourt -Sb libva-intel-driver I changed the lines of PKGBUILD:

./configure --enable-hybrid-codec \ --prefix=/usr

Seems libva tries to load the driver but fails:

ibva info: VA-API version 1.0.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_1_0 /usr/lib/dri/hybrid_drv_video.so init failed Failed to wrapper hybrid_drv_video.so libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.0 (libva 2.0.0) vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 2.0.0 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileH264ConstrainedBaseline: VAEntrypointFEI VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264Main : VAEntrypointFEI VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileH264High : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointFEI VAProfileH264MultiviewHigh : VAEntrypointVLD VAProfileH264MultiviewHigh : VAEntrypointEncSlice VAProfileH264StereoHigh : VAEntrypointVLD VAProfileH264StereoHigh : VAEntrypointEncSlice VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileVP8Version0_3 : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice

Any ideas to try? Thanks

DetMittens commented on 2017-11-13 19:03

I'm still having problems updating but I guess something must be conflicting. I'm going to update the package with your PKGBUILD modifications since its working on my braswell nuc but not on my skylake system. Guess its time for me to setup a proper chroot to build in.

Thanks for the help

uth commented on 2017-11-13 18:06

Thanks DetMittens,
I updated your PKGBUILD and it works well on Haswell.

//
--- PKGBUILD.old 2017-11-14 02:39:02.221000628 +0900
+++ PKGBUILD 2017-11-14 02:39:29.670453649 +0900
@@ -12,8 +12,10 @@
# the libva-intel-driver-hybrid package from the AUR

pkgname=intel-hybrid-codec-driver
+_gitroot="git+https://github.com/01org/intel-hybrid-driver.git"
_gitname=intel-hybrid-driver
-pkgver=1.0.2
+_pkgver=2.0.0
+pkgver=$_pkgver.r169.edead0c
pkgrel=1
pkgdesc='Libva support for VP9 decode and VP8 encode on Skylake and Braswell'
arch=('i686' 'x86_64')
@@ -21,21 +23,26 @@
license=('MIT')
depends=('libva' 'libcmrt')
optdepends=('libva-intel-driver-hybrid: To be able to use the full hw codecs with hybrid codecs')
-source=("${_gitname}-${pkgver}.tar.gz::https://github.com/01org/${_gitname}/archive/${pkgver}.tar.gz")
-sha256sums=('16cd66872e8043ce6c0e9a016a043c460e8a180fdc520f31c1f97ffef7828d7b')
+source=("$_gitname::$_gitroot")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd ${srcdir}/$_gitname
+ printf $_pkgver".r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}

prepare() {
- cd ${srcdir}/${_gitname}-${pkgver}
+ cd ${srcdir}/${_gitname}
autoreconf -v --install
}

build() {
- cd ${srcdir}/${_gitname}-${pkgver}
+ cd ${srcdir}/${_gitname}
./configure --prefix=/usr
make
}

package() {
- cd ${srcdir}/${_gitname}-${pkgver}
+ cd ${srcdir}/${_gitname}
make install DESTDIR=${pkgdir}
}
//

$ yaourt -Sb libva-intel-driver
I changed the lines of PKGBUILD:
> ./configure --enable-hybrid-codec \
> --prefix=/usr

$ vainfo | grep VP9
libva info: VA-API version 1.0.0
VAProfileVP9Profile0 : VAEntrypointVLD

DetMittens commented on 2017-11-13 16:58

There is currently a bug in this package or libcmrt which causes the resulting driver to reference __vaDriverInit_0_34 instead of __vaDriverInit_1_0. I think the problem is in libcmrt as it hasn't been updated to libva 2.0.0 I'm trying to find a fix and will update as soon as possible.