GStreamer VA-API

A year after

Víctor Jáquez

GStreamer Conference 2016

10-11 October (Berlin)

Video Acceleration

Application Programming Interface

What is VA-API?

http://cgit.freedesktop.org/vaapi/libva/

What VA-API can do?

It depends on the driver.

What drivers are available?

Intel's decoders

MPEG2 H264 H265 VC1 VP8 VP9 JPEG
Broxton / Kabylake
Skylake / CherryView
Broadwell / Haswell / Ivybridge / BayTrail
Sandybridge
Ironlake
G4x

Intel's posptrocessor filters

Format Noise Deinterlace Sharp C.B. STE
Kabylake / Broxton / Skylake / CherryView / Broadwell / Haswell
Ivybridge / Sandybridge
Ironlake
G4x

Intel's encoders

MPEG2 H264 H265 VP8 VP9 JPEG
Kabylake
Broxton
Skylake
CherryView
Broadwell / Haswell / Ivybridge
Sandybridge
Ironlake / G4x

Mesa state-tracker

$ vainfo
libva info: VA-API version 0.39.3
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nouveau_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.2)
vainfo: Driver version: mesa gallium vaapi
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileH264Baseline           : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc

What is new?

~1 year

~390 commits

19 contributors

VP9 support

An official component of GStreamer

Encoders rename

Old New
vaapiencode_h264 vaapih264enc
vaapiencode_h265 vaapih265enc
vaapiencode_mpeg2 vaapimpeg2enc
vaapiencode_jpeg vaapijpegenc
vaapiencode_vp8 vaapivp8enc

Decoders split

vaapidecode vaapimpeg2dec
vaapih264dec
vaapih265dec
vaapivc1dec
vaapivp8dec
vaapivp9dec
vaapijpegdec

Though, vaapidecodebin is still a thing...

Fixed VA surface mapping

Encoders enhancements

Drivers white-list

Improved plugin registration

Plugin registration (Haswell)

$ gst-inspect-1.0 vaapi
Plugin Details:
  Name                     vaapi
  Description              VA-API based elements
  Filename                 /opt/gnome/jh/lib/gstreamer-1.0/libgstvaapi.so
  Version                  1.9.90
  License                  LGPL
  Source module            gstreamer-vaapi
  Source release date      2016-09-30
  Binary package           gstreamer-vaapi
  Origin URL               http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer

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

 9 features:
 +-- 9 elements

Misc

What is next?

(still under discussion)

Misc

Encoders

decodebin3

GL

GstObject

Applications share VA display

Optimization

Questions?

Thanks!

SpaceForward
Right, Down, Page DownNext slide
Left, Up, Page UpPrevious slide
POpen presenter console
HToggle this help