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, H.264, VC-1,
24 WMV3 videos to video/x-vaapi-surfaces surfaces, depending on the
25 underlying HW capabilities.
27 * `vaapiencode_<CODEC>' is used to encode into MPEG-2, H.264 videos,
28 depending on the actual value of <CODEC> (mpeg2, h264, etc.). By
29 default, raw format bitstreams are generated, so the result may be
30 piped to an actual muxer like qtmux for MP4 containers.
32 * `vaapiupload' is used to convert from video/x-raw-yuv pixels to
33 video/x-vaapi-surface surfaces.
35 * `vaapidownload' is used to convert from video/x-vaapi-surface
36 surfaces to video/x-raw-yuv pixels.
38 * `vaapipostproc' is used to postprocess video/x-vaapi-surface
39 surfaces, for e.g. deinterlacing, denoising and sharpening.
41 * `vaapisink' is used to display video/x-vaapi-surface surfaces to
48 * VA-API support from 0.29 to 0.34
49 * JPEG, MPEG-2, MPEG-4, H.264 and VC-1 ad-hoc decoders
50 * MPEG-2, H.264 ad-hoc encoders
51 * OpenGL rendering through VA/GLX or GLX texture-from-pixmap + FBO
52 * Support for the Wayland display server
53 * Support for headless decode pipelines with VA/DRM
54 * Support for major HW video decoding solutions on Linux (AMD, Intel, NVIDIA)
55 * Support for HW video encoding on Intel HD Graphics hardware
56 * Support for VA Video Processing APIs (VA/VPP)
57 - Scaling and color conversion
58 - Image enhancement filters: Sharpening, Noise Reduction
59 - Advanced deinterlacing: Motion-Adaptive, Motion-Compensated
68 libglib2.0-dev (>= 2.28)
69 libgstreamer0.10-dev (>= 0.10.36)
70 or with GstBaseSink::query()
71 libgstreamer-plugins-base0.10-dev (>= 0.10.36)
72 libgstreamer-plugins-bad0.10-dev (>= 0.10.22.1)
73 or with GstVideoContext, GstSurfaceBuffer, codecparsers
75 * GStreamer 1.0.x (including GStreamer 1.2, 1.3):
76 libglib2.0-dev (>= 2.28)
77 libgstreamer1.0-dev (>= 1.0.0)
78 libgstreamer-plugins-base1.0-dev (>= 1.0.0)
79 libgstreamer-plugins-bad1.0-dev (>= 1.0.0)
82 DRM: libva-dev (>= 1.1.0), libdrm-dev, libudev-dev
83 X11: libva-dev (>= 1.0.1)
84 GLX: libva-dev (>= 1.0.3)
85 Wayland: libva-dev (>= 1.1.0), libwayland-dev (>= 0.95.0)
89 * AMD platforms with UVD2 (XvBA supported)
90 * Intel Eaglelake (G45)
91 * Intel Ironlake, Sandybridge, Ivybridge and Haswell (HD Graphics)
92 * Intel Poulsbo (US15W)
93 * Intel Medfield or Cedar Trail
94 * NVIDIA platforms with PureVideo (VDPAU supported)
100 VA elements are automatically plugged into GStreamer pipelines. So,
101 using playbin (or playbin2 with GStreamer 0.10) should work as is.
102 However, here are a few alternate pipelines that could be manually
105 * Play an H.264 video with an MP4 container in fullscreen mode
106 $ gst-launch-1.0 -v filesrc location=/path/to/video.mp4 ! \
107 qtdemux ! vaapidecode ! vaapisink fullscreen=true
109 * Play a raw MPEG-2 interlaced stream
110 $ gst-launch-1.0 -v filesrc location=/path/to/mpeg2.bits ! \
111 mpegvideoparse ! vaapidecode ! vaapipostproc ! vaapisink
113 * Convert from one pixel format to another, while also downscaling
114 $ gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! \
115 videoparse format=yuy2 width=1280 height=720 ! \
116 vaapipostproc format=nv12 height=480 ! vaapisink
118 * Encode a 1080p stream in raw I420 format into H.264
119 $ gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! \
120 videoparse format=i420 width=1920 height=1080 framerate=30/1 ! \
121 vaapiencode_h264 rate-control=cbr tune=high-compression ! \
122 qtmux ! filesink location=/path/to/encoded_video.mp4
128 gstreamer-vaapi is Open Source software, so updates to this
129 framework are really easy to get.
131 Stable source code releases can be found at:
132 <http://www.freedesktop.org/software/vaapi/releases/gstreamer-vaapi/>
134 Git repository for work-in-progress changes is available at:
135 <http://gitorious.org/vaapi/gstreamer-vaapi>
141 Bugs can be reported in the GNOME Bugzilla system at:
142 <https://bugzilla.gnome.org/enter_bug.cgi?product=gstreamer-vaapi>
144 From the main page, new bugs can be reported through New -> Other ->
145 gstreamer-vaapi product.