GStreamer multimedia framework
Find a file
Víctor Manuel Jáquez Leal 62c3888b76 wayland: decouple wl_buffer from frame
This patch takes out the wayland's buffer from the the frame structure. The
buffer is queued to wayland and destroyed in the "release" callback. The
frame is freed in the surface's "done" callback.

In this way a buffer may be leaked but not the whole frame structure.

- surface 'done' callback is used to throttle the rendering operation and to
  unallocate the frame, but not the buffer.
- buffer 'release' callback is used to destroy wl_buffer.

Original-patch-by: Zhao Halley <halley.zhao@intel.com>
* code rebase
* kept the the event_queue for buffer's proxy

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=749078
2015-05-14 16:48:43 +02:00
debian.upstream build: fix make distcheck 2015-05-13 15:21:07 +02:00
docs surfaceproxy: add copy function. 2013-11-28 17:32:18 +01:00
ext build: fix make distcheck 2015-05-13 15:21:07 +02:00
gst vaapisink: fix indentation 2015-05-14 16:26:44 +02:00
gst-libs wayland: decouple wl_buffer from frame 2015-05-14 16:48:43 +02:00
patches h264parse: update patches with upstream 2015-05-13 13:57:06 +02:00
pkgconfig build: fix pkgconfig file names (again). 2014-02-19 06:13:41 +01:00
tests build: fix make distcheck 2015-05-13 15:21:07 +02:00
.gitignore codecparsers: jpeg: use submodule sources. 2012-10-11 14:19:38 +02:00
.gitmodules Changing source code download links from https://gitorious to https://github 2015-04-04 00:06:56 +03:00
AUTHORS AUTHORS: Updates 2015-02-03 13:08:53 +02:00
autogen.sh autogen: drop videoutils submodule. 2015-04-17 10:44:09 +02:00
configure.ac build: upgrade glib dependency to 2.32 2015-04-30 13:54:34 +02:00
COPYING.LIB Relicense gst-libs/ code to LGPL v2.1+. 2010-09-20 12:55:42 +02:00
Makefile.am plugins: add built-in video parsers as "vaapiparse" element. 2014-06-13 17:17:07 +02:00
NEWS NEWS: Updates 2015-02-03 10:00:23 +02:00
README Update README 2015-04-04 00:40:29 +03:00

  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:2, H.264 AVC,
    H.264 MVC, VP8, VC-1, WMV3 videos to VA surfaces, depending on the
    underlying hardware capabilities. This plugin is also able to
    implicitly download the decoded surface to raw YUV buffers.

  * `vaapiencode_<CODEC>' is used to encode into MPEG-2, H.264 AVC,
    H.264 MVC, JPEG, VP8 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 a muxer.
    e.g. qtmux for MP4 containers.

  * `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.

  * `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.


Features
--------

  * VA-API support from 0.29 to 0.37
  * JPEG, MPEG-2, MPEG-4, H.264 AVC, H.264 MVC, VP8 and VC-1 ad-hoc decoders
  * MPEG-2, H.264 AVC,H.264 MVC, JPEG and VP8 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 1.2.x (up to including GStreamer 1.6):
      libglib2.0-dev (>= 2.28)
      libgstreamer1.0-dev (>= 1.2.0)
      libgstreamer-plugins-base1.0-dev (>= 1.2.0)
      libgstreamer-plugins-bad1.0-dev (>= 1.2.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, Haswell and Broadwell (HD Graphics)
  * Intel BayTrail
  * 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 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:
  <https://github.com/01org/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.