mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 02:30:35 +00:00
271fb8298d
VA-API up to 0.34.0 is actually supported. Mention new video encoding support. Update copyright years, list of supported Intel HD Graphics hardware.
145 lines
4.7 KiB
Text
145 lines
4.7 KiB
Text
|
|
gstreamer-vaapi
|
|
VA-API support to GStreamer
|
|
|
|
Copyright (C) 2010-2011 Splitted-Desktop Systems
|
|
Copyright (C) 2011-2014 Intel Corporation
|
|
Copyright (C) 2011 Collabora Ltd.
|
|
|
|
|
|
License
|
|
-------
|
|
|
|
gstreamer-vaapi helper libraries and plugin elements are available
|
|
under the terms of the GNU Lesser General Public License v2.1+
|
|
|
|
|
|
Overview
|
|
--------
|
|
|
|
gstreamer-vaapi consists in a collection of VA-API based plugins for
|
|
GStreamer and helper libraries.
|
|
|
|
* `vaapidecode' is used to decode JPEG, MPEG-2, MPEG-4, H.264, VC-1,
|
|
WMV3 videos to video/x-vaapi-surfaces surfaces, depending on the
|
|
underlying HW capabilities.
|
|
|
|
* `vaapiencode_<CODEC>' is used to encode into MPEG-2, H.264 videos,
|
|
depending on the actual value of <CODEC> (mpeg2, h264, etc.). By
|
|
default, raw format bitstreams are generated, so the result may be
|
|
piped to an actual muxer like qtmux for MP4 containers.
|
|
|
|
* `vaapiupload' is used to convert from video/x-raw-yuv pixels to
|
|
video/x-vaapi-surface surfaces.
|
|
|
|
* `vaapidownload' is used to convert from video/x-vaapi-surface
|
|
surfaces to video/x-raw-yuv pixels.
|
|
|
|
* `vaapipostproc' is used to postprocess video/x-vaapi-surface
|
|
surfaces, for e.g. deinterlacing, denoising and sharpening.
|
|
|
|
* `vaapisink' is used to display video/x-vaapi-surface surfaces to
|
|
screen.
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
* VA-API support from 0.29 to 0.34
|
|
* JPEG, MPEG-2, MPEG-4, H.264 and VC-1 ad-hoc decoders
|
|
* MPEG-2, H.264 ad-hoc encoders
|
|
* OpenGL rendering through VA/GLX or GLX texture-from-pixmap + FBO
|
|
* Support for the Wayland display server
|
|
* Support for headless decode pipelines with VA/DRM
|
|
* Support for major HW video decoding solutions on Linux (AMD, Intel, NVIDIA)
|
|
* Support for HW video encoding on Intel HD Graphics hardware
|
|
* Support for VA Video Processing APIs (VA/VPP)
|
|
- Scaling and color conversion
|
|
- Image enhancement filters: Sharpening, Noise Reduction
|
|
- Advanced deinterlacing: Motion-Adaptive, Motion-Compensated
|
|
|
|
|
|
Requirements
|
|
------------
|
|
|
|
Software requirements
|
|
|
|
* GStreamer 0.10.x:
|
|
libglib2.0-dev (>= 2.28)
|
|
libgstreamer0.10-dev (>= 0.10.36)
|
|
or with GstBaseSink::query()
|
|
libgstreamer-plugins-base0.10-dev (>= 0.10.36)
|
|
libgstreamer-plugins-bad0.10-dev (>= 0.10.22.1)
|
|
or with GstVideoContext, GstSurfaceBuffer, codecparsers
|
|
|
|
* GStreamer 1.0.x (including GStreamer 1.2, 1.3):
|
|
libglib2.0-dev (>= 2.28)
|
|
libgstreamer1.0-dev (>= 1.0.0)
|
|
libgstreamer-plugins-base1.0-dev (>= 1.0.0)
|
|
libgstreamer-plugins-bad1.0-dev (>= 1.0.0)
|
|
|
|
* Renderers:
|
|
DRM: libva-dev (>= 1.1.0), libdrm-dev, libudev-dev
|
|
X11: libva-dev (>= 1.0.1)
|
|
GLX: libva-dev (>= 1.0.3)
|
|
Wayland: libva-dev (>= 1.1.0), libwayland-dev (>= 0.95.0)
|
|
|
|
Hardware requirements
|
|
|
|
* AMD platforms with UVD2 (XvBA supported)
|
|
* Intel Eaglelake (G45)
|
|
* Intel Ironlake, Sandybridge, Ivybridge and Haswell (HD Graphics)
|
|
* Intel Poulsbo (US15W)
|
|
* Intel Medfield or Cedar Trail
|
|
* NVIDIA platforms with PureVideo (VDPAU supported)
|
|
|
|
|
|
Usage
|
|
-----
|
|
|
|
VA elements are automatically plugged into GStreamer pipelines. So,
|
|
using playbin (or playbin2 with GStreamer 0.10) should work as is.
|
|
However, here are a few alternate pipelines that could be manually
|
|
constructed.
|
|
|
|
* Play an H.264 video with an MP4 container in fullscreen mode
|
|
$ gst-launch-1.0 -v filesrc location=/path/to/video.mp4 ! \
|
|
qtdemux ! vaapidecode ! vaapisink fullscreen=true
|
|
|
|
* Play a raw MPEG-2 interlaced stream
|
|
$ gst-launch-1.0 -v filesrc location=/path/to/mpeg2.bits ! \
|
|
mpegvideoparse ! vaapidecode ! vaapipostproc ! vaapisink
|
|
|
|
* Convert from one pixel format to another, while also downscaling
|
|
$ gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! \
|
|
videoparse format=yuy2 width=1280 height=720 ! \
|
|
vaapipostproc format=nv12 height=480 ! vaapisink
|
|
|
|
* Encode a 1080p stream in raw I420 format into H.264
|
|
$ gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! \
|
|
videoparse format=i420 width=1920 height=1080 framerate=30/1 ! \
|
|
vaapiencode_h264 rate-control=cbr tune=high-compression ! \
|
|
qtmux ! filesink location=/path/to/encoded_video.mp4
|
|
|
|
|
|
Sources
|
|
-------
|
|
|
|
gstreamer-vaapi is Open Source software, so updates to this
|
|
framework are really easy to get.
|
|
|
|
Stable source code releases can be found at:
|
|
<http://www.freedesktop.org/software/vaapi/releases/gstreamer-vaapi/>
|
|
|
|
Git repository for work-in-progress changes is available at:
|
|
<http://gitorious.org/vaapi/gstreamer-vaapi>
|
|
|
|
|
|
Reporting Bugs
|
|
--------------
|
|
|
|
Bugs can be reported in the GNOME Bugzilla system at:
|
|
<https://bugzilla.gnome.org/enter_bug.cgi?product=gstreamer-vaapi>
|
|
|
|
From the main page, new bugs can be reported through New -> Other ->
|
|
gstreamer-vaapi product.
|