3 VA-API support to GStreamer
5 Copyright (C) 2010-2011 Splitted-Desktop Systems
6 Copyright (C) 2011-2014 Intel Corporation
7 Copyright (C) 2011 Collabora Ltd.
13 gstreamer-vaapi helper libraries and plugin elements are available
14 under the terms of the GNU Lesser General Public License v2.1+
20 gstreamer-vaapi consists in a collection of VA-API based plugins for
21 GStreamer and helper libraries.
23 * `vaapidecode' is used to decode JPEG, MPEG-2, MPEG-4:2, H.264 AVC,
24 H.264 MVC, VP8, VC-1, WMV3 videos to VA surfaces, depending on the
25 underlying hardware capabilities. This plugin is also able to
26 implicitly download the decoded surface to raw YUV buffers.
28 * `vaapiencode_<CODEC>' is used to encode into MPEG-2, H.264 AVC,
29 H.264 MVC videos, depending on the actual value of <CODEC> (mpeg2,
30 h264, etc.). By default, raw format bitstreams are generated, so
31 the result may be piped to a muxer. e.g. qtmux for MP4 containers.
33 * `vaapipostproc' is used to filter VA surfaces, for e.g. scaling,
34 deinterlacing (bob, motion-adaptive, motion-compensated), noise
35 reduction or sharpening. This plugin is also used to upload raw
36 YUV pixels into VA surfaces.
38 * `vaapisink' is used to render VA surfaces to an X11 or Wayland
39 display. This plugin also features a "headless" mode (DRM) more
40 suited to remote transcode scenarios, with faster throughput.
46 * VA-API support from 0.29 to 0.35
47 * JPEG, MPEG-2, MPEG-4, H.264 AVC, H.264 MVC, VP8 and VC-1 ad-hoc decoders
48 * MPEG-2, H.264 AVC and H.264 MVC ad-hoc encoders
49 * OpenGL rendering through VA/GLX or GLX texture-from-pixmap + FBO
50 * Support for the Wayland display server
51 * Support for headless decode pipelines with VA/DRM
52 * Support for major HW video decoding solutions on Linux (AMD, Intel, NVIDIA)
53 * Support for HW video encoding on Intel HD Graphics hardware
54 * Support for VA Video Processing APIs (VA/VPP)
55 - Scaling and color conversion
56 - Image enhancement filters: Sharpening, Noise Reduction
57 - Advanced deinterlacing: Motion-Adaptive, Motion-Compensated
65 * GStreamer 0.10.x [DEPRECATED]:
66 libglib2.0-dev (>= 2.28)
67 libgstreamer0.10-dev (>= 0.10.36)
68 or with GstBaseSink::query()
69 libgstreamer-plugins-base0.10-dev (>= 0.10.36)
70 libgstreamer-plugins-bad0.10-dev (>= 0.10.22.1)
71 or with GstVideoContext, GstSurfaceBuffer, codecparsers
73 Note: support for GStreamer 0.10 APIs is deprecated and will be
74 removed in a future release.
76 * GStreamer 1.0.x (up to including GStreamer 1.4):
77 libglib2.0-dev (>= 2.28)
78 libgstreamer1.0-dev (>= 1.0.0)
79 libgstreamer-plugins-base1.0-dev (>= 1.0.0)
80 libgstreamer-plugins-bad1.0-dev (>= 1.0.0)
83 DRM: libva-dev (>= 1.1.0), libdrm-dev, libudev-dev
84 X11: libva-dev (>= 1.0.1)
85 GLX: libva-dev (>= 1.0.3)
86 Wayland: libva-dev (>= 1.1.0), libwayland-dev (>= 0.95.0)
90 * AMD platforms with UVD2 (XvBA supported)
91 * Intel Eaglelake (G45)
92 * Intel Ironlake, Sandybridge, Ivybridge and Haswell (HD Graphics)
93 * Intel Poulsbo (US15W)
94 * Intel Medfield or Cedar Trail
95 * NVIDIA platforms with PureVideo (VDPAU supported)
101 VA elements are automatically plugged into GStreamer pipelines. So,
102 using playbin (or playbin2 with GStreamer 0.10) should work as is.
103 However, here are a few alternate pipelines that could be manually
106 * Play an H.264 video with an MP4 container in fullscreen mode
107 $ gst-launch-1.0 -v filesrc location=/path/to/video.mp4 ! \
108 qtdemux ! vaapidecode ! vaapisink fullscreen=true
110 * Play a raw MPEG-2 interlaced stream
111 $ gst-launch-1.0 -v filesrc location=/path/to/mpeg2.bits ! \
112 mpegvideoparse ! vaapidecode ! vaapipostproc ! vaapisink
114 * Convert from one pixel format to another, while also downscaling
115 $ gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! \
116 videoparse format=yuy2 width=1280 height=720 ! \
117 vaapipostproc format=nv12 height=480 ! vaapisink
119 * Encode a 1080p stream in raw I420 format into H.264
120 $ gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! \
121 videoparse format=i420 width=1920 height=1080 framerate=30/1 ! \
122 vaapiencode_h264 rate-control=cbr tune=high-compression ! \
123 qtmux ! filesink location=/path/to/encoded_video.mp4
129 gstreamer-vaapi is Open Source software, so updates to this
130 framework are really easy to get.
132 Stable source code releases can be found at:
133 <http://www.freedesktop.org/software/vaapi/releases/gstreamer-vaapi/>
135 Git repository for work-in-progress changes is available at:
136 <http://gitorious.org/vaapi/gstreamer-vaapi>
142 Bugs can be reported in the GNOME Bugzilla system at:
143 <https://bugzilla.gnome.org/enter_bug.cgi?product=gstreamer-vaapi>
145 From the main page, new bugs can be reported through New -> Other ->
146 gstreamer-vaapi product.