Herostratus’ legacy

words from a lazy coder

How to setup a gst-build environment with Intel's VA-API stack

gst-build is far superior than gst-uninstalled scripts for developing GStreamer, mainly because its meson and ninja usage. Nonetheless, to integrate external dependencies it is not as easy as in gst-uninstalled.This guide aims to show how to integrate GStreamer-VAAPI dependencies, in this case with the Intel VA-API driver.

Dependencies #

For now we will need meson master, since it this patch is required. The pull request is already merged but it is unreleased yet.

Installation #

clone gst-build repository #

git clone git://anongit.freedesktop.org/gstreamer/gst-build
cd gst-build

apply custom patch for gst-build #

The patch will add the repositories for libva and intel-vaapi-driver.

wget https://people.igalia.com/vjaquez/gst-build-vaapi/0001-add-libva-and-intel-vaapi-driver-as-subprojects.patch
git am 0001-add-libva-and-intel-vaapi-driver-as-subprojects.patch

0001-add-libva-and-intel-vaapi-driver-as-subprojects.patch

configure #

Running this command, all dependency repositories will be cloned, symbolic links created, and the build directory configured.

meson bulid

apply custom patches for libva, intel-vaapi-driver and gstreamer-vaapi #

libva #

This patch is required since the headers files uninstalled paths doesn’t match with the ones in the “include” directives.

cd libva
wget https://people.igalia.com/vjaquez/gst-build-vaapi/0001-build-add-headers-for-uninstalled-setup.patch
git am 0001-build-add-headers-for-uninstalled-setup.patch
cd -

0001-build-add-headers-for-uninstalled-setup.patch

intel-vaapi-driver #

The patch handles libva dependency as a subproject.

cd intel-vaapi-driver
wget https://people.igalia.com/vjaquez/gst-build-vaapi/0001-meson-support-libva-as-subproject.patch
git am 0001-meson-support-libva-as-subproject.patch
cd -

0001-meson-support-libva-as-subproject.patch

gstreamer-vaapi #

Note to myself: this patch must be split and merged in upstream.

cd gstreamer-vaapi
wget https://people.igalia.com/vjaquez/gst-build-vaapi/0001-build-meson-libva-gst-uninstall-friendly.patch
git am 0001-build-meson-libva-gst-uninstall-friendly.patch
cd -

0001-build-meson-libva-gst-uninstall-friendly.patch updated: 2018/04/24

build #

ninja -C build

And wait a couple minutes.

run uninstalled environment for testing #

$ ninja -C build uninstalled
[gst-master] $ gst-inspect-1.0 vaapi
Plugin Details:
Name vaapi
Description VA-API based elements
Filename /opt/gst/gst-build/build/subprojects/gstreamer-vaapi/gst/vaapi/libgstvaapi.so
Version 1.15.0.1
License LGPL
Source module gstreamer-vaapi
Binary package gstreamer-vaapi
Origin URL http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer

vaapih264enc: VA-API H264 encoder
vaapimpeg2enc: VA-API MPEG-2 encoder
vaapisink: VA-API sink
vaapidecodebin: VA-API Decode Bin
vaapipostproc: VA-API video postprocessing
vaapivc1dec: VA-API VC1 decoder
vaapih264dec: VA-API H264 decoder
vaapimpeg2dec: VA-API MPEG2 decoder
vaapijpegdec: VA-API JPEG decoder

9 features:
+-- 9 elements