README 4.58 KB
Newer Older
1

gb's avatar
gb committed
2
3
  gstreamer-vaapi
  VA-API support to GStreamer
4

5
  Copyright (C) 2010-2011 Splitted-Desktop Systems
Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
6
  Copyright (C) 2011-2020 Intel Corporation
7
  Copyright (C) 2011 Collabora Ltd.
Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
8
  Copyright (C) 2015-2020 Igalia, S.L.
9
10
11
12
13


License
-------

14
15
gstreamer-vaapi helper libraries and plugin elements are available
under the terms of the GNU Lesser General Public License v2.1+
16

Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
17

18
19
20
Overview
--------

gb's avatar
gb committed
21
22
23
gstreamer-vaapi consists in a collection of VA-API based plugins for
GStreamer and helper libraries.

24
  * `vaapi<CODEC>dec' is used to decode JPEG, MPEG-2, MPEG-4:2, H.264
25
    AVC, H.264 MVC, VP8, VP9, VC-1, WMV3, HEVC videos to VA surfaces,
26
27
28
29
30
    depending on the actual value of <CODEC> and the underlying
    hardware capabilities.  This plugin is also able to implicitly
    download the decoded surface to raw YUV buffers.

  * `vaapi<CODEC>enc' is used to encode into MPEG-2, H.264 AVC, H.264
31
    MVC, JPEG, VP8, VP9, HEVC videos, depending on the actual value of
32
33
34
    <CODEC> (mpeg2, h264, etc.) and the hardware capabilities. By
    default, raw format bitstreams are generated, so the result may be
    piped to a muxer, e.g. qtmux for MP4 containers.
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
35

Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
36
37
38
39
  * `vaapipostproc' is used to filter VA surfaces, for e.g. scaling,
    deinterlacing (bob, motion-adaptive, motion-compensated), noise
    reduction or sharpening. This plugin is also used to upload raw
    YUV pixels into VA surfaces.
gb's avatar
gb committed
40

Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
41
42
43
  * `vaapisink' is used to render VA surfaces to an X11 or Wayland
    display. This plugin also features a "headless" mode (DRM) more
    suited to remote transcode scenarios, with faster throughput.
44

Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
45
46
47
  * `vaapioverlay` is a accelerated compositor that blends or
    composite different video streams.

48

gb's avatar
gb committed
49
50
51
Features
--------

Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
52
  * VA-API support from 0.39
53
54
  * JPEG, MPEG-2, MPEG-4, H.264 AVC, H.264 MVC, VP8, VC-1, HEVC and
    VP9 ad-hoc decoders
55
56
  * MPEG-2, H.264 AVC,H.264 MVC, JPEG, VP8, VP9 and HEVC ad-hoc
    encoders
gb's avatar
gb committed
57
  * OpenGL rendering through VA/GLX or GLX texture-from-pixmap + FBO
Sreerenj Balachandran's avatar
Sreerenj Balachandran committed
58
  * Support for EGL backend
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
59
60
  * Support for the Wayland display server
  * Support for headless decode pipelines with VA/DRM
61
62
  * Support for major HW video decoding solutions on Linux (AMD,
    Intel, NVIDIA)
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
63
  * Support for HW video encoding on Intel HD Graphics hardware
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
64
65
  * Support for VA Video Processing APIs (VA/VPP)
    - Scaling and color conversion
66
67
    - Image enhancement filters: Sharpening, Noise Reductio, Color
      Balance, Skin-Tone-Enhancement
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
68
    - Advanced deinterlacing: Motion-Adaptive, Motion-Compensated
gb's avatar
gb committed
69
70


71
72
73
Requirements
------------

gb's avatar
gb committed
74
75
Hardware requirements

Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
76
77
78
79
80
81
82
  * Hardware supported by i965 driver or iHD, such as
    - Intel Ironlake, Sandybridge, Ivybridge, Haswell, Broadwell,
      Skylake, etc. (HD Graphics)
    - Intel BayTrail, Braswell
    - Intel Poulsbo (US15W)
    - Intel Medfield or Cedar Trail
  * Hardware supported by AMD Radeonsi driver, such as the list below
83
84
    - AMD Carrizo, Bristol Ridge, Raven Ridge, Picasso, Renoir
    - AMD Tonga, Fiji, Polaris XX, Vega XX, Navi 1X
Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
85
  * Other hardware supported by Mesa VA gallium state-tracker
gb's avatar
gb committed
86
87
88
89
90


Usage
-----

91
  VA elements are automatically plugged into GStreamer pipelines. So,
Sreerenj Balachandran's avatar
Sreerenj Balachandran committed
92
  using playbin should work as is.
93
94
  However, here are a few alternate pipelines that could be manually
  constructed.
95

gb's avatar
gb committed
96
  * Play an H.264 video with an MP4 container in fullscreen mode
97
  $ gst-launch-1.0 -v filesrc location=/path/to/video.mp4 ! \
98
      qtdemux ! vaapidecodebin ! vaapisink fullscreen=true
99
100

  * Play a raw MPEG-2 interlaced stream
101
  $ gst-launch-1.0 -v filesrc location=/path/to/mpeg2.bits ! \
102
      mpegvideoparse ! vaapimpeg2dec ! vaapipostproc ! vaapisink
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
103

104
105
106
107
  * 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
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
108

Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
109
110
111
  * 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 ! \
112
      vaapih264enc rate-control=cbr tune=high-compression ! \
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
113
114
115
116
117
118
119
120
121
122
      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:
123
  <https://gstreamer.freedesktop.org/src/gstreamer-vaapi/>
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
124

Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
125
126
  GitLab repository for work-in-progress changes is available at:
  <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi>
Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
127
128


Gwenole Beauchesne's avatar
Gwenole Beauchesne committed
129
130
131
Reporting Bugs
--------------

Víctor Manuel Jáquez Leal's avatar
Víctor Manuel Jáquez Leal committed
132
133
  Bugs can be reported in the GStreamer's GitLab system at:
  <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues>