mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-19 00:01:23 +00:00
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 [DEPRECATED]:
|
|
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.
|