GithubHelp home page GithubHelp logo

runt18 / gstreamer-vaapi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ceyusa/gstreamer-vaapi

0.0 2.0 0.0 5.84 MB

GStreamer plugins and libraries for hardware accelerated video processing through VA-API.

Home Page: https://github.com/01org/gstreamer-vaapi/wiki

License: GNU Lesser General Public License v2.1

Shell 0.04% Makefile 1.10% C 98.16% Objective-C 0.67% C++ 0.04%

gstreamer-vaapi's Introduction

  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, HEVC 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, HEVC 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.38
  * JPEG, MPEG-2, MPEG-4, H.264 AVC, H.264 MVC, VP8, VC-1, HEVC and VP9 ad-hoc decoders
  * MPEG-2, H.264 AVC,H.264 MVC, JPEG, VP8 and HEVC ad-hoc encoders
  * OpenGL rendering through VA/GLX or GLX texture-from-pixmap + FBO
  * Support for EGL backend
  * 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 Reductio, Color Balance,
      Skin-Tone-Enhancement
    - Advanced deinterlacing: Motion-Adaptive, Motion-Compensated


Requirements
------------

Software requirements

  * GStreamer 1.4.x (up to including GStreamer 1.6):
      libglib2.0-dev (>= 2.32)
      libgstreamer1.0-dev (>= 1.4.0)
      libgstreamer-plugins-base1.0-dev (>= 1.4.0)
      libgstreamer-plugins-bad1.0-dev (>= 1.4.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 (>= 1.0.2)

Hardware requirements

  * AMD platforms with UVD2 (XvBA supported)
  * Intel Eaglelake (G45)
  * Intel Ironlake, Sandybridge, Ivybridge, Haswell and Broadwell (HD Graphics)
  * Intel BayTrail, Braswell
  * 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.

gstreamer-vaapi's People

Contributors

adrianathumboldt avatar ceyusa avatar changzhix avatar djdeath avatar elopez avatar farnz avatar fbellet avatar gbeauchesne avatar hkaelber avatar jaragunde avatar jhol avatar jjardon avatar julienisorce avatar krh avatar lorenzph avatar michaelolbrich avatar mnauw avatar ndufresne avatar ocrete avatar prahal avatar rossburton avatar sdroege avatar siewhoon avatar sreerenjb avatar thaytan avatar windyuan avatar xhaihao avatar xiaowei0916 avatar xuguangxin avatar ystreet avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.